Değişken Tip Sorunu
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Değişken Tip Sorunu
Merhaba,
SQL Server 2000 kullanıyorum.
Veritabanında kullandığım alanlardan bir tanesi Integer.
Program dahilinde bunu MaskEdit ile bilgisini alıyorum.
Yalnız bir sorunum var.
MaskEdit e herhangi 4 basamaklı bir rakam girdiğimde sorun olmuyor. Veritabanına kayıt yapıyor.
Yalnız hiçbir şey girmediğim zaman
'Uygulama, geçerli işlem için yanlış türde bir değer kullanıyor' gibi bir hata alıyorum.
Benim yapmak istediğim Maskedit içi boşsa NULL değer ataması, eğer içinde bir rakam mevcut ise o rakamı veritabanına yazmak.
SQL Server 2000 kullanıyorum.
Veritabanında kullandığım alanlardan bir tanesi Integer.
Program dahilinde bunu MaskEdit ile bilgisini alıyorum.
Yalnız bir sorunum var.
MaskEdit e herhangi 4 basamaklı bir rakam girdiğimde sorun olmuyor. Veritabanına kayıt yapıyor.
Yalnız hiçbir şey girmediğim zaman
'Uygulama, geçerli işlem için yanlış türde bir değer kullanıyor' gibi bir hata alıyorum.
Benim yapmak istediğim Maskedit içi boşsa NULL değer ataması, eğer içinde bir rakam mevcut ise o rakamı veritabanına yazmak.
- Bil_Bakalım
- Üye
- Mesajlar: 61
- Kayıt: 31 Ara 2004 01:45
- Konum: İzmir
- İletişim:
Arkadaşlar,
İlginize teşekkür ederim.
MaskEdit te herhangi bir Maske yok. Tek özelliği Maxlengh=4 tanımlı. Başka bir özelliği yok.
Parameters.ParamByName('V1').Value:=alan şeklinde bir tanımlaması mevcut.
Dediğim gibi herhangi bir rakam girersem sorun yok ama boş geçersem tiple alakalı sorun çıkarıyor.
Ne olduğunu çıkaramadım.
En son bir deneme daha yaptım, bunda da aynı sorunu verdi.
En son denememdeki Yazdığım kodlar.
kg ve cm veritabanında integer olarak tanımlı.
var kg,cm:integer
olarak tanımladığımda ise daha başka sorunlar çıkıyor.
Mesela
Maskedit in içindeki text bilgiyi hiç göremedim.
İlginize teşekkür ederim.
MaskEdit te herhangi bir Maske yok. Tek özelliği Maxlengh=4 tanımlı. Başka bir özelliği yok.
Parameters.ParamByName('V1').Value:=alan şeklinde bir tanımlaması mevcut.
Dediğim gibi herhangi bir rakam girersem sorun yok ama boş geçersem tiple alakalı sorun çıkarıyor.
Ne olduğunu çıkaramadım.
En son bir deneme daha yaptım, bunda da aynı sorunu verdi.
En son denememdeki Yazdığım kodlar.
Kod: Tümünü seç
procedure TForm3.Button1Click(Sender: TObject);
var kg,cm:string;
vd,vhn:string;
begin
vd:=MaskEdit63.Text;
vhn:=MaskEdit64.Text;
kg:=MaskEdit21.Text;
cm:=MaskEdit22.Text;
with AdoQuery2 do
begin
SQL.Text:='INSERT INTO Table1 (VD,VHN,KG,CM) VALUES (:V1,:V2,:V3,:V4)
Parameters.ParamByName('V1').Value:=vd;
Parameters.ParamByName('V2').Value:=vhn;
Parameters.ParamByName('V3').Value:=kg;
Parameters.ParamByName('V4').Value:=cm;
ExecSQL;
end;
var kg,cm:integer
olarak tanımladığımda ise daha başka sorunlar çıkıyor.
Mesela
Maskedit in içindeki text bilgiyi hiç göremedim.
şunu dene
bakalım gerçekten integer olabiliryor mu orası. ama muhtemelen boş olsa da hata verecektir. topiğin üst kısmında konuşulanları şu anda hatırlamıyorum.
şunu yapman gerekebilir. eğer maskedit boş ise direk olarak değil de null e çevirerek sql server a göndermen gerekebilir. yani belki hata sqlserver da değil de delphideki tip dönüşümü sırasında oluşuyordur.
Kod: Tümünü seç
var i : integer;
begin
i:= inttostr(maskedit1.text);
end;
şunu yapman gerekebilir. eğer maskedit boş ise direk olarak değil de null e çevirerek sql server a göndermen gerekebilir. yani belki hata sqlserver da değil de delphideki tip dönüşümü sırasında oluşuyordur.
Kod: Tümünü seç
var i : integer;
begin
i:= inttostr(maskedit1.text);
end;
Parametre olarak;
Parameters.ParamByName('V3').Value:=kg;
şeklinde bir tanımlama yapmıştım.
Arkadaşlar pardon,
Şimdi sizin nasıl bir kod yazacağınızı isteyeceğim. Lütfen.
SQL Server da bir alan (integer)
Bir adet Maskedit. (Tek özellik olarak maxlenght 4 olacak şekilde)
Maskedit e herhangi bir rakam girilirse bu rakam,
girilmezse NULL veya NULL olmazsa yani integer bir alana NULL kaydedilemez ise 0 gibi değer kaydetmek istiyorum.
Sizden gelecek kod örnekleri ile kendileriminkini karşılaştıracağım.
Mutlaka hata yaptığım bir yer vardır.
Teşekkür ederim.
Şimdi sizin nasıl bir kod yazacağınızı isteyeceğim. Lütfen.
SQL Server da bir alan (integer)
Bir adet Maskedit. (Tek özellik olarak maxlenght 4 olacak şekilde)
Maskedit e herhangi bir rakam girilirse bu rakam,
girilmezse NULL veya NULL olmazsa yani integer bir alana NULL kaydedilemez ise 0 gibi değer kaydetmek istiyorum.
Sizden gelecek kod örnekleri ile kendileriminkini karşılaştıracağım.
Mutlaka hata yaptığım bir yer vardır.
Teşekkür ederim.
Kod: Tümünü seç
if maskedit1.text = '' then Parameters.ParamByName('V3').Value:=null else Parameters.ParamByName('V3').Value:=kg;