Avatar billede bredan1977 Nybegynder
29. september 2004 - 09:54 Der er 15 kommentarer og
2 løsninger

Hjælp til Hentning af data via ADODB

Jeg kan bare ikke få mit VB projekt til at hente data fra en MDB Database!!

Den bliver med ved at melde fejl her:
rsListeKompensatorer.Open SQL, SQL_STRING

Her er hele koden:

SQL_STRING = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=database.mdb;"
Set rsListeKompensatorer = New ADODB.Recordset
SQL = "Select distinct OrderNumber from order"
rsListeKompensatorer.Open SQL, SQL_STRING

List1.Clear

Do Until rsListeKompensatorer.EOF
    List1.AddItem rsListeKompensatorer("NemTallyNo")
    rsListeKompensatorer.MoveNext
Loop

rsListeKompensatorer.Close
Set rsListeKompensatorer = Nothing
Avatar billede rbj_fp Nybegynder
29. september 2004 - 10:45 #1
Dim db_connection as ADODB.Connection
set db_connection = new ADODB.Connection

dim SQL_STRING as string: SQL_STRING = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=database.mdb;"

db_connection.Open SQL_STRING

dim rs as ADODB.Recordset
set rs = db_connection.Execute("din sql streng her")

while not rs.eof
    ' gør noget her
    rs.moveNext()
wend
rs.Close
db_connection.Close
set rs = nothing
set db_connection = nothing

Dette kode burde virke.. men skriv hvis der er problemer
Avatar billede bredan1977 Nybegynder
29. september 2004 - 10:56 #2
Har lavet den sådan her:

Dim DB_connection As ADODB.Connection
Set DB_connection = New ADODB.Connection

Dim SQL_STRING As String: SQL_STRING = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=database.mdb;"

DB_connection.Open SQL_STRING
Set rsListeKompensatorer = DB_connection.Execute("Select distinct OrderNumber from order")

List1.Clear

Do Until rsListeKompensatorer.EOF
    List1.AddItem rsListeKompensatorer("NemTallyNo")
    rsListeKompensatorer.MoveNext
Loop

rsListeKompensatorer.Close
DB_connection.Close
Set rsListeKompensatorer = Nothing
Set DB_connection = Nothing

Men det virker ikke endnu...
Avatar billede bredan1977 Nybegynder
29. september 2004 - 10:58 #3
Kan det være noget med stien til selve databasen at gøre???

Den skriver:
Run-time error'-2147217900(80040e14)':
Der er en syntaksfejl i FROM-delsætningen.
Avatar billede rbj_fp Nybegynder
29. september 2004 - 11:00 #4
Hvor kører projektet fra? og hvor ligger databasen???

Ellers prøv lige at lave en direkte query i selve Access-databasen!
Avatar billede bredan1977 Nybegynder
29. september 2004 - 11:14 #5
databasen ligger i samme sti....
Avatar billede bredan1977 Nybegynder
29. september 2004 - 11:14 #6
en hvorfor en?? Query?
Avatar billede rbj_fp Nybegynder
29. september 2004 - 11:15 #7
ok... på dansk er det en forespørgelse(eller hvordan det lige staves) :-)
Avatar billede bredan1977 Nybegynder
29. september 2004 - 11:20 #8
Ok... hvorfor kan jeg ikke bare bruge "Select distinct OrderNumber from order"?
Avatar billede rbj_fp Nybegynder
29. september 2004 - 11:21 #9
forespørgelse skal indeholde den sql-streng, det er for at checke om det er noget i selve den forespørgelse det er galt med
Avatar billede bredan1977 Nybegynder
29. september 2004 - 11:21 #10
Det underlige er at denne her virker:

Set rsPipeDN = New ADODB.Recordset
SQL = "SELECT distinct PipeDN from data"
rsPipeDN.Open SQL, SQL_String

comboDiameter.Clear

Do Until rsPipeDN.EOF
    comboDiameter.AddItem rsPipeDN("PipeDN")
    rsPipeDN.MoveNext
Loop

rsPipeDN.Close
Set rsPipeDN = Nothing
Avatar billede rbj_fp Nybegynder
29. september 2004 - 11:23 #11
prøv lige om følgende virker "SELECT DISTINCT [OrderNumber] from [Order]
Avatar billede rbj_fp Nybegynder
29. september 2004 - 11:24 #12
Doooh...... nu ved jeg godt hvad fejlen er... :-) Det opstår fordi at JET-enginen misforstår sql-sætningen.

Sidste del af sqlen er "from order" og order element kan jo bruges under sorteringen af et select.
Avatar billede rbj_fp Nybegynder
29. september 2004 - 11:25 #13
derfor bør korrekt syntax være "SELECT DISTINCT [OrderNumber] from [ORDER]"
Avatar billede bredan1977 Nybegynder
29. september 2004 - 11:27 #14
Yes yes... den med [] virker...

Kan du give en begrundelse???
Avatar billede rbj_fp Nybegynder
29. september 2004 - 11:28 #15
Det skulle gerne allerede stå ligeneden under... :-)
Avatar billede bredan1977 Nybegynder
29. september 2004 - 11:30 #16
Ok... på den måde...

Jeg bruger denne her nu, den kan jeg lidt bedre lide:

Set rsListeKompensatorer = New ADODB.Recordset
SQL = "SELECT DISTINCT [OrderNumber] from [Order]"
rsListeKompensatorer.Open SQL, SQL_String

List1.Clear

Do Until rsListeKompensatorer.EOF
    List1.AddItem rsListeKompensatorer("OrderNumber")
    rsListeKompensatorer.MoveNext
Loop

rsListeKompensatorer.Close
Set rsListeKompensatorer = Nothing
Set DB_connection = Nothing
Avatar billede rbj_fp Nybegynder
29. september 2004 - 11:31 #17
Ja det er jo værd sin smag. Jeg kan godt lide den anden version, fordi at jeg ofte kun skabe en forbindelse til DB'en og derefter bruges jeg de recordset's jeg har behov for. :-)
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