Databáze > MS SQL

Nefunguje INSERT do mdb, chyba Parameter not found

(1/4) > >>

KarlosCZ:
Dobrý den, nemůžu vyřešit přidání řádku do .mdb. Sloupec Plr_Fname v té tabulce je, příkaz select s ním normálně funguje. Přesto dostávám hlášku AdoQuery1: Parameter 'Plr_Fname' not found. Totéž to hlásilo předtím u [year of birth] / nastavil jsem paramcheck na false a ten [year of birth] už nehlásí, zato jak jsem psal začal hlásit chybu u Plr_Fname. Netuší někdo prosím čím to je? Díky předem.

datamodule1.adoQuery1.SQL.Clear;
datamodule1.adoQuery1.SQL.Add('INSERT INTO judokas (Plr_Fname, Plr_Lname, [year of birth])');
datamodule1.adoQuery1.SQL.Add('VALUES (:Plr_Fname,:Plr_Lname,:[year of birth])');   
datamodule1.adoQuery1.Parameters.ParamByName('Plr_Fname').Value:= splitted[1];
datamodule1.adoQuery1.Parameters.ParamByName('Plr_Lname').Value:= splitted[0];
datamodule1.adoQuery1.Parameters.ParamByName('[year of birth]').Value:= strtoint(splitted[2]);
datamodule1.adoQuery1.ExecSQL;
datamodule1.adoQuery1.Close;

Stanislav Hruška:

--- Citace ---datamodule1.adoQuery1.SQL.Add('INSERT INTO judokas (Plr_Fname, Plr_Lname, [year of birth])');
datamodule1.adoQuery1.SQL.Add('VALUES (:Plr_Fname,:Plr_Lname,:[year of birth])');

--- Konce citace ---
Prvý riadok predpokladám v tvare:

--- Kód: ---datamodule1.adoQuery1.SQL.Add('INSERT INTO judokas (Plr_Fname, Plr_Lname, "year of birth")');

--- Konec kódu ---
Druhý si uprav na

--- Kód: ---datamodule1.adoQuery1.SQL.Add('VALUES (:Plr_Fname, :Plr_Lname, :YearOfBirth)');

--- Konec kódu ---
Ak je to možné, vyhoď zo všetkých názvov v mdb medzery! To je ako by si použil diakritiku. A nebudeš mať takéto problémy.

KarlosCZ:
Díky, problém není v tom Year of birth, tam to řeší [], klasické uvozovky nefungují. Myslím, že problém je v celé té konstrukci, protože chybu to háže u Plr_Fname. Tam není mezera ani diakritika, při select to normálně funguje, při pokusu přidat řádek do dtabáze to ale píše AdoQuery1: Parameter 'Plr_Fname' not found. S těma mezerama jsem se dost natrápil, bohužel to nejde změnit. Nevím jak:-) a i kdybych věděl, ta databáze se aktualizuje a stahuje pokaždé znovu. Toho dobráka, co ji navrhoval, bych někdy rád potkal. Každopádně ten problém je v Plr_Fname, kde by ale vůbec žádný problém být neměl.

leste:
Když vkládáš dotaz za běhu s vypnutým paramcheckem tak ty parametry asi nezná.

KarlosCZ:
 :o aha, no jasně. Tím se to ale vrací k chybě u Year of birth. Nejlepší by bylo ten sloupec přejmenovat na Year_of_Birth v celém mdb. Zkoušel jsem to googlit ale nenašel jsem řešení. Jde to nějak udělat za běhu? Zrušil bych tak všechny mezery i v ostatních sloupcích a měl bych klid. Ale nechápu, proč když SELECT bez problému funguje, když je to ve tvaru [Year of Birth] a insert tak nefunguje. Nefunguje ani s apostrofy a uvozovkami a ani yearofbirth bez mezer, což je asi logické.

Navigace

[0] Seznam témat

[#] Další strana

Přejít na plnou verzi