is not a valid integer value Hatası
Salih11.04.2005 - 14:53:14
Veritabanı Firebird, D7 enterprise kullanıyorum.

Dataset'i DBGrid e bağlı şekilde kullanıyorum, KAYDET butonuna basınca, daha BtnKaydetClick procedure'una gelmeden bu hata mesajını veriyor.

Aşağıdakileri denedim ama sonuç alamadım.
* Yeni bir satıra geçince DSEbadX.Text := '0'; atadım, olmadı. İlla ki elle sıfır yazmak gerekiyor.

* Dataset in on new record eventinde o alanı sıfırladım, olmadı.

* Dataset in onPostError, OnUpdateError vs proc.larına : POST_ERROR(E.message); yazıp mesajı Türkçeleştireyim dedim, bu proc.ların hiçbirine girmedi (break koyup baktım).

* insert trigger ında değeri kontrol edeyim, null ise sıfır atayayım dedim, olmadı.

Ne yapabilirim ? KAYDET butonuna basıldığında hata mesajı vermek istemiyorum, bu olmazsa Türkçe bir mesaj vermeek istiyorum.

Selamlar, sevgiler...
 
MicroChip11.04.2005 - 15:29:21
DSEbadX.Text := '0'; dersen olmaz tabi texte değer verme
kaydetme esnasında tabloadi.fieldbyname('alanadi').asinteger:=0 de


Saygılar...
 
heskin3511.04.2005 - 15:40:34
İnteger bir alana veri aktarırken veriyi integere çevirmeden atarsan bu şekilde olur hocam.
Zaten Micro hocamda yapacağın şekli anlatmış. Bu mantık genel olarak heryerde geçerlidir.
 
Salih11.04.2005 - 15:59:24
Çok teşekkürler. Yalnız, DSEbadX diye kullandığım, dataset in bir alanının ismi :
DSEbadX: TIntegerField; şeklinde.

Yine de sizin dediğinizi de yaptım, yine olmadı :
SDM.DataSetsipsatir.fieldbyname('EBADX').asinteger:=0;

Şimdi, şöyle bir durum farkettim, bir ipucu olabilir. DBGrid içinde, örneğin değeri 12.3 olan bir alanda iken (o satırı kaydedip) bir alt satırın ilk alanına, yani EbadX alanına geçersem :

Hata : '12.30' is not a valid integer value for field 'EBADY' şeklinde hata veriyor. Yani üst satırdaki, örneğin 8. kolonun değerini, alt satırdaki ilk kolona yazmışım gibi bir olay.

Madem öyle, DBGrid in OnColexit inde bunu yakalayayım diyorum, o bölüme de girmiyor. Nerde yakalayacağımı bulamadım henüz, Oynatmama az kaaldı !!!
 
t-hex11.04.2005 - 16:05:31
Merhaba,
integer tam sayı demektir, 12.30 da haliyle tamsayı değil yani vertabanı yapını float olacak şekilde değiştirirsen sorundan kurtulursun
 
Salih11.04.2005 - 17:08:18
Hocam ben yanlış anlatıyorum sanırım, çünkü saatlerdir bu sorunu aşamadım, kafam davul oldu.
Ebadx integer bir alan ve integer değer girilmesi gerekiyor. Ancak, DBgridde en son veri girilen alan hangisi ise, o alandaki değeri alıp yeni yaratılan satırın ilk alanına yazıyor.
Yani, üst satırdaki son alanda örneğin Evet yazılı diyelim, kayıdı post edip, boş bir kayıt append ediyorum. Kullanıcı o sırada KAYDET-Çık butonuna basınca, EbadX e 'Evet' atamaya kalkıyor (ekranda evet görünmüyor ama hata mesajından böyle yaptığını anlıyorum) ve hata veriyor. Eğer grid e elle sıfır yazıp daha sonra KAYIT tuşuna basarsa, ben 'madem sıfır yazdın ben bu kayıtı silerim' deyip Delete ediyorum, o zaman hata mesajı vermeden çıkıyor.

Ben her satır post edildiğinde, yeni kayıdın integer alanlarına sıfır atayayım ki kullanan adam KAYIT dediğinde hata mesajı görmeden çıksın istiyorum. Ama beceremedim gitti.
 
MicroChip11.04.2005 - 19:22:10
o zaman kullandığın dataset in veya table nin beforepost olayında bu ilk dediğimi yapıcaksın
 
Salih12.04.2005 - 00:19:01
o zaman kullandığın dataset in veya table nin beforepost olayında bu ilk dediğimi yapıcaksın

Valla inanmayacaksınız ama, önce hata mesajını veriyor, sonra beforepost eventine giriyor, iyice inatlaştı benle :) Sanki bütün bu eventlerden önce bir yerlerde data validation yapan bir şey varmış gibi davranıyor. :kup:

Çaresiz pes ettim, DBGgriddeki sütunların sırasını değiştirdim, string değer alan bir sütunu en başa getirdim, şimdilik böyle kalsın bakalım.
 
NOT : Bu sayfa google'un siteyi indekslemesi içindir. www.delphiturkiye.com/forum/ adresini kullanınız!
1998-2006 www.delphiturkiye.com