Autor Beitrag
tholmer
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Di 28.09.04 17:14 
uhu

Ich befasse mich zur zeit mit Datenbanken und mit ADO + Access Datenbank funktioniert das bis jetzt ganz gut.

Meine SQL anweisungen funktionieren nicht wirklich. Hier mal der Synthax von der Eigenschaft String der ADOQuery:

INSERT INTO `GENRE` (`name`) VALUES (''+Edit1.Text+'');

Das eine Programm hat ein normales Edit Feld in das der Name kommt und dann Klick ich auf einen Button und dann soll es eingetragen werden.
Die Tabelle besteht aus 2 Feldern -> ID und Name. ID ist erhöht sich automatisch um 1. Wenn ich jetzt durch den Button ADOQuery1.ExecSQL; ausführen lasse kommt der Fehler: GENRE.name darf keinen Null Wert enthalten!
Ich mein das is klar ich hab die Option in der Access DB gesetzt das ein Wert rein muss aber in dem Edit Feld steht ein String! Wenn ich ein Wort anstatt +Edit1.Text+ oben in den Synthax schreibe dann trägt es das ein.
hoffe ihr habt mich verstanden großes :D
Hab auch schon ausprobiert mehr Anführungszeichen um das Edit1.text zu machen aber hat zu nix geführt...
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Di 28.09.04 17:34 
hallo tholmer!

zunächst mal willkommen im forum!

wenn 'genre' der tabellenname ist, dann versuch es mal so:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
with Query do begin 
  Close;
  SQL.Clear;
  SQL.Add('INSERT INTO Genre (FilmName) VALUES (:aFilmname)');
  SQL.ParamByName('aFilmname').asString:= Edit1.Text;
  Open
end;


damit sollte es klappen.

mfg, stefan
tholmer Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Di 28.09.04 17:41 
hm delphi meldet das ParamByName ein unbekannter Bezeichner ist und auch wenn ich schreibe SQL. öffnet sich die programmierhilfe aber da is nix was mit P beginnt ^^
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Di 28.09.04 17:43 
Grayfox hat sich vertan. Probiere es mit der Eigenschaft TQuery.Params, dort ist die Funktion ParamByName zu finden.

Cu,
Udontknow
tholmer Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Di 28.09.04 17:57 
das geht auch nicht wirklich. Das mit dem ADOQuery1.Parameter.ParamByName('name') geht auch aber wenn ich dahinter Edit1.Text schreibe kommt: Linke Seite kann nicht zugewiesen werden. Inkompatible Typen: TParameter und TCaption

EDIT: nach ParamByName('name') kann ich auch AsString nicht schreiben


Zuletzt bearbeitet von tholmer am Di 28.09.04 17:58, insgesamt 1-mal bearbeitet
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Di 28.09.04 17:57 
sorry, war nicht absicht. aber zumindest weiss ich jetzt, dass meine vorschläge ausprobiert werden ;)

@tholmer: du hättest aber auch 'ParamByName' als suchindex verwenden können und wärst dabei auf TQuery gestossen ^^

mfg, stefan
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Di 28.09.04 18:00 
erstens hast eine 'Parameter' zuviel
es heisst --> Query.ParamByName('feldname').asString

und warum kannst du asString nicht schreiben? *finger eingeschlafen*? :twisted:
tholmer Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Di 28.09.04 18:04 
na ich orientier mich immer an der Programmierhilfe die da aufgeht und deswegen geht
ADOQuery1.ParamByName('name').AsString nicht. Das is TADOQuery und nicht TQuery, kann ja sein das es da entscheidende unterschiede gibt :D btw ich benutze Delphi 7
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Di 28.09.04 18:07 
und was hindert dich dran, trotzdem asString hinzutippen? :gruebel:
tholmer Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Di 28.09.04 18:10 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
with ADOQuery1 do begin
  Close;
  SQL.Clear;
  Parameters.ParamByName('name').AsString := Edit1.Text;
  SQL.Add('INSERT INTO GENRE (name) VALUES (:name)');
  
  //SQL.ParamByName().AsString:= Edit1.Text;
  Open;
end;


-> Undefinierter Bezeichner 'AsString'

das hindert mich dran :D
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Di 28.09.04 18:11 
2. versuch: wie wärs, wenn du 'Parameters' weglässt und dafür 'SQL' hintippst?

und wieso hast du die reihenfolge von SQL.Add und SQL.ParamByName geändert?


Zuletzt bearbeitet von grayfox am Di 28.09.04 18:14, insgesamt 1-mal bearbeitet
tholmer Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Di 28.09.04 18:12 
Ergebnis: Parameters weggelassen und dafür SQL hingesetzt:
Undefinierter Bezeichner 'ParamByName'
Operator oder Semikolon fehlt

ka warum ich die reihenfolge gendert habe, aber andersum passiert das gleiche


Zuletzt bearbeitet von tholmer am Di 28.09.04 18:15, insgesamt 1-mal bearbeitet
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Di 28.09.04 18:15 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
with Query do begin   
  Close;  
  SQL.Clear;  
  SQL.Add('INSERT INTO Genre (FilmName) VALUES (:aFilmname)');  
  ParamByName('aFilmname').asString:= Edit1.Text;  
  Open  
end;
tholmer Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Di 28.09.04 18:17 
hab den coder jetzt kopiert und oben Query in ADOQuery1 geändert und es kommt das gleiche wie vorher. Undefinierter bezeichner ParamByName
tholmer Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Di 28.09.04 18:37 
habs gebacken bekommen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
with ADOQuery1 do begin
  Close;
  SQL.Clear;  
  SQL.Add('INSERT INTO Genre (name) VALUES (:name)');
  Parameters.ParamValues['name'] := Edit1.Text;
  ExecSQL;
end;


ParameterValues ging dann :)