Supportnet / Forum / Datenbanken
Sql Abfrage-Ergebnis an VB-Variable übergeben?
Frage
Tsja wie mach ich das?
ich hätte gerne das Ergebnis einer SQl Abfrage an eine Variable übergeben z.b.
a = select name from table 1 where id=1
kann mir jemand den genauen syntax nennen?
Antwort 1 von Yo Man
Hi,
in DAO siehsts so aus
Set rsDatenSatz = datenbank.Openrecordset("Select * from Tabelle where ID = " & gesuchteID & "")
Grüsse
Yo
in DAO siehsts so aus
Set rsDatenSatz = datenbank.Openrecordset("Select * from Tabelle where ID = " & gesuchteID & "")
Grüsse
Yo
Antwort 2 von struppi
Hallo,
Tsja Das Ergebnis läßt sich mit Hilfe des Recordset-Objectes in Variablen schreiben.
Hier handelt es sich um ein 2 Dim-Feld.
Wenn es wirklich nur EINE Variable sein soll brauchst Du ein Array.
Hier mal ein Beispiel wie eine SQL-Abfrage an Variablen übergeben wird:
gruß struppi
Tsja Das Ergebnis läßt sich mit Hilfe des Recordset-Objectes in Variablen schreiben.
Hier handelt es sich um ein 2 Dim-Feld.
Wenn es wirklich nur EINE Variable sein soll brauchst Du ein Array.
Hier mal ein Beispiel wie eine SQL-Abfrage an Variablen übergeben wird:
Dim DB1 As DATABASE
Dim rsTabThemen As Recordset
Dim strSQL As String
strSQL = "SELECT Themen.ID, Themen.Thema, Themen.Inhalt, Themen.Formularname, themen.zaehler FROM Themen WHERE Themen.ID = " & Me!K0 & ";"
Set DB1 = CurrentDb
Set rsTabThemen = DB1.OpenRecordset(strSQL, dbOpenSnapshot)
Me!Text1 = rsTabThemen("Thema") & vbCrLf & _
rsTabThemen("Inhalt") & vbCrLf & vbCrLf & _
rsTabThemen("ID") & " " & _
rsTabThemen("Formularname") & vbCrLf & _
rsTabThemen("zaehler")
rsTabThemen.Close
Set rsTabThemen = Nothing
gruß struppi
Antwort 3 von Pipemaster
Ich stell mich vieleicht ein bissel dumm an aber ich hab wirklich null ahnung von VisualBasic!
1. Bei meiner SQL-Abfrage kann nur ein Wert(Ergebnis) kommen --> also brauch ich kein Array, Stimmts?
2. Hab ein bissel gebastelt aber bei mir kommt immer die meldung bei:
dim DB1 as Database --> Benutzerdefinierter Typ nicht definiert!
Hab ich irgendwas vergessen?
1. Bei meiner SQL-Abfrage kann nur ein Wert(Ergebnis) kommen --> also brauch ich kein Array, Stimmts?
2. Hab ein bissel gebastelt aber bei mir kommt immer die meldung bei:
dim DB1 as Database --> Benutzerdefinierter Typ nicht definiert!
Hab ich irgendwas vergessen?
Antwort 4 von Pipemaster
ok hab mir selbst geholfen:
7.11 DIM DB AS DATABASE IN A00 BRINGT FEHLER
P r o b l e m
Du bekommst in A00 bei Code wie
Dim db As Database oder Dim rs as Recordset
einen Kompilierfehler wie
"Benutzerdefinierter Typ nicht definiert"
"Laufzeit 13 - Typen unverträglich" o.ä.
U r s a c h e
Standardmäßig ist bei der Neuanlage von Datenbanken in A00 ADO als Bibliothek für Datenzugriffe eingestellt. Die meisten Access-Programmierer arbeiten aber weiterhin mit DAO.
http://support.microsoft.com/support/kb/articles/Q225/9/62.asp
Der Verweis auf DAO fehlt also oder die Priorität des Verweises auf ADO ist höher.
http://support.microsoft.com/search/preview.aspx?scid=kb;en-us;Q181542
L ö s u n g e n
1. Lösungsvariante
Modul öffnen, Menü Extras/Verweise, Verweis auf DAO 3.6 setzen, die Priorität des Verweises mit Hilfe der Pfeiltasten höher setzen als die des ADO-Verweises. Bei Nichtverwendung von ADO kann der Verweis darauf auch rausgenommen werden.
2. und gründlichere Lösungsvariante
Wie o.a. Verweis auf DAO 3.6 setzen und explizit deklarieren, auf welche Bibliothek du dich berufst. Höchstwahrscheinlich auf DAO, also
Dim db as DAO.Database
Dim rs as DAO.Recordset
etc.
Dann ist die Reihenfolge der Verweise egal.
(quelle: www.donkarl.com)
7.11 DIM DB AS DATABASE IN A00 BRINGT FEHLER
P r o b l e m
Du bekommst in A00 bei Code wie
Dim db As Database oder Dim rs as Recordset
einen Kompilierfehler wie
"Benutzerdefinierter Typ nicht definiert"
"Laufzeit 13 - Typen unverträglich" o.ä.
U r s a c h e
Standardmäßig ist bei der Neuanlage von Datenbanken in A00 ADO als Bibliothek für Datenzugriffe eingestellt. Die meisten Access-Programmierer arbeiten aber weiterhin mit DAO.
http://support.microsoft.com/support/kb/articles/Q225/9/62.asp
Der Verweis auf DAO fehlt also oder die Priorität des Verweises auf ADO ist höher.
http://support.microsoft.com/search/preview.aspx?scid=kb;en-us;Q181542
L ö s u n g e n
1. Lösungsvariante
Modul öffnen, Menü Extras/Verweise, Verweis auf DAO 3.6 setzen, die Priorität des Verweises mit Hilfe der Pfeiltasten höher setzen als die des ADO-Verweises. Bei Nichtverwendung von ADO kann der Verweis darauf auch rausgenommen werden.
2. und gründlichere Lösungsvariante
Wie o.a. Verweis auf DAO 3.6 setzen und explizit deklarieren, auf welche Bibliothek du dich berufst. Höchstwahrscheinlich auf DAO, also
Dim db as DAO.Database
Dim rs as DAO.Recordset
etc.
Dann ist die Reihenfolge der Verweise egal.
(quelle: www.donkarl.com)
Antwort 5 von Marie
jo, Du solltest immer DAO.Database schreiben. Und ein Array brauchste nicht. :-)
Antwort 6 von struppi
Ja ich weiß...
..kommt davon weil ich nicht auf Marie höre. Hat mir den 7.11 DIM DB AS DATABASE IN A00 BRINGT FEHLER schon mal "um die Ohren gehauen".
Ich schreib jetzt zu Strafe 100 mal "DAO.Database" :-). Darf ich Strg+v benutzen..?
Gruß struppi
..kommt davon weil ich nicht auf Marie höre. Hat mir den 7.11 DIM DB AS DATABASE IN A00 BRINGT FEHLER schon mal "um die Ohren gehauen".
Ich schreib jetzt zu Strafe 100 mal "DAO.Database" :-). Darf ich Strg+v benutzen..?
Gruß struppi
Antwort 7 von Marie
Nein Struppi, handschriftliche Strafarbeiten sind bei mir abzuliefern. :-)))

