raised exception class EConverterror with message 8754698745

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
rapsodim
Üye
Mesajlar: 147
Kayıt: 15 Eki 2003 03:52

raised exception class EConverterror with message 8754698745

Mesaj gönderen rapsodim »

raised exception class EConverterror with message "875469874510000"
is not a valid integer value şeklinde yazdığım prog hata veriyor.prg kodu aşagıdakı gıbıdır.faturatoplam alanını ve kdvtoplam alanı integerdan nasıl kurtarabılırım.
var
fkkdv,fkmik,kd,ft,s,k,tut,fiyat,fno,tar,kod,mik:integer;
fkkdvyolla,fkmikyolla,kdyolla,ftyolla,syolla,kyolla,tutyolla,fiyatyolla,fnoyolla,taryolla,kodyolla,mikyolla:String;
begin
QUERY1.CLOSE;
QUERY1.SQL.CLEAR;
QUERY1.SQL.ADD('SELECT Faturadetay, Firmakod, Faturatarih, Faturano, Referans, Birimfiyat, Miktar, Tutar, Kdv, Sno, Ftoplamtutar, Ftoplamkdv');
QUERY1.SQL.ADD('FROM "muhasebe.db" Muhasebe');
QUERY1.OPEN;
WHILE NOT QUERY1.EOF DO BEGIN
TABLE2.INSERT;
table2.FieldByName('faturadetay').asstring:= query1.FieldByName('faturadetay').asstring;
table2.FieldByName('faturadetay').asstring:='3DE';
table2.FieldByName('referans').asstring:= query1.FieldByName('referans').asstring;
s:= query1.FIELDBYNAME('sno').ASinteger;
syolla := '';
FmtStr(sYolla,'%.3d', [s]);
TABLE2.FieldByName('sno').ASstring := sYolla;

k:= query1.FIELDBYNAME('kdv').ASinteger;
kyolla := '';
FmtStr(kYolla,'%.13d', [k]);
TABLE2.FieldByName('kdv').ASstring := kYolla;
tut:= query1.FIELDBYNAME('tutar').ASinteger;
tutyolla := '';
FmtStr(tutYolla,'%.15d', [tut]);
TABLE2.FieldByName('tutar').ASstring := tutYolla;
fiyat:= query1.FIELDBYNAME('birimfiyat').ASinteger;
fiyatyolla := '';
FmtStr(fiyatYolla,'%.13d', [fiyat]);
TABLE2.FieldByName('birimfiyat').ASstring := fiyatYolla;
fno:= query1.FIELDBYNAME('faturano').ASinteger;
fnoyolla := '';
FmtStr(fnoYolla,'%.6d', [fno]);
TABLE2.FieldByName('faturano').ASstring := fnoYolla;
tar:= query1.FIELDBYNAME('faturatarih').ASinteger;
taryolla := '';
FmtStr(tarYolla,'%.8d', [tar]);
TABLE2.FieldByName('faturatarih').ASstring := tarYolla;
table2.FieldByName('firmakod').asstring:='0451';
{kod:= query1.FIELDBYNAME('firmakod').ASinteger;
kodyolla := '';
FmtStr(kodYolla,'%.4d', [kod]);
TABLE2.FieldByName('firmakod').ASstring := kodYolla;}
mik:= query1.FIELDBYNAME('miktar').ASinteger;
mikyolla := '';
FmtStr(mikYolla,'%.11d', [mik]);
TABLE2.FieldByName('miktar').ASstring := mikYolla;
QUERY1.Next;
TABLE2.POST
end;
table2.First;
WHILE NOT table2.EOF DO BEGIN
TABLE3.INSERT;
TABLE3.FieldByName('faturadetay').ASSTRING:=table2.FIELDBYNAME('faturadetay').ASSTRING;
TABLE3.FieldByName('firmakod').ASSTRING:=table2.FIELDBYNAME('firmakod').ASSTRING;
TABLE3.FieldByName('faturatarih').ASSTRING:=table2.FIELDBYNAME('faturatarih').ASSTRING;
TABLE3.FieldByName('faturano').ASSTRING:=table2.FIELDBYNAME('faturano').ASSTRING;
TABLE3.FieldByName('referans').ASSTRING:=table2.FIELDBYNAME('referans').ASSTRING;
TABLE3.FieldByName('birimfiyat').ASSTRING:=table2.FIELDBYNAME('birimfiyat').ASSTRING;
TABLE3.FieldByName('miktar').ASSTRING:=table2.FIELDBYNAME('miktar').ASSTRING;
TABLE3.FieldByName('tutar').ASSTRING:=table2.FIELDBYNAME('tutar').ASSTRING;
TABLE3.FieldByName('kdv').ASSTRING:=table2.FIELDBYNAME('kdv').ASSTRING;
TABLE3.FieldByName('sno').ASSTRING:=table2.FIELDBYNAME('sno').ASSTRING;
table2.Next;
TABLE3.POST
END;
table1.first;
table4.insert;
fkmik:= table1.FIELDBYNAME('ftoplamtutar').ASinteger;
fkmikyolla := '';
FmtStr(fkmikYolla,'%.15d', [fkmik]);
table4.FieldByName('faturatoplam').asstring:=fkmikyolla;
fkkdv:= table1.FIELDBYNAME('ftoplamkdv').ASinteger;
fkkdvyolla := '';
FmtStr(fkkdvYolla,'%.13d', [fkkdv]);
table4.FieldByName('toplamkdv').asstring:=fkkdvyolla;
table4.post;
end;
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Flaoat ve integer alanları String olarak göstermişsin ve atamalarınıda veri tipine göre yapmamışsın.

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
rapsodim
Üye
Mesajlar: 147
Kayıt: 15 Eki 2003 03:52

Mesaj gönderen rapsodim »

hüseyin bey nasıl olmalı gerci söz ile ifade ettiniz ama anlamadım.bir alanda sorun yaratıyor aşagıdakı dızılımı nasıl degıstırecegım
var
fkmik:integer;
fkmikyolla:String;

fkmik:= table1.FIELDBYNAME('ftoplamtutar').ASinteger;
fkmikyolla := '';
FmtStr(fkmikYolla,'%.15d', [fkmik]);
table4.FieldByName('faturatoplam').asstring:=fkmikyolla;
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Tablo tanımlarında Hesaplama işlemi yapılan tablolar Integer, Float, Currency tipinde tanımlanır. Bu tanımlamalar belli bir uzunlukta değer tutabilir tabii rakamsal olarak. String olarak tanımlanmış alanlar ise Karakter,, metinsel tipte veriler saklar.

Olay şu 1 + 1 işlemini yapmak ve neticeyi almak istiyorsan bunları integer tanımlamalısın.

a:integer;
b:integer;
c:integer;

c:= a + b;

şayet birini string olarak tanımlarsan hataya sebeb verecektir.

Gelelim konumuza Adet ve Fiyat gibi alanların var bunları Tablonda nasıl tanımladığına bak. ve Integer ise AsInteger olarak Float ise AsFloat olarak değiştir.

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
rapsodim
Üye
Mesajlar: 147
Kayıt: 15 Eki 2003 03:52

Mesaj gönderen rapsodim »

sizin bana daha önce gönderdiğiniz prg parçacıgı
procedure TForm1.Button1Click(Sender: TObject);
var
EditCek:Integer;
EditYolla:String;
begin
EditCek := 123333;
EditYolla := '';
FmtStr(EditYolla,'%.15d', [EditCek]);
Edit1.Text := EditYolla;
end;
şeklinde idi. Editcek:987456321; şeklinde değer ataması yapılınca hata veriyor.int yerine int64 yapılınca kabul edıyor.ama yukarıdakı prgda da sizin dedıgınız gıbı bir hatadan ziyade integer alanın yetersız oldugunu dusunuyorum ve int64 e degıstırdıgımde de convert ıslemı gerceklesmıyor.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Bakın integer tanımlanmış değer –2147483648..2147483647 arasında bir değer alıyor. Bence siz benim yazdıklarımı bir daha okuyup nedemek istediğime yoğunlaşsanız daha iyi olur kanısındayım.

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
rapsodim
Üye
Mesajlar: 147
Kayıt: 15 Eki 2003 03:52

Mesaj gönderen rapsodim »

hüseyin bey prog calısıyor.fakat 10 handen daha buyuk bır alan convert edemıyorum.hata verıyor.int64 tanımladım ama bunu
var
yeni:int64;
begin
yeni:= table1.FIELDBYNAME('ftoplamtutar').ASinteger;
fkmikyolla := '';
Fmtstr(fkmikYolla,'%.15d', [yeni]);
table4.FieldByName('faturatoplam').asstring:=fkmikyolla;

şeklinde yaptım ama 10 haneyı gene gecemedım.11 hane olunca convert etmıyor size bunu acıklamak isterim.sorunumu sıze tam olarak aktaradım anlasılan
Cevapla