Supportnet Computer
Planet of Tech

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

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:


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?

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)

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

Antwort 7 von Marie

Nein Struppi, handschriftliche Strafarbeiten sind bei mir abzuliefern. :-)))

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: