Autor Téma: IN :param - pri viac členoch chyba  (Přečteno 361 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3013
  • Karma: 29
    • Verze Delphi: XE7 professional
IN :param - pri viac členoch chyba
« kdy: 03-04-2017, 15:13:36 »

Mám kód
Kód: Delphi [Vybrat]
  1.   FqryServices_I.SQL.Text :=
  2.   ' SELECT *'+
  3.   ' FROM SERVICEDEFAULTS SD'+
  4.   ' WHERE SD.IDSERVICES IN (:FIDServiceDefaults)';
  5.  
Ak pošlem jeden člen, tak to zbehne. Ak ich mám viac, tak mi to zaryčí chybu
  • pri dvoch "string conversion"
  • pri asi 28 "arithmetic exception, numeric overflow, or string truncation string right truncation"
Nechápem prečo.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 1880
  • Karma: 95
    • Verze Delphi: D2007, XE3, DX10
Re:IN :param - pri viac členoch chyba
« Odpověď #1 kdy: 03-04-2017, 15:24:56 »
  FqryServices_I.SQL.Text :=
  ' SELECT *'+
  ' FROM SERVICEDEFAULTS SD'+
  ' WHERE SD.IDSERVICES IN (:FIDServiceDefaults)';
No a kdyz zadas primo ten SQL napr. do IBExperta nebo kamkoli, kde umis spustit rucne SQL, tak ten prikaz vypada a) jak b) co to na to rekne

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3013
  • Karma: 29
    • Verze Delphi: XE7 professional
Re:IN :param - pri viac členoch chyba
« Odpověď #2 kdy: 03-04-2017, 15:27:03 »
Tam nemá problém. Pekne zbehne. A ten zoznam je v poriadku.
1,2,3,4,5,6,7,8,9,10,11,12,15,17,25,19,20,22,23,24,31,18,26
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 1880
  • Karma: 95
    • Verze Delphi: D2007, XE3, DX10
Re:IN :param - pri viac členoch chyba
« Odpověď #3 kdy: 03-04-2017, 15:47:46 »
1,2,3,4,5,6,7,8,9,10,11,12,15,17,25,19,20,22,23,24,31,18,26
A jakym kodem to predavas do toho parametru FIDServiceDefaults? Ja si myslim, ze to pres parametr nepujde, ze to budes muset udelat na urovni retezeni SQL:
Kód: Delphi [Vybrat]
  1. ' WHERE SD.IDSERVICES IN ('+
  2.     <FIDServiceDefaultsAsString>+
  3. ')';
  4.  

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3013
  • Karma: 29
    • Verze Delphi: XE7 professional
Re:IN :param - pri viac členoch chyba
« Odpověď #4 kdy: 03-04-2017, 15:51:13 »
Keďže používam FireDAC, tak som urobil cez cyklus ako batch.
Ale chcem vedieť dôvod.
Skúsim čo si napísal.
Ten FIDServiceDefaults je string. Vidieť to aj z ukážky.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1299
  • Karma: 28
    • Pepak.net
Re:IN :param - pri viac členoch chyba
« Odpověď #5 kdy: 04-04-2017, 09:01:01 »
No důvod je, že ... IN (:param) pracuje s jednou hodnotou. Nelze tam předat víc hodnot.

 

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):