Seite 1 von 1

SQL Befehl INSERT INTO mit Variablen

Verfasst: 11.01.2005 14:30
von JKG
Hallo ! :oops:

Ich bekomme es einfach nicht hin einem SQL-Befehl Variablen zu übergeben. Ich möchte einen Satz in einer MS-SQL Datenbank einfügen.

Code: Alles auswählen

RetVal$ = "INSERT INTO MeineDatenbank VALUES (JetztsollenVariablen kommen)"
Das klappt leider nicht. Hab hier im Forum das ein oder andere gelesen, komme da aber nicht klar draus.

Danke schonmal für die Hilfe.

Gruß Jörg

Verfasst: 11.01.2005 14:42
von ts-soft
Hab zwar keine Ahnung von SQL, aber wenn ich das richtig verstanden habe, meinst du in etwa so:

Code: Alles auswählen

RetVal$ = "INSERT INTO MeineDatenbank VALUES " + Str(MeineVariable) 
[EDIT]Da muß glaube ich noch ein ";" ans Ende angehängt werden [/EDIT]

Verfasst: 11.01.2005 14:49
von JKG
:cry: Ne, das ist leider nicht die Lösung !

Trozdem danke !

Verfasst: 11.01.2005 14:50
von bobobo
So eine allgemeine Frage erzeugt nur ne allgemeine Antwort.

Ablauf i.A.
Die DB erzeugen (Db-Manager benutzen (hier ist einer für lau) und/oder sich in SQL der DB gut auskennen)

Die DB im ODBC anmelden
in Pb den ODBC-Eintrag zum Öffnen benutzen.
gültige SQl-Requests absetzen und bei Bedarf auswerten.

entweder so ..alle Werte angeben

INSERT INTO table_name
VALUES (value1, value2,....)

oder mit spezifierten Spalten

INSERT INTO table_name (column1, column2,...)
VALUES (value1, value2,....)
DB schliessen.

Re: SQL Befehl INSERT INTO mit Variablen

Verfasst: 11.01.2005 14:52
von freedimension
Klappt's so?

Code: Alles auswählen

RetVal$ = "INSERT INTO MeineDatenbank SET feldname1 = '" + Str(var1) + "' feldname2 = '" + Str(var2) + "'"
Evtl. tatsächlich auch nochmal mit dem Semikolon probieren

Verfasst: 11.01.2005 14:55
von JKG
:( Tschuldigung !

Hier etwas genauer.

Die eigentliche Vorgehensweise ist schon klar. ODBC usw. alles erledigt.
SELECT-Anweisungen funktionieren auch!

Hier jetzt das Problem.

Code: Alles auswählen

RetVal$ = "INSERT INTO MeineDB VALUES ('11.01.2005', 'Text1', Text2')" 
Dieser SQL-Befehl funktioniert einwandfrei.

Wie muss der Befehl denn aussehen, wenn ich anstatt den Werten 'Text1' usw. Variablen übergeben will, die ich vorher mit GetGadgetText() ausgelesenhab ?

Gruß Jörg

Verfasst: 11.01.2005 14:59
von ts-soft

Code: Alles auswählen

RetVal$ = "INSERT INTO MeineDB VALUES ('11.01.2005', '" + Text1.s + "', " + Text2.s + "')" 
oder ich habs immer noch nicht kapiert

Verfasst: 11.01.2005 15:19
von JKG
Hallo Zusammen !

Jetzt funktioniert es. Ich weiß zwar nicht genau warum, aber das lerne ich vielleicht auch noch. Der SQL-Befehl muss folgender Maßen lauten.

Code: Alles auswählen

RetVal$ = "INSERT INTO MeineDB VALUES ( '" + e_date$ + "' , '" + Text1$ + "', '" + Text2$ + "', '" + Text3$ + "')"
Ich wußte nicht, dass man Variablen so übergibt. '" + var.s + "' Diese Formatierung war mir nicht bekannt.

Danke an alle und Gruß

Jörg

Verfasst: 11.01.2005 15:23
von ts-soft
Das war genau das, welches ich im ersten Posting ausdrücken wollte :allright:

Verfasst: 11.01.2005 16:54
von Kiffi
> Ich weiß zwar nicht genau warum, aber das lerne ich vielleicht auch
> noch.

Stringwerte müssen in einem SQL-String generell mit einfachen
Hochkommata (') geklammert werden. Bei Zahlenwerten braucht man das
nicht. Maßgebend ist hier das Format der Tabellenfelder.

Code: Alles auswählen

sSQL.s = "INSERT INTO myDB (fldZahl, fldText) VALUES ( " + Str(myNumber.l) + " , '" + myString$ + "')" 
Grüße ... Kiffi