| |
VB & DatenbankenRe: ADODB: Ececute - Syntaxfehler in SQL-Anweisung? | | | Autor: Franki | Datum: 08.12.11 01:19 |
| Hallo Manuel,
ja es gibt viele Möglichkeiten Datensätze in eine DB zu schreiben. Das wird dir aber nicht wirklich helfen, wenn du dich nicht mit den Grundlagen beschäftigst und nur Beispielcode aus dem Internet versuchst auf deine Zwecke anzupassen.
Für die ersten Versuche brauchst du ADOX überhaupt nicht, nimm einfach für deine Tests eine vorhandene *.mdb mit den entsprechenden Tabellen.
Diese setzt du z.B. per Access auf die entsprechenden Eigenschaften (Integer / Text in diesem Fall)
Dann wirst du bei einem simplen Beispielprojekt sehr schnell erkennen, dass man keine Texte in ein "Zahlenfeld" schreiben kann. Also bei festen Werten entweder die Anfürhungszeichen weg lassen oder mit CINT umwandeln. Dieser Tipp ist aber auch nur eine Krücke, denn spätestens wenn du mal mit Datum- oder Uhrzeitangaben arbeitest wird das wieder krachen gehen wenn die Datentypen nicht stimmen.
Gruß
Frank | |
ADODB: Ececute - Syntaxfehler in SQL-Anweisung? | | | Autor: Basic_Need | Datum: 07.12.11 23:45 |
| Hallo an alle,
bastle gerade daran, für ein Projekt in eine Datenbank zu schreiben. Ich habe es geschafft, über ADOX einen Katalog zu erstellen, mit 1 Tabelle und 2 Spalten. Nun möchte ich gerne Werte in die Datenbank schreiben.
Benutze: WIN XP Pro SP 3; VB 6
Code:
Dim Katalog2 As New ADOX.Catalog
Dim Tabelle2 As New ADOX.Table
Dim Spalte1 As New ADOX.Column
Dim Spalte2 As New ADOX.Column
Katalog2.Create "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & App.Path & "\Output.mdb"
Tabelle2.Name = "Output"
Katalog2.Tables.Append Tabelle2
Spalte1.Name = "Feld2"
Katalog2.Tables("Output").Columns.Append Spalte1, adInteger
Spalte2.Name = "Feld1"
Katalog2.Tables("Output").Columns.Append Spalte2, adVarChar, 1
Dim Datenbank2 As New ADODB.Connection
Set Datenbank2 = Katalog2.ActiveConnection
Datenbank2.Execute "INSERT INTO Output VALUES ('1','2');" Leider sagt er mir "Syntaxfehler in der INSERT INTO-Anweisung". Ist es wirklich ein Fehler in der Anweisung? Oder liegt es an etwas Anderem? Brauche ich noch ein zusätzliches Programm? Gibt es evtl. eine andere Möglichkeit, um Datensätze in die Datenbank zu schreiben?
Vielen Dank im Voraus
Manuel
Beitrag wurde zuletzt am 07.12.11 um 23:50:23 editiert. | |
Re: ADODB: Ececute - Syntaxfehler in SQL-Anweisung? | | | Autor: Basic_Need | Datum: 08.12.11 02:06 |
| Hi Frank,
gebe zu, dass die Eigenschaft ein Fehler war (Integer/Text), allerdings scheint es nicht daran zu liegen.
Es scheint mir, dass es etwas mit den ADOX-Elementen zu tun hat. Denn: Mit einer anderen Datenbank funktioniert es. Mit meiner selbst-kreierten allerdings nicht... - kann es sein, dass mich dabei die Vergangenheit doch wieder einholt? Da ich keinen Verweis auf ADOX setzen konnte, und es jetzt getürkt habe?
Danke trotzdem soweit
Manuel
Beitrag wurde zuletzt am 08.12.11 um 02:14:08 editiert. | |
Re: ADODB: Ececute - Syntaxfehler in SQL-Anweisung? | | | Autor: wb-soft | Datum: 08.12.11 10:36 |
| Hi!
Eigenlich sieht es hier nicht nach einem Problem mit den Verweisen aus.
Wenn du Access zur Verfügung hast, solltest du tatsächlich die DB damit erstellen. Außerdem kannst du auch testen, ob eine mit ADOX erstellte DB deinen Erwartungen entspricht.
Dabei ist zu beachten, daß VB6 standardmäßig eine DB in der Version von Access97 erstellt. Beim Dateiformat ab Access2007 ist ein anderer Connectionstring erforderlich.
Als Einsteiger ist es leichter, Daten über ein Recordset zu bearbeiten. Das ist vom Code her besser lesbar.
Auch von mir die Empfehlung, zuerst einige Grundlagen zu lernen. Wenn du Material brauchst melde dich per Mail.
Und wie gesagt: Im Zweifelsfall VB6 + Servicepack neu installieren.
mfg
WB | |
Re: ADODB: Ececute - Syntaxfehler in SQL-Anweisung? | | | Autor: Franki | Datum: 09.12.11 01:45 |
| Hallo Manuel,
ich glaube weniger, dass an dem Verweisproblem liegt.
Aber unabhängig davon, taste dich doch mal schrittweise an das Problem heran. Zuerst lässt du ADOX komplett weg und nimmst eine per Access erstellte DB. Erst dann wenn du sicher beherrschst, wie du per VB da Daten rein schreiben, auslesen, ändern, löschen kannst (Grundlagen), dann solltest du dich damit beschäftigen wie du per ADOX neue Tabellen erzeugen kannst.
Andere Frage: Warum brauchst du das überhaupt in deinem Programm?
Ich habe das immer so gemacht, dass ich den Kunden beim Setup eine "leere" *mdb mitgeliefert habe die alle notewendigen Tabellen enthält, aber keine Datensätze darin. Da kann der User dann sofort mit arbeiten.
Erst wenn Updates kommen und somit neue Tabellen notwendig wurden, habe ich ADOX verwendet um diese zu erzeugen. Also bei der ersten Notwendigkeit aus dem Programm heraus prüfen, ob es die Tabelle gibt, wenn nicht, dann halt anlegen. Aber auch erst dann.
Der Tipp von wb-Soft mit den Recordsets solltest du beherzigen, das ist wirklich einfacher, und je nach Anwendung auch besser.
Also Abschlussfrage: Warum ist es zwingend notwendig aus deinem Programm heraus neue Tabellen erstellen zu können?
Gruß,
Frank | |
Re: ADODB: Ececute - Syntaxfehler in SQL-Anweisung? | | | Autor: Basic_Need | Datum: 09.12.11 17:17 |
| Hallo nochmals,
also ich habe jetzt erst einmal deinen Vorschlag beherzigt, habe Werte in eine andere Tabelle geschrieben. Dieses Programm ist nicht für mich, sondern ich muss es im Rahmen einer Projektarbeit abgeben. Da kommt es blöd, wenn man dann sagt, die Leute müssten erst eine eigene Datenbank erstellen, die dann - sofern alle Spalten und Tabellen richtig benannt, gefüllt werden kann.
Um dieses Problem zu umgehen, habe ich nun folgendes gemacht. Ein Datenbankmuster angelegt, das bei Start des Programmes einfach kopiert wird. In dieses wird dann der Output reingeschrieben. Somit habe ich also deinen Tipp, erst einmal klein anzufangen, beherzigt.
Und somit hat der "Kunde" nichts mehr zu meckern, und ich bin auch zufrieden. Allerdings sollte ich meine Wissenslücke bzgl. Datenbank & VB noch füllen.
Ich danke demnach mal ganz herzlich.
MfG
Manuel | |
Re: ADODB: Ececute - Syntaxfehler in SQL-Anweisung? | | | Autor: Franki | Datum: 10.12.11 03:44 |
| Hallo,
Zitat: | |
also ich habe jetzt erst einmal deinen Vorschlag beherzigt,
habe Werte in eine andere Tabelle geschrieben. Dieses
Programm ist nicht für mich, sondern ich muss es im Rahmen
einer Projektarbeit abgeben.
| |
Ok, dann geht es eher um die Theorie und nicht die Praxis
Zitat: | |
Um dieses Problem zu umgehen, habe ich nun folgendes gemacht.
[...]
| |
Ja, du hast den praktischen Teil der Löstunge gewählt.
Zitat: | |
Und somit hat der "Kunde" nichts mehr zu meckern,
und ich bin auch zufrieden. Allerdings sollte ich meine
Wissenslücke bzgl. Datenbank und VB noch füllen.
| |
Ok das stimmt schon, aber meine Antwort bzw. mein Vorschlag könnte dennoch falsch sein. Denn eine rein akademische Lösung war das nicht, es könnte sein, dass das anders bewertet wird.
Und ja, Grundlalgen zu lernen ist immer wichtig und sinnvoll, egal ob für die Praxis oder Schule / Studium usw.
Gruß
Frank | |
Re: ADODB: Ececute - Syntaxfehler in SQL-Anweisung? | | | Autor: bfritz | Datum: 10.12.11 22:27 |
| Hallo Basic_Need
Du hast leider einen Syntaxfehler in der SQL-Anweisung:
Datenbank2.Execute "INSERT INTO Output VALUES ('1','2');" Erklärung: Der gewählte Tabellenname("Output") ist in MS Access ein reservierter Name
und muß daher in eckigen Klammern gesetzt werden.
Der nachfolgende Code sollte aber funktionieren: Dim cnn As New ADODB.Connection
Dim cat As New ADOX.Catalog
Dim tbl As New Table
cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & App.Path & "\Output.mdb"
tbl.Name = "Output"
tbl.Columns.Append "Feld1", adInteger
tbl.Columns.Append "Feld2", adVarWChar, 50
cat.Tables.Append tbl
Set cnn = cat.ActiveConnection
cnn.Execute "INSERT INTO [Output]([Feld1],[Feld2]) VALUES (1,'2');"
cnn.Close
Set cnn = Nothing LG bfritz | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevWizard für VB5/6
Professionelle Assistenten im Handumdrehen
Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|