Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno "Numeric value out of range." (Sybase SQL Anywhere 5.5)

Po spustení databázovej procedúry (alebo ako to nazvať) cez program písaný v Delphi 2007 mi vyskočí chyba:

Project *.exe raised exception class EOleException with message '[Sybase][ODBC driver]Numeric value out of range: value 808335409 out of range for destination'.

Vždy mi vypíše chybu s tou istou hodnotou, pritom údaje, ktoré vkladám do databázy sú VŽDY iné!

Nechcem tú dávať tých 150 riadkov zdrojového kódu v Delphi a zdrojový kód tej procedúry, preto mi určite presne neporadíte, kde je chyba. Len chcem vedieť, kedy sa táto chyba vyskytuje, pretože na Googli som toho veľa nenašiel. :-/

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Tak mám tu hodiť 300 riadkov zdrojáku v Delphi (je to len čisto to, čo vkladá do databázy), tú datab…
gorgeous007 28.07.2008 15:18
gorgeous007
to dej na uloz.to v textovém souboru s příponou .txt ]:)
marekdrtic 28.07.2008 15:50
marekdrtic
Tak už som to všetko dal na Problem.txt Dal som tam celú procedúru Vklad, ktorú potom 2-krát využív…
gorgeous007 28.07.2008 16:12
gorgeous007
A jsi si jisty, ze vsechny polozky pole Doby[] jsou naplnene? V tom cyklu je ruzne preskakujes. Zji… nový
Jan Fiala 28.07.2008 16:26
Jan Fiala
Aha, díky. Ja som tam všade mal premennú i, potom som ten cyklus celý prepisoval a zamenil som aj to… nový
gorgeous007 28.07.2008 16:28
gorgeous007
Ak je problém vo volaní uloženej procedúry (a nie je k dispozícii nejaký profiler), tak by som na tv… nový
los 28.07.2008 16:22
los
Díky, idem skúsiť. ;-) Síce mi to zaberie množstvo času, ale lepšie ako hľadať na Googli niečo, čo m… nový
gorgeous007 28.07.2008 16:26
gorgeous007
Tak problém je vyriešený. Díky všetkým, ale hlavne autorovi PSPadu, ktorý to s Delphi naozaj umí. ;-… poslední
gorgeous007 28.07.2008 16:35
gorgeous007

Tak už som to všetko dal na Problem.txt

Dal som tam celú procedúru Vklad, ktorú potom 2-krát využívam v programe. Dal som ju tam celú hlavne, aby ste sa mohli pozrieť na deklarácie premenných. Potom sa mrknite hlavne za poznámku // Pre Crystal Reports, pretože kód pred ňou bezproblémovo funguje a robí, čo má.

Inak procedúra frmZaklad.NacitanieSQL robí toto:

procedure TfrmZaklad.NacitanieSQL(Prikaz: String);
  begin
    with DataModule1.ADOQuery do begin
      SQL.Clear;
      SQL.Add(Prikaz);
      Active := true;
    end;
  end;

Ďalej procedúra frmZaklad.VykonanieSQL robí toto:

procedure TfrmZaklad.VykonanieSQL(Prikaz: String); 
  begin
    with DataModule1.ADOCommand do begin
      CommandText := Prikaz;
      Execute;
    end;
  end;

A nakoniec funkcia frmZaklad.BodkaNaCiarku robí toto:

function TfrmZaklad.BodkaNaCiarku(C: String): Currency;
  var
    i: Integer;
  begin
    for i := 1 to Length(C) do begin
      if (C[i] = '.') then C[i] := ',';
    end;
    BodkaNaCiarku := StrToCurr(C);
  end;

Môžete mi z toho zdrojáku poradiť? ... :-/

Ak je problém vo volaní uloženej procedúry (a nie je k dispozícii nejaký profiler), tak by som na tvojom mieste postupoval nejako takto:

- Zmenil by som telo uloženej procedúry tak, aby nerobila vôbec nič (napríklad namiesto INSERT INTO t(c1,c2) VALUES (?,?) by som dal SELECT ? AS c1,? AS c2). Ak by to stále padalo, tak by som postupne odstraňoval parametre procedúry - až kým by to neprestalo padať.

- V prípade, že by to po zrušení tela procedúry začalo fungovať, tak by som postupne menil procedúru tak, aby namiesto parametrov vkladala nejaké konštanty, ktoré určite ide do tabuľky vložiť - až kým by to neprestalo padať.

Ďalší postup by závisel od dátového typu problémového parametra a hodnoty, s ktorou sa procedúra volá.

PS: Zdrojový kód som zatiaľ nepozeral.

Zpět do poradny Odpovědět na původní otázku Nahoru