Avatar billede joemoz Nybegynder
29. juli 2007 - 22:13 Der er 8 kommentarer og
1 løsning

SQL data til Visual Basic applikation

Et basalt spørgsmål:

Jeg vil gerne hente data fra en SQL 2000 server til min visual basic applikation. Jeg har oprettet den som en 'data source' og kan godt connecte til den, men hvordan bruger jeg det til at hente dataene ind i applikationen?

Jeg har brug for at kunne hente data ved hjælp af SQL-queries, f.eks .:

SELECT a,b FROM tabel-x WHERE a= (brugerindtastning)

og så få resultatet ud i en tekstboks i applikationen, eller som valgmuligheder i en combo-box.

På forhånd tak!
Avatar billede terry Ekspert
30. juli 2007 - 08:37 #1
taken from http://www.freevbcode.com/ShowCode.Asp?ID=1257


Dim conn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rs As ADODB.Recordset
Dim sConnString  As String
Dim iCtr As Integer

'MAKE SURE YOU HAVE LATEST VERSION OF
'OLE DB PROVIDERS, WHICH YOU CAN GET AT
'http://www.microsoft.com/data

'BE SURE TO INCLUDE A REFERENCE TO MICROSOFT
'ACTIVE X DATA OBJECTS IN YOUR PROJECT

' IF SQL SERVER USE SOMETHING LIKE THIS
'Data Source = Server Name
'Initial Catalog = Database
'Use your own user names and password

sConnString = "Provider=SQLOLEDB.1;User ID=sa;password=mypassword;Initial Catalog=MyDatabase;Data Source = MySQLServer;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096"

'IN ACCESS USE SOMETHING LIKE THIS:
'Change Data Source to full path of database
sConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyDatabase.mdb"


conn.Open sConnString
Set cmd.ActiveConnection = conn

'REPLACE MYTABLE WITH YOUR OWN TABLE
cmd.CommandText = "SELECT * FROM MYTABLE"
cmd.CommandType = adCmdText
Set rs = cmd.execute

Do While Not rs.EOF
  For iCtr = 0 To rs.fields.Count - 1
      'OutPuts Name and Value of each field
      Debug.Print rs.Fields(iCtr).Name & ": " & _
        rs.Fields(iCtr).Value
    Next
rs.MoveNext
Loop
Set rs = Nothing
Set cmd = Nothing
conn.Close
Set conn = Nothing
Avatar billede joemoz Nybegynder
30. juli 2007 - 11:34 #2
Tak for det, men et par ting:

Jeg får at vide at "Type 'ADODB. connection' is not defined" og tilsvarende for ADODB.command og ADODB.Recordset og at "name AdCmdTxt is not declared".

Hvad gør jeg ved det?
Avatar billede terry Ekspert
30. juli 2007 - 12:06 #3
Avatar billede joemoz Nybegynder
30. juli 2007 - 12:33 #4
Mange tak for det - men jeg får stadig at vide at "Name AdCmdText is not declared". Skal den deklareres som 'string' eller? Hvordan kan jeg i øvrigt benytte de værdier jeg får vha. SQL-querien?
Avatar billede terry Ekspert
30. juli 2007 - 16:56 #5
I would have though that having a reference to ado was enough but you could try

cmd.CommandType = adodb.adCmdText
Avatar billede joemoz Nybegynder
30. juli 2007 - 17:24 #6
It says that 'adcmdtext' is not a member of 'ADODB'.
Avatar billede terry Ekspert
30. juli 2007 - 17:32 #7
strange

replace it with 1

cmd.CommandType = 1
Avatar billede joemoz Nybegynder
31. juli 2007 - 10:26 #8
Det virker! Tak!
Avatar billede terry Ekspert
31. juli 2007 - 10:33 #9
selv tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester