DB Zugriffe (SQL) im Access

Ute Schierhorn

Grünschnabel
Liebe Listies,

bin neu hier. Ich habe vor 15Jahren mal professionell programmiert. Habe aber anschließend die Stelle gewechselt, war im Erziehungsurlaub,.... und stelle fest, daß ich keeeeeeine Ahnung mehr habe.

Mein Problem: Ich möchte im Access aus einem Formular heraus über einen Command-Button eine SQL-Anweisung (insert) starten. Ich habe auch schon rausgefunden, daß ich dazu einen Connection-Object (was ist das, wo hole ich das her) und die execute methode brauche. Aber irgendwie komme ich zu keinem richtigen Ergebnis.

Wer kann mir helfen?

Gruß Ute
 
Hallo, versuch´s mal so:
Code:
Private Sub Befehl5_Click()

' Verweis auf Microsoft DAO 3.6 Object Library nicht vergessen !

Dim DB As Database

Set DB = CurrentDb

DB.Execute "Dein SQL Befehl"

End Sub
 
Hallo "wincnc",

Danke für Deine schnelle Antwort, "Dim as Database " hat er "angemeckert" (Benutzerdefinierter Type ungültig"). Ich habe das dann einfach weggelassen und es schien o.k. zu sein. Zumindest hat er den SQL als solchen erkannt. Allerdings scheint die Parameterübergabe noch nicht zu funktionieren.

Mein SQL sieht so aus:

db.Execute "insert into tblBewegung (Teilenummer, Lagerort, Wann) values (Teil, ort , wann)"


"Teil", "ort" und "wann" werden vorher vom Programm versorgt. Das hat auch funktioniert.

Meldung:
"3 Parameter wurden erwartet, aber es wurden zuwenig übergeben".

Ich vermute, ich muß irgendwo sagen, welche Felder die Schnittstelle passieren sollen, aber wo und wie?

Würde mich über nochmalige Hilfe freuen und stehe in ewig in Deiner Schuld!

Gruß Ute
 
Hallo Ute,

hmmmm wenn ich mir Dein Statement so ansehe, stellt sich mir die Frage, welchen Datentyp Deine Felder haben.

db.Execute "insert into tblBewegung (Teilenummer, Lagerort, Wann) values (Teil, ort , wann)"

Gehen wir mal davon aus, dass Teilenummer und Lagerort vom Typ String sind, dann fehlen die öffnenden und schließenden Anführungszeichen.

db.Execute "INSERT INTO tblBewegung(TeileNummer, Lagerort, Wann) VALUES ( " & _
Chr$(34) & Teil & Chr$(34) & ", " & Chr$(34) & ort & Chr$(34) & ", wann)

Gruß
Das Orakel
 
Das verstehe ich nicht.
Teil ist string, Lagerort ist integer, wann ist ein date.
Hinter values bei dem insert müssen doch nicht nur wirkliche Werte stehen, sondern ich kann doch auch Feldnamen übergeben?

Gruß Ute
 
Hi Ute,

Teil ist string, Lagerort ist integer, wann ist ein date.
Hinter values bei dem insert müssen doch nicht nur wirkliche Werte stehen, sondern ich kann doch auch Feldnamen übergeben?

Yap vom Prinzip hast Du recht. Doch die Angaben in Deiner SQL Anweisung sollen ja auf den Wert in den Felder der Maske referenzieren und nicht die Felder selber. (Felder sind ja Objekte, die Du in der Art nicht in der Datenbank speichern kannst.)

Somit lautet Deine SQL Anweisung wie folgt:
Code:
DB.Execute "INSERT INTO tblBewegung (Teilenummer, Lagerort, Wann) " & _
                  " Values ('" & _
                  Teil.Value & "'," & Lagerort.Value & ",'" & _
                  wann.Value & "')"

Gruß
Das Orakel
 
Zuletzt bearbeitet:
Hi Ute,

wenn Du die SQL Anweisung direkt einer Access Abfrage erstellen würdest, müsste sie so lauten:

Code:
INSERT INTO tblBewegung (Teilenummer, Lagerort, Wann) Values ('Teil 1',  4711, '01.01.2005')

und nix anderes macht der Beispielcode. Es ist vielleicht einfacher zu verstehen, wenn Du mal folgende Modifikation vornimmst:

Code:
Dim szSql           As String

szSql = "INSERT INTO tblBewegung (Teilenummer, Lagerort, Wann) " & _ 
            " Values ('" & _ 
            Teil.Value & "'," & Lagerort.Value & ",'" & _ 
            wann.Value & "')"
MsgBox szSql
DB.Execute szSql

Dann wirst Du sehen, dass das "&" Zeichen nichts anderes macht, als einen korrekten SQL Befehl zusammen zu bauen.

Gruß
Das Orakel
 

Neue Beiträge

Zurück