Autor |
Beitrag |
tholmer
Hält's aus hier
Beiträge: 15
|
Verfasst: 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
Hab auch schon ausprobiert mehr Anführungszeichen um das Edit1.text zu machen aber hat zu nix geführt...
|
|
grayfox
      
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: Di 28.09.04 17:34
hallo tholmer!
zunächst mal willkommen im forum!
wenn 'genre' der tabellenname ist, dann versuch es mal so:
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 
Hält's aus hier
Beiträge: 15
|
Verfasst: 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
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: 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 
Hält's aus hier
Beiträge: 15
|
Verfasst: 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
      
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: 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
      
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: 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*? 
|
|
tholmer 
Hält's aus hier
Beiträge: 15
|
Verfasst: 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  btw ich benutze Delphi 7
|
|
grayfox
      
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: Di 28.09.04 18:07
und was hindert dich dran, trotzdem asString hinzutippen? 
|
|
tholmer 
Hält's aus hier
Beiträge: 15
|
Verfasst: Di 28.09.04 18:10
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)'); Open; end; |
-> Undefinierter Bezeichner 'AsString'
das hindert mich dran 
|
|
grayfox
      
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: 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 
Hält's aus hier
Beiträge: 15
|
Verfasst: 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
      
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: Di 28.09.04 18:15
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 
Hält's aus hier
Beiträge: 15
|
Verfasst: 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 
Hält's aus hier
Beiträge: 15
|
Verfasst: Di 28.09.04 18:37
habs gebacken bekommen:
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 
|
|