Count of read-write columns does not equal count of values

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
ademcicek
Üye
Mesajlar: 409
Kayıt: 03 Eki 2003 01:50
Konum: Ankara

Count of read-write columns does not equal count of values

Mesaj gönderen ademcicek »

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.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

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 :wink:
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
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Kod: Tümünü seç

INSERT INTO BURSGIRS (SICILID,YIL,AY,MIKTAR) 
VALUES (1,2005,2,75,50)
Yukarıda yazdığım örnekteki gibi 75,50 yi tek bir sayı gibi değil 75 ve 50 gibi alıyor. Bunun için bölgesel ayarlardan ondalık ayıracınızı . (nokta), binlik ayıracınızı , (virgül) olarak değiştirin.
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Ben yazmaya başladığımda hiç cevap yoktu :)
ademcicek
Üye
Mesajlar: 409
Kayıt: 03 Eki 2003 01:50
Konum: Ankara

Mesaj gönderen ademcicek »

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.
ademcicek
Üye
Mesajlar: 409
Kayıt: 03 Eki 2003 01:50
Konum: Ankara

Mesaj gönderen ademcicek »

naile hanım bölgesel ayarlarda zaten dediğiniz gibi ayraçlar. nokta ve virgül.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

firebird deki sorgularda ondalık ayırac icin '.' kullanın
ÜŞENME,ERTELEME,VAZGEÇME
ademcicek
Üye
Mesajlar: 409
Kayıt: 03 Eki 2003 01:50
Konum: Ankara

Mesaj gönderen ademcicek »

gkimirti
firebird deki sorgularda ondalık ayırac icin '.' kullanın

demişiniz.
peki ben onu nereden değiştirecem.veya nerede kullanacam.
çok teşekür ederim.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

insert into tablo(id,fiyat) values(1,'12.95')
burda kullanacaksın 8)
ÜŞENME,ERTELEME,VAZGEÇME
ademcicek
Üye
Mesajlar: 409
Kayıt: 03 Eki 2003 01:50
Konum: Ankara

Mesaj gönderen ademcicek »

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.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

sen de firebird icin sabit . kullan
para degerini stringe cevir
DecimalChar i icinde arattırıp buldugunu . ya cevir
ben bu sekilde yapmıstım
ayrıca firebirdun . mı , mü olarak degerlendirmesi belki config dosyalarında
ayarlanıyordur bakmak lazım
ÜŞENME,ERTELEME,VAZGEÇME
Cevapla