Zum Inhalt springen

VBA SQL Anweisung Access2000


Commander_COM

Empfohlene Beiträge

Hallo,

kann mir mal bitte jemand verraten, was daran falsch sein soll?

Ich bin am verzweifeln.

Dim prio_nr, stoer_nr, ben_nr, datum, zeit, komp_nr, ok_nr, Anzahl As Variant

Dim sql_str As String

datum = Date

zeit = Time

###die obigen anderen Variablen erhalten alle völlig korrekte Werte####

sql_str = "INSERT INTO text(stichwort, text, prio_nr, stoer_nr, ok_nr, ben_nr, komp_nr, datum, zeit) values ('&stichwort_feld&', '&text_feld&', '&prio_nr&', '&stoer_nr&', '&ok_nr&' , '&ben_nr&', '&komp_nr&', '&datum&', '&zeit&')"

DoCmd.RunSQL sql_str

Er meint nur noch: "Fehler in SQL-Anweisung" :confused:

Ich weiß echt nicht mehr weiter. Hab schon vieles rumprobiert mit den einfach anführungszeichen und den "&" weglassen, hat auch nicht geklappt. :confused::confused::confused:

In meiner Tabelle text gibt es noch ein auto_increment Feld am Anfang und noch 3 andere Felder in die nichts reingeschrieben werden soll. Muß doch auch nicht, oder????? :confused:

Wenn jemand Rat weiß, bin ich ihm/ihr sehr dankbar.

MfG

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dim wart_nr, info_nr,ok_text As Variant

wart_nr=NULL

info_nr=NULL

ok_text=NULL

sql_str = "INSERT INTO text(stichwort, text, prio_nr, stoer_nr, ok_nr, ben_nr, komp_nr, datum, zeit, wart_nr, info_nr, ok_text) values ('&stichwort_feld&', '&text_feld&', '&prio_nr&', '&stoer_nr&', '&ok_nr&', '&ben_nr&', '&komp_nr&', '&datum&', '&zeit&','&wart_nr&', '&info_nr&', '&ok_text&')"

DoCmd.RunSQL sql_str

wart_nr, info_nr,ok_text sind die neuen Variablen. Dann gibt es noch die text_nr als autoincrement in der Tabelle für den Primary Key. Die muss ich doch glaube ich gar nicht mit da oben reinschreiben oder? Machts ja automatisch(wie der name schon sagt :D , oder sollte es zumindest.

Und die & und einfachen Hochkommata werden doch von Access richtig erkannt, an diesen Stellen soll ja das VBA die vorher von mir festgelegten Werte einsetzen. In früheren DB's von mir geht das auch wunderbar, aber ich finde irgendwie keinen Unterschied zu der jetzigen :confused: Keine Ahnung.

Wie gesagt, das funktioniert normalerweise, aber vielleicht gibts auch noch einen anderen Weg um Daten in eine Tabelle zu schreiben ausser über die Hintertür RunSQL????

*sich nach DB-Freaks mal umschaut hier...*

Wäre für Hilfe echt dankbar, das ist so ziemlich das letzte Problem vor dem ich stehe, bis meine Grundlogik dieser DB fertig ist.

thx

EDIT: das "&" wird doch durch die Hochkommata wieder in normale VBA-Umgebung gesetzt. Dort wird es ja auch gekannt. Wäre es normales SQL hätte ich kein Problem mit der Erstellung des korrekten Befehls aber hier.... :(

Link zu diesem Kommentar
Auf anderen Seiten teilen

sql_str = "INSERT INTO text(stichwort, text, prio_nr, stoer_nr, ok_nr, ben_nr, komp_nr, datum, zeit, wart_nr, info_nr, ok_text) values ('" & stichwort_feld & "', '" & text_feld & "', '" & prio_nr & "', '" & stoer_nr & "', '" & ok_nr & "', '" & ben_nr & "', '" & komp_nr & "', '" & datum & "', '" & zeit & "','" & wart_nr & "', '" & info_nr & "', '" & ok_text & "')"

versuch es mal so.

die ' braucht man aber nur wenn der Inhlat der variablen wirklich ein STRING Wert ist

Gruß

Guido

Link zu diesem Kommentar
Auf anderen Seiten teilen

ok, es scheint was essentielles falsch zu sein. ich habe noch mal eine Testtabelle angelegt und eine ganz einfache struktur erstellt.

autowert, stichwort, nummer, text.

bei eintragen in diese tabelle kommt die selbe fehlermeldung.

Code:

Dim sql_str As String

sql_str = "insert into testtabelle (stichwort, nummer, text) values (stichwort_feld, nummer_feld, text_feld)"

DoCmd.RunSQL sql_str

stichwort_feld, nummer_feld, text_feld sind bei mir ungebundene Textfelder im Formular.

Link zu diesem Kommentar
Auf anderen Seiten teilen

willst Du per Code die Textfeldinhalte in die Tabelle einfügen in der Access DB oder aus einem anderen Programm oder Code?

wenn ja, nimm auf jedenfall Textfeld.Text als Wert und dann kannst du auch mit CurrentDB.Execute arbeiten

Dann sollte ein INSERT so aussehen:

sql_str = "INSERT INTO testtabelle (stichwort, nummer, text)" & _

VALUES ('" & stichwort_feld.text "','" & nummer_feld.text & "','" & text_feld.text & "')"

Currentdb.execute sql_str

Versuch es mal.

Guido

Link zu diesem Kommentar
Auf anderen Seiten teilen

Langsam drehe ich hier durch! ****** Hitze und ****** Access. Gruß an die Moderatoren, auch wenns vielleicht gesperrt wird aber langsam bekomm ich hier nen Knall!

"Laufzeitfehler '3134'. Syntaxfehler in der Insert Into-Anweisung"

"Laufzeitfehler '3134'. Syntaxfehler in der Insert Into-Anweisung"

"Laufzeitfehler '3134'. Syntaxfehler in der Insert Into-Anweisung"

"Laufzeitfehler '3134'. Syntaxfehler in der Insert Into-Anweisung"

AAAARRRGGHHH!!!!!!

Mein Code sieht jetzt so aus:

Private Sub Eintragen_button_Click()

Dim sql_str As String

sql_str = "INSERT INTO testtabelle (stichwort, nummer, text) VALUES ('&stichwort_feld.text&','&nummer_feld.text&','&text_feld.text&')"

CurrentDb.Execute sql_str

End Sub

Geht trotzdem nicht!!!

Tabelle: Testtabelle (prim_key[autowert], stichwort[text], nummer[zahl], text[text])

Ich hab echt keine Ahnung mehr. Ich hab ne alte DB von mir geöffnet, da gehts wunderbar. Warum denn nur hier nicht??? Kann mich Access nicht mehr leiden, weil ich immer dagegen schimpfe? Warum bestraft mich Bill G. nur so hart???? Ich glaube ich brauch nen Schirmchendrink und dringend Abkühlung....

@g_nikolai: sobald ich "Gänsefüßchen" in die Anweisung reinmache, so wird sie von access als beendet erachtet. das isses also bestimmt nicht.....

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin !

"Text" ist ein reserviertes Wort unter Access, daher die Fehlermeldung. Entweder Du änderst den Feldnamen in "Kurzext" oder so, oder sprichst ihn mit [Text] an. Und die Gänsefüschen müssen auch rein:

Dim sql_str As String

sql_str = "INSERT INTO testtabelle (stichwort, nummer, [text]) VALUES ('" & stichwort_feld & "' , '" & nummer_feld & "', '" & text_feld & "')"

CurrentDb.Execute sql_str

Mit dem ersten Hochkomma ' sagst du Sql ja das jetzt ein String kommt. Dann kommt " & Stichwort_feld & " , dadurch wird die Zeichenfolge für Access unterbrochen, der Inhalt des Feldes angehängt und dann geht der String weiter.

hoffe das hilft Dir !

Gruß

Christian

------------------------------------------------------------

"All power corrupts. Absolute Power is kinda neat though..."

"50.000 gold a year in child care and they call it a CULT ?!?"

- Kel'Thuzad, Archlich

Link zu diesem Kommentar
Auf anderen Seiten teilen

so, hab erstmal eine geraucht und ne cola geschlürft, jetzt gings weiter. Das mit dem reservierten Wort hatte ich gerade eben selber rausgefunden (trotzdem danke tauron).

Was die Gänsefüßchen betrifft, bin ich mir da nicht so sicher, sobald ich die reinmache, wird die Zeile in VBA rot dargestellt und nicht mehr ausgeführt... das kann noch nicht alles sein??, oder?

ok. jetzt klitzekleines neues Problem. also das anfügen geht in grobzügen bis auf die neue Fehlermeldung, dass er mir bei der ersten Ziffer (prio_nr z.B.) einen "Typumwandlungsfehler" bringt und ab da nichts mehr einträgt.

habe den code erstmal vereinfacht und es nochmal versucht, selber fehler. sieht inzwischen so aus:

dim prio_nr As Integer

sql_str = "INSERT INTO text_tabelle(stichwort, text_eintrag, prio_nr) values (stichwort_feld, text_feld, '&prio_nr&')"

DoCmd.RunSQL sql_str

(man beachte "text_tabelle" :D )

in der Tabelle ist prio_nr auch als zahl definiert.

warum meint er nur bloß, dass es ein Typumwandlungsfehler gibt???? :confused:

schade, ich war so kurz vorm Durchbruch...

das erste prio_nr ist ein spaltenname in der tabelle "text_tabelle" und das zweite prio_nr ist eine variable unter VBA wie oben definiert....

Link zu diesem Kommentar
Auf anderen Seiten teilen

nein, das wird von access auch gleich wieder automatisch entfernt. die anwqeisung funktioniert ja einwandfrei, wenn ich prio_nr weglasse. nur wenn ichs reinschreibe, dann findet er irgendeine dumme typeninkompatibilität zwischen der variable und dem feld in der tabelle. das verstehe ich nicht, da die variable eine integer ist und das feld auch auf zahl gesetzt ist. :confused:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Commander_COM

sql_str = "INSERT INTO text_tabelle(stichwort, text_eintrag, prio_nr) values (stichwort_feld, text_feld, '&prio_nr&')"

sql_str = "INSERT INTO text_tabelle(stichwort, text_eintrag, prio_nr) values ('" & stichwort_feld & "','" & text_feld & "'," & prio_nr & ")"

Muß das nicht so aussehen? ('" = ' + " oder " + ')

JayN

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...