Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1288to1292
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

sql statement in vba

sql statement in vba
21.12.2012 10:29:59
robert_1
Hi an alle,
ich möchte gerne Daten aus Excel in eine Datenbank schreiben; dabei sollen die zu kopierenden Werte in einen bestehenden Record gespeichert werden, nämlich dort, wo die ID übereinstimmt.
Die Tabelle sieht hat die Spalten:
ID, Text1
In Excel steht in Zelle 1,1 eine ID und in Zelle 1,2 der zu übernehmende Wert.
Mein Quelltext:
....
sql = "update Tabelle1 set Text1= cells(1,2) where ID= values(cells(1,1))"
...
Was mache ich falsch?

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Variablen gehören nie in Anführgszeichen
21.12.2012 10:55:47
Sheldon
Hallo Robert,
versuchs mal so (ungetestet):
sql = "update Tabelle1 set Text1=" & cells(1,2) & " where ID=values( " & cells(1,1) & ")"
Gruß
Sheldon

AW: Variablen gehören nie in Anführgszeichen
21.12.2012 11:08:18
robert_1
Jetzt kommt die Fehlermeldung:
Für mindestens einen erfoderlichen Parameter wurde kein Wert angegeben.
Aber ich bezieh mich eigtl auf die richtigen Zellen (also es steht was drin).

noch'n Versuch
21.12.2012 11:27:02
Sheldon
Hallo,
dann mal einfacher:
sql = "update Tabelle1 set Text1=" & cells(1,2) & " where ID=" & cells(1,1)
Gruß
Sheldon

AW: noch'n Versuch
21.12.2012 13:01:38
robert_1
hm ich steig immer noch nicht dahinter
Hier mal der gesamte Quellcode:
<pre>Public Sub db_schreiben()
Dim pfad As String
Dim conn As New ADODB.Connection
Dim sql As String
pfad = ActiveWorkbook.Path & "\test.mdb"
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & pfad
sql = "update Tabelle1 set Text1=" & Cells(1, 2) & " where ID=" & Cells(1, 1)
conn.Execute sql
conn.Close
Set conn = Nothing
End Sub</pre>

Anzeige
AW: Troubleshooting
21.12.2012 13:15:38
Sheldon
Hallo Robert,
leg mal ein neues Makro an, direkt unter dem, das Du gerade gepostet hast:
Sub Test_aa()
MsgBox Cells(1,1) & vbCrLf & Cells(1,2)
End Sub
Kommen da zwei Zeilen in der Messagebox raus, die die zu übergebenden Werte enthalten?
Gruß
Sheldon
(ja, ich bleibe tapfer bei Grußformel und Anrede, auch wenns keine Resonanz gibt! ;-))

AW: Troubleshooting
21.12.2012 13:27:44
robert_1
Sorry :)
Hi Sheldon,
ja also die Werte werden übergeben, wenn ich mit dem Mauszeiger über den sql string fahre, steht auch der richtige Ausdruck da.
Danke für die Hilfe.

Anzeige
AW: Troubleshooting
21.12.2012 14:35:55
Sheldon
Tja Robert,
Du merkst wohl schon, ich kenne mich gar nicht aus mit Access-SQL-Steuerung via VBA. Macht aber nix, ich hab jetzt mal Access gefragt, wie denn das SQL-Statement dort erzeugt werden würde. Also versuchen wirs mal so:
sql = "UPDATE Tabelle1 SET Tabelle1.Text1 = " & Cells(1,2) & " WHERE (((Tabelle1.ID)=" & Cells(1,1) & "));"
Vll. fehlt auch bloß das Semikolon in den vorhergehenden Versuchen, aber das finden wir ja jetzt raus ;-)
Gruß
Sheldon

AW: Troubleshooting
21.12.2012 16:34:51
Luschi
Hallo Robert,
in Access hat jedes Datenfeld einer Tabelle einen fest (beim Anlegen der Tabelle definiert)en Datentyp.
Diesen Typ erwartet Access auch wenn man per SQl die Werte ändern will.
Für Text(String)-Werte sind das die Textbegrenzungszeichen zu Beginn un als Abschluß des Wertes
Da Tabelle1.Text1 vom Typ 'String' ist, muß in der SQL-Anweisung dies auch so deklariert werden:
sql = "UPDATE Tabelle1 SET Tabelle1.Text1 = '" & Trim(Cells(1,2)) & "' WHERE (((Tabelle1.ID)=" & Cells(1,1) & "));"
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Troubleshooting
22.12.2012 07:34:10
robert_1
Danke euch beiden.
Mit dem letzten Statement hat es jetzt funktioniert.
Da muss man echt penibel auf die Syntax achten :)
Bis dann

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige