Daten mittels insert in Tabelle einfügen

Antworten
niederrheiner
Beiträge: 87
Registriert: Sa 19. Jan 2008, 17:21
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Rheinberg

Daten mittels insert in Tabelle einfügen

Beitrag von niederrheiner »

Hallo an Alle, ich möchte mit nachfolgendem Code Daten in eine Tabelle einfügen. Wenn ich statt der Variablen konkrete Werte an gebe , so klappt es, setze ich aber wider Variable ein, so kommt die Meldung : Column "g_datum" cannot be null.

Die Syntax für die Übergabe der Variablen ist wohl noch falsch, aber wie schreib ich es Richtig?

Danke für Eure Hilfe und Tipps.

Bis dann ...
MfG
Günter

Code: Alles auswählen

...
if MySQL50Connection1.Connected then
  begin
       intdatum := 20080120;
       floatGewicht := 96.1;
       intsys := 132;
       intdia := 82;
       intpuls := 70;
       inttag := 1;
       //showmessage(inttostr(intdatum));
       showmessage('connected to server: ' + MySQL50Connection1.HostName);
       txtSql := 'INSERT INTO gesundheit (g_datum,g_gewicht,g_sys,g_dia,g_puls,g_tag)'
        + ' VALUES (:intdatum,:floatgewicht,:intsys,:intdia,:intpuls,:inttag);';
       //txtSql := 'INSERT INTO gesundheit set g_datum = :intdatum';
       SQLQuery1.SQL.Text:= txtSql;
       showmessage(SQLQuery1.SQL.Text);
       SQLQuery1.ExecSQL;
 
       SQLQuery1.Close;
       showmessage('Daten eingefuegt!');
  end;

Benutzeravatar
theo
Beiträge: 10922
Registriert: Mo 11. Sep 2006, 19:01

Re: Daten mittels insert in Tabelle einfügen

Beitrag von theo »

Wie kommst du auf die Idee, dass das Variablen seien?
So:

Code: Alles auswählen

+ ' VALUES ('+intdatum+','+floatgewicht+',
etc

Wobei du die Variablen besser als String angibst:
z.B: intdatum := '20080120';

Mit dem Format Befehl geht's auch:
http://www.delphibasics.co.uk/RTL.asp?Name=Format" onclick="window.open(this.href);return false;

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Das Datum muss auch in einem speziellen formt sein. Dazu hilft aber das MySQL Handbuch wunderbar.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6848
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Beitrag von af0815 »

Die Deklaration mittels ':parameter' ist vollkommen richtig. Der Zugriff auf die Parameter erfolgt normalerweise über SQLKomponente.Params.ParamByName('parameter').AsDate oder AsString, etc. wenn die Parameter deklariert wurden.

Siehe auch LazInfos, 'Zugriff auf Parameter' und 'Zugriff auf Felder' (Die eine verunglückte Zeile wird in der nächsten Version wieder lesbar gemacht).

Ein Datumswert ist ein 'Double' wobei der ganzahlige Teil, die Tage seit dem 30 Dez 1899 ageben. Die Bruchteile sind die Anteile an 24 Stunden (0.5 entspricht 12:00)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

niederrheiner
Beiträge: 87
Registriert: Sa 19. Jan 2008, 17:21
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Rheinberg

Beitrag von niederrheiner »

Hallo an Alle,
Danke für Eure Antworten. Ich bin nun ein Stück weiter gekommen, dank Eurer Hilfe. Nun stehe ich vor einem neuen Problem. Darüber aber in einer neuen Message.

Bis dann ...
MfG
Günter

Antworten