MySQL query add

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
agreen
Beiträge: 13
Registriert: Di 9. Okt 2012, 22:48

MySQL query add

Beitrag von agreen »

Hallo,
ich bin ein newbie in Lazarus und hoffe hier Hilfe zu bekommen.
ich versuche in einem Formular Daten in eine MySQL Datenbank zu speichern, klappt aber nicht.

Code: Alles auswählen

procedure TFGhinzu.Button1Click(Sender: TObject);
 
begin
//INSERT INTO <Tabelle> (<Felder>) VALUES (<Werte>)
 
  with SQLQueryGhinzu do
  begin
    Active:=False;
    SQL.Clear;
    //insert into Tgruppe (Gindex, Gruppe, Beschreibung) values ('3005', 'Rückenaufbau', 'Beschreibung')
    //SQL.Add('Insert into country(NAME,CAPITAL,CONTINENT,AREA,POPULATION)
    // SQL.Text:= insert into TGruppe (Gindex, Gruppe, Beschreibung) values ('3006', 'Rückenaufbau', 'Beschreibung');
Zeile 74:    SQL.Text := insert into Tgruppe (Gindex, Gruppe, Beschreibung) values ('3005', 'Rückenaufbau', 'Beschreibung');
    ExecSQL;
  end;
end;               
Bekomme aber die Fehlermeldung
ghinzu.pas(74,24) Error: Incompatible type for arg no. 1: Got "untyped", expected "AnsiString"

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

Re: MySQL query add

Beitrag von theo »

agreen hat geschrieben:Zeile 74: SQL.Text := insert into Tgruppe (Gindex, Gruppe, Beschreibung) values ('3005', 'Rückenaufbau', 'Beschreibung');

Bekomme aber die Fehlermeldung
ghinzu.pas(74,24) Error: Incompatible type for arg no. 1: Got "untyped", expected "AnsiString"
Den String in Apostroph zu setzten wäre vllt. ganz hiilfreich. :roll:

agreen
Beiträge: 13
Registriert: Di 9. Okt 2012, 22:48

Re: MySQL query add

Beitrag von agreen »

OK habe es jetzt mit Add gemacht und der Kompiler bringt keine Fehler, aber wenn ich auf den Speichern Butten klicke bekomme ich den unten angezeigten Fehler.

Code: Alles auswählen

procedure TFGhinzu.Button1Click(Sender: TObject);
  var zahl1: integer;
      gruppe, beschreibung: string;
 
begin
//INSERT INTO <Tabelle> (<Felder>) VALUES (<Werte>)
  zahl1:= 3006;
  gruppe:= 'gruppe test';
  beschreibung:='beschreibung test';
 
 
  with SQLQueryGhinzu do
  begin
    Active:=False;
    SQL.Clear;
    //insert into Tgruppe (Gindex, Gruppe, Beschreibung) values ('3005', 'Rückenaufbau', 'Beschreibung')
    //SQL.Add('Insert into country(NAME,CAPITAL,CONTINENT,AREA,POPULATION)
    // SQL.Text:= insert into TGruppe (Gindex, Gruppe, Beschreibung) values ('3006', 'Rückenaufbau', 'Beschreibung');
 
    SQL.add('insert into Tgruppe (Gindex, Gruppe, Beschreibung) values (:zahl1, :gruppe, :beschreibung)');
 
     ParamByName ('Gindex').AsInteger:=zahl1;
     ParamByName ('Gruppe').AsString:=gruppe;
     ParamByName ('Beschreibung').AsString:=beschreibung;
    ExecSQL;
  end;          
Projekt Kundenverwaltung hat Exception-Klasse EDatabaseError ausgelöst mit der Meldung:
SQLQueryGhinzu: Parameter "Gindex" not found
Dateianhänge
Hier meine Tabelle
Hier meine Tabelle
Zuletzt geändert von Lori am Do 20. Dez 2012, 19:21, insgesamt 1-mal geändert.
Grund: Highlighter

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: MySQL query add

Beitrag von hde »

agreen hat geschrieben:SQLQueryGhinzu: Parameter "Gindex" not found
diese Fehlermeldung ist richtig da der Parametr bei dir auch nicht vorkommt (als Parametergibt es bei dir zahl1, gruppe, beschreibung).

einfach die Fehlermeldung lesen und nachdenken

hde

agreen
Beiträge: 13
Registriert: Di 9. Okt 2012, 22:48

Re: MySQL query add

Beitrag von agreen »

sorry, wer lesen kann ist klar im Vorteil.

geht jetzt, danke

Code: Alles auswählen

Index:= 3006;
  gruppe:= 'gruppe test';
  beschreibung:='beschreibung test';
 
 
  with SQLQueryGhinzu do
  begin
    Active:=False;
    SQL.Clear;
    //insert into Tgruppe (Gindex, Gruppe, Beschreibung) values ('3005', 'Rückenaufbau', 'Beschreibung')
    //SQL.Add('Insert into country(NAME,CAPITAL,CONTINENT,AREA,POPULATION)
    // SQL.Text:= 'insert into TGruppe (Gindex, Gruppe, Beschreibung) values ('3006', 'Rückenaufbau', 'Beschreibung')';
 
    SQL.add('insert into Tgruppe (Gindex, Gruppe, Beschreibung) values (:Index, :gruppe, :beschreibung)');
 
    ParamByName ('Index').AsInteger:=40000;
    ParamByName ('Gruppe').AsString:='Test Gruppe';
    ParamByName ('Beschreibung').AsString:='Test Beschreibung';
    ExecSQL;
 
 
 
  end;
 
end;
Zuletzt geändert von Lori am Do 20. Dez 2012, 19:22, insgesamt 1-mal geändert.
Grund: Bitte den Highlighter verwenden.

Antworten