Autor Téma: Nefunguje INSERT do mdb, chyba Parameter not found  (Přečteno 2016 krát)

Offline KarlosCZ

  • Nováček
  • *
  • Příspěvků: 31
  • Karma: 0
    • Verze Delphi: xe7
Re:Nefunguje INSERT do mdb, chyba Parameter not found
« Odpověď #15 kdy: 02-08-2016, 18:30:11 »
Poslední věc a už nebudu otravovat:-) Ten kód níž funguje ve smyslu "nevyhodí chybu", nicméně do databáze se uloží nuly ve sloupcích se jmény a rokem a nic ve sloupci membernumber. Nějak to ale pracuje, protože je tam sloupec added, kde je čas modifikace, který se tam objeví. Nevím proč se to neukládá. Poradíte?
       
        adoQuery1.SQL.Add('INSERT INTO judokas (Plr_Fname,Plr_Lname, [YearOfBirth], [MemberNumber])');
        adoQuery1.SQL.Add('VALUES (:Plr_Fname,:Plr_Lname,:yearofbirth, :membernumber)');
        adoQuery1.Parameters.ParamByName('Plr_Fname').Value:= splitted[0];
        adoQuery1.Parameters.ParamByName('Plr_Lname').Value:= splitted[1];
        adoQuery1.Parameters.ParamByName('yearofbirth').Value:= strtoint(splitted[2]);
        adoQuery1.Parameters.ParamByName('membernumber').Value:= 56886;
        datamodule1.adoQuery1.ExecSQL;
        datamodule1.adoQuery1.Close;

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2720
  • Karma: 26
    • Verze Delphi: XE7 professional
Re:Nefunguje INSERT do mdb, chyba Parameter not found
« Odpověď #16 kdy: 02-08-2016, 18:54:57 »
Citace
Predstav si, ze za nejaky ten insert/update pridas RETURNING .... ev. ho zmenis na SP a ta SP bude vracet nejaky result set...
Ako pripomienku to beriem. Takto ma to nenapadlo. Ale v Access-e si to predstaviť neviem :D  Neviem ako RETURNING, ale SP nemá.
Citace
Nevím proč se to neukládá.
Ťažko mi je radiť, ale mne sa niečo podobné stáva, keď Query používam opakovane a pred priradením hodnôt do parametrov som nevykonal Close. Hodnoty v parametroch sa nezmenia. Ale to tam v ukážke máš. A nemáš tam cyklus/opakovanie. Neviem ako to adoQuery1 používaš a či na viacerých miestach. Ak áno, tak tam mi na začiatku chýba
Kód: [Vybrat]
adoQuery1.SQL.Close;  // Ak to zaistíš inde, tak tu to vypadne.
adoQuery1.SQL.Clear;
...
Lenže, keby si tam už mal nejaký text, tak by to zaryčalo :(  Aha, v prvej ukážke to Clear máš. Prever ten Close.
Tie hranaté zátvorky [] vyhoď. Sú tam úplne zbytočne. Či robia neplechu netuším.
« Poslední změna: 02-08-2016, 18:58:59 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline KarlosCZ

  • Nováček
  • *
  • Příspěvků: 31
  • Karma: 0
    • Verze Delphi: xe7
Re:Nefunguje INSERT do mdb, chyba Parameter not found
« Odpověď #17 kdy: 02-08-2016, 21:35:21 »
Díky, Close tam mám, celé to zavírám při vstupu na PageControl preventivně. Tím to není.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2720
  • Karma: 26
    • Verze Delphi: XE7 professional
Re:Nefunguje INSERT do mdb, chyba Parameter not found
« Odpověď #18 kdy: 02-08-2016, 21:57:16 »
Už len špekulujem. V ostatných INSERT INTO prípadoch Ti to ide?

Ja som v minulosti používal AdoCommand a nemal som problém. Teraz už používam len FireDAC. Pokiaľ si to môžeš dovoliť, tak ho použi aj Ty. Ďalšia rada je vytvárať tieto komponenty za behu. Ja len výnimočne používam niektorý komponent na viacej účelov. Veľmi sa to mieša a program je neprehľadný. Chyba je tam raz-dva.

Hop, teraz ma napadlo, že občas niektorý ADO komponent zblbne. Ale nie keď sa vytvárajú dynamicky. Takže skús adoQuery1 zmazať a znovu ho vytvoriť.

Zo seba už viac nevydolujem.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2720
  • Karma: 26
    • Verze Delphi: XE7 professional
Re:Nefunguje INSERT do mdb, chyba Parameter not found
« Odpověď #19 kdy: 03-08-2016, 12:48:38 »
Neviem či to pomôže. Podľa knihy som si vizuálne nadefinoval dopyt s parametrom IDmeno. A výsledok v SQL je takýto:
Kód: [Vybrat]
SELECT BytCislo.BytCislo, Byvajuci.Priezvisko, Byvajuci.Meno
FROM BytCislo INNER JOIN Byvajuci ON BytCislo.BytCisloID = Byvajuci.BytCisloID
WHERE (((Byvajuci.ByvajuciID)=[IDmeno]));
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Upozornění: do tohoto tématu bylo naposledy přispěno před 120 dny.
Zvažte prosím založení nového tématu.

Jméno: E-mail:
Ověření:
Kolik je šest plus čtyři (slovem):