Variable SQL-Befehle mit Hilfe von VBA ausführen

Hallo,

ich möchte mit Hilfe von einer VBA-Oberfläche SQL-Befehle ausführen. Allerdings müssten Befehls-Teile variabel sein.

Nähere Beschreibung:
Ich besitze eine Datenbank, die nicht von Microsoft kommt.
Diese müsste aber über ADODB ansprechbar sein.
Vereinfacht dargestellt stehen in der ersten Spalte die Namen (=Schlüssel)und in der zweiten Spalte die dazugehörigen Zahlenwerte.
Nun würde ich eine VBA-Oberfläche benötigen, die zwei Eingabe-Felder besitzt. In das erste gibt man den „Namen“ ein und in das zweite den neuen „Zahlenwert“. Nach Betätigung eines Buttons würde dann der SQL-Befehl (Update) ausgeführt werden.

Ich kenne mich mit SQL sehr gut aus. Leider habe ich VBA noch nie benutzt.
Zur Zeit kann ich meine Datenbank nur öffnen.
Leider kann ich keine SQL-Befehle an diese senden und habe auch noch nicht herausbekommen, wie man variable SQL-Befehle deklariert.

Mir wäre schon mit ein paar Befehlszeilen geholfen.
Ein ähnliches Programm wäre wie ein 6er im Lotto.

Vielen Dank

Gruß, Sven

In diesem Artikel findest du alles über ADO.

http://www.activevb.de/tutorials/tut_ado_db/adodb.html

Die Variable Ado-Abfrage kannst du über einen String realisieren:

Dim AdoSourceString
Dim FirstArg as Boolean

FirstArg = True
AdoSourceString = „Select * from Tabelle“

If Text1.Text „“ then
AdoSourceString = AdoSourceString & " where Feld1 = ‚" & Text1.Text & "‘"
FirstArg = False
end if

if Text2.Text „“ then
if FirstArg = True then
AdoSourceString = AdoSourceString & " where Feld2 = ‚" & Text2.Text & "‘"
FirstArg = False
end if
if FirstArg = False then
AdoSourceString = AdoSourceString & " and where Feld2 = ‚" & Text2.Text & "‘"
end if
end if


Hier dann Recordset und Datenbank startklar machen, soweit noch nicht passiert…

recourdset.Source = AdoSourceString
recordset.Open

Wenn Text1 und Text2 gefüllt wären, sähe das dann so aus:

Text1=alles
text2=richtig

Select * from Tabelle where Feld1 = ‚alles‘ and where Feld2 = ‚richtig‘

So kriegt man die Abfrage Variabel…

Wenn du Werte ändern und zurückschreiben möchtest, kannst du zum Beispiel das Recordset ändern wenn ein Textfeld geändert wurde. Dafür ist Text1_LostFocus() geeignet. Du kannst auch mit dem Text1_KeyPress(KeyAscii as Integer) -Ereignis die Entertaste abfangen.

Dann einfach den Wert aus dem Textfeld dem Recordset zuweisen:

Recordset.Fields(„Feld2“) = Text2.Text
Recordset.Update

Wann welche Werte zugewiesen werden, kann wieder über if-Abfragen gesteuert werden.

Ich hoffe, es war richtg und verständlich!

Gruß

Alexander