Count of read-write columns does not equal count of values
Count of read-write columns does not equal count of values
Herkese kolay gelsin.Veritabanı olarak Firebird Kullanıyorum.aşağıda ki kodları çalıştırdığımda
procedure TfrmMain.RzGrpBursIslemleriItems0Click(Sender: TObject);
var
Ay, Yil, SicilID: string;
Miktar: Currency;
begin
if not Assigned(frmBursGiris) then
Application.CreateForm(TfrmBursGiris, frmBursGiris);
frmBursGiris.ShowModal;
if frmBursGiris.ModalResult = mrOk then
begin
Yil := frmBursGiris.edYil.Text;
Ay := frmBursGiris.edAy.Text;
Miktar := StrToCurr(frmBursGiris.crMiktar.Text);
dataGenel.Close;
dataGenel.SelectSQL.Clear;
dataGenel.SelectSQL.Add('Select * From OGRENCIKART Where BURSDURUMU=''D''');
dataGenel.Open;
while not dataGenel.Eof do
begin
SicilID := dataGenel.FieldByName('UID').AsString;
DM.ExecSQL('INSERT INTO BURSGIRS (SICILID,YIL,AY,MIKTAR) VALUES (' +
QuotedStr(SicilID) + ',' + QuotedStr(Yil) + ','
+
QuotedStr(Ay) + ',' + CurrToStr(Miktar) + ') ');
dataGenel.Next;
end;
end;
FreeAndNil(frmBursGiris);
end;
Count of read-write columns does not equal count of values
hatasını alıyorum.
Hata DM.ExecSQL('INSERT INTO BURSGIRS (SICILID,YIL,AY,MIKTAR) VALUES (' +
QuotedStr(SicilID) + ',' + QuotedStr(Yil) + ','
+
QuotedStr(Ay) + ',' + CurrToStr(Miktar) + ') ');
dataGenel.Next;
end;
satırında oluyor. ve buradaki miktar değişkeni integer olarak tanımlarsam sorun çıkmıyor.Currenciy olarak tanımlayıp 74,50 gibi bir değer girdiğimde yukarıdaki hatayı veriyor.
çok teşekür ederim. herkese kolay gelsin.
procedure TfrmMain.RzGrpBursIslemleriItems0Click(Sender: TObject);
var
Ay, Yil, SicilID: string;
Miktar: Currency;
begin
if not Assigned(frmBursGiris) then
Application.CreateForm(TfrmBursGiris, frmBursGiris);
frmBursGiris.ShowModal;
if frmBursGiris.ModalResult = mrOk then
begin
Yil := frmBursGiris.edYil.Text;
Ay := frmBursGiris.edAy.Text;
Miktar := StrToCurr(frmBursGiris.crMiktar.Text);
dataGenel.Close;
dataGenel.SelectSQL.Clear;
dataGenel.SelectSQL.Add('Select * From OGRENCIKART Where BURSDURUMU=''D''');
dataGenel.Open;
while not dataGenel.Eof do
begin
SicilID := dataGenel.FieldByName('UID').AsString;
DM.ExecSQL('INSERT INTO BURSGIRS (SICILID,YIL,AY,MIKTAR) VALUES (' +
QuotedStr(SicilID) + ',' + QuotedStr(Yil) + ','
+
QuotedStr(Ay) + ',' + CurrToStr(Miktar) + ') ');
dataGenel.Next;
end;
end;
FreeAndNil(frmBursGiris);
end;
Count of read-write columns does not equal count of values
hatasını alıyorum.
Hata DM.ExecSQL('INSERT INTO BURSGIRS (SICILID,YIL,AY,MIKTAR) VALUES (' +
QuotedStr(SicilID) + ',' + QuotedStr(Yil) + ','
+
QuotedStr(Ay) + ',' + CurrToStr(Miktar) + ') ');
dataGenel.Next;
end;
satırında oluyor. ve buradaki miktar değişkeni integer olarak tanımlarsam sorun çıkmıyor.Currenciy olarak tanımlayıp 74,50 gibi bir değer girdiğimde yukarıdaki hatayı veriyor.
çok teşekür ederim. herkese kolay gelsin.
insert sql cumlesinde value ile alan sayıları uyusmuyor,
CurrToStr(Miktar) bu kodda muhtemelen 12,65 gibi bir deger yazıyor
bu da 5 deger alanı demek oluyor
QuotedStr(CurrToStr(Miktar)) seklinde deneyin ...
ayrıca kodlarınızı Code tagı icine alırsanız daha okunaklı olur.
/*mesajınızı editleyerek yapabilirsiniz.*/
CurrToStr(Miktar) bu kodda muhtemelen 12,65 gibi bir deger yazıyor
bu da 5 deger alanı demek oluyor

QuotedStr(CurrToStr(Miktar)) seklinde deneyin ...
ayrıca kodlarınızı Code tagı icine alırsanız daha okunaklı olur.
/*mesajınızı editleyerek yapabilirsiniz.*/
ÜŞENME,ERTELEME,VAZGEÇME
Kod: Tümünü seç
INSERT INTO BURSGIRS (SICILID,YIL,AY,MIKTAR)
VALUES (1,2005,2,75,50)
Hocam çok teşekür ederim.hata vermiyor dediğiniz gibi yaptığımda.yalnız ben başka bir deneme yapmıştım.yani string olarak tanımladğımda da hata vermiyordu.ama ben
74,50 YTL yazıyodum.veri tabanına
7450 olarak kaydediyordu.
Sizin Söylediğiniz gibi yaptığımdada
745 YTL olarak kaydediyor.
yyapması gereken şey 74,50 veya sadece 74 YTl girdiğimde ise 74,00 olarak kaydetmesi gerekiyor.
çok teşekür ederim.
74,50 YTL yazıyodum.veri tabanına
7450 olarak kaydediyordu.
Sizin Söylediğiniz gibi yaptığımdada
745 YTL olarak kaydediyor.
yyapması gereken şey 74,50 veya sadece 74 YTl girdiğimde ise 74,00 olarak kaydetmesi gerekiyor.
çok teşekür ederim.
hocam ben naile hocanın dediğini yaptım.ben yanlış görmüşüm nokta ile virgülün yerini değiştirdim.yalnız merak ettiğim bir konu var.normalde devlet dairelerinin kullandığı ayraç binlik ayıracı nokta ondalık ayıracı virgül olarak kullanılıyor galiba.bu firebirdin kendinden böyle bir değişiklik yapılamıyormu. yada firebird niye bilgisayarın varsayılan değerlerini alımıyor. ilginç geldi bana. ben şimdi program yaptığım bilgisayarın bölgesel ayarlarını değiştirdim ve 74.5 olarak değeri girdi. benim yükleyeceğim bilgisayarıda değiştirmem gerekiyor doğal olarak. ama onlarda oradan bir textfile oluşturup vakıf bankasına gönderecekler.ve adamlar diyecek bana virgül olsun kuruş ayıracı. bunun başka türlü bir yolu yokmu acaba.
herkese kolay gelsin.
herkese kolay gelsin.