From: Mucibirahman İLBUĞA (mucip.ilbuga@gmail.com)
Date: Thu 11 Jan 2007 - 14:42:14 GMT
Selamlar,
İlginize teşekkürler. Ancak mantık olarak SQL dışına çıkmak istemediğimden tüm işlemleri SQL cümleleri ile yapmanın ilerde kompanent değişimlerinde sorun yaşatmayacağını düşünüyorum. İncelediğim çoğu kaynak da böyle söylüyor.
Ancak denemelerimde garip bir sonuç ile hallettim:
Gönderdiğim kodda
ADOTable1.fieldvalues['secmen']
yerine
ADOTable1.fields[0].text
değerini kullandığımda boş hücrelerde problem yaşamadım. İşlem halloldu yani. Ama neden iki komut arasında fark olduğunu anlamadım?
Teşekkürler,
Mucip:)
Özgürlük için http://www.pardus.org.tr/
----- Original Message -----
From: Yaşar ÖZANLAĞAN
To: linux-programlama@liste.linux.org.tr
Sent: Thursday, January 11, 2007 3:41 PM
Subject: RE: [Linux-programlama] Firebird SQL ile boş, Null değer kaydetme?
Gönderdiğiz örnekte Edit1 nesnesine isim atarken veritabanındaki değer null ise variant'a çeviremediği için hata veriyor. Örneğinizde daha fazla kod yazmayı gerektiren bir yol tercih etmişsiniz, bana göre.
Sizin örneğinine bakarak kendi kullandığım mssql deki müşteri dosyasından firebird deki secmen dosyasına bilgi aktarmak için 2 adotable nesnesi oluşturdum. SecTB firebird üzerideki yeni tablo, Adotable1 ise mssqldeki müşteri dosyası. Table nesnesi içerisine fieldleri ekledim ve denedim. Umarım işinize yarar.
Yaşar ÖZANLAĞAN
procedure TMainF.SpeedButton1Click(Sender: TObject);
begin
DM.ADOTable1.Open;
DM.SecTB.Open;
DM.ADOTable1.First;
while not DM.AdoTable1.Eof do
Begin
DM.SecTB.Insert;
DM.SecTBtckimlikno.Value := DM.ADOTable1MKOD.Value;
DM.SecTBsecmenno.Value := 0;
DM.SecTBad.Value := DM.ADOTable1ISIM.Value;
DM.SecTBsoyad.Value := DM.ADOTable1SOYAD.Value;
DM.SecTBilksoyad.Value := '';
DM.SecTBanaadi.Value := DM.ADOTable1ANAADI.Value;
DM.SecTBbabaadi.Value := DM.ADOTable1BABAADI.Value;
DM.SecTBcinsiyet.Value := '';
DM.SecTBdogumyeri.Value := DM.ADOTable1DYERI.Value;
DM.SecTBnufusil.Value := DM.ADOTable1NFIL.Value;
DM.SecTBnufusilce.Value := DM.ADOTable1NFILCE.Value;
DM.SecTBadresilad.Value := DM.ADOTable1SEHIR.Value;
DM.SecTBadresilcead.Value := DM.ADOTable1ILCE.Value;
DM.SecTBadresmuhtarad.Value := '';
DM.SecTBadrescaddesokakad.Value := DM.ADOTable1ADRES.Value;
DM.SecTBadreskapino.Value := '';
DM.SecTBadresdaireno.Value := '';
DM.SecTBadresapt.Value := '';
DM.SecTB.Post;
Edit1.Text:= DM.ADOTable1UNVAN.Value;
application.ProcessMessages;
DM.AdoTable1.Next;
End;
DM.ADOTable1.Close;
DM.SecTB.Close;
end;
------------------------------------------------------------------------------
From: linux-programlama-bounces@liste.linux.org.tr [mailto:linux-programlama-bounces@liste.linux.org.tr] On Behalf Of Mucibirahman İLBUĞA
Sent: Wednesday, January 10, 2007 2:09 PM
To: linux-programlama
Subject: [Linux-programlama] Firebird SQL ile boş, Null değer kaydetme?
Selamlar,
Win üzerinde Access ile tutulan verileri Firebird 1.5 üzerine Delphi ile aktarmaya çalışıyorum. Ancak garip bir durum var:
Aşağıdaki kodda kaynak alan mesela "KapiNo" boş ise ;
"Could not convert variant of type (null) into type (string)"
Hatası alıyorum... ADO, alanın içeriği boş ise Null dönderiyor anlaşılan. Bu sorunu SQL içerisinden halledebilir miyiz? Yoksa Delphide "if null" gibi bir çözüm mü yapmalıyız?
Teşekkürler,
Mucip:)
Özgürlük için http://www.pardus.org.tr/
****************************************************************
procedure TForm1.Button3Click(Sender: TObject);
begin
AdoTable1.First;
while not AdoTable1.Eof do
Begin
IBQuery1.Close;
IBQuery1.SQL.Clear;
IBQuery1.SQL.add('Insert into Secmen(TCKimlikNo,SecmenNo,Ad,Soyad,');
IBQuery1.SQL.add('IlkSoyad,AnaAdi,BabaAdi,Cinsiyet,DogumYeri,'); {DogumTarihi,}
IBQuery1.SQL.add('NufusIl,NufusIlce,AdresIlAd,AdresIlceAd,AdresMuhtarAd,AdresCaddeSokakAd,KapiNo,DaireNo,Bolge) values ');
IBQuery1.SQL.add('(''' + ADOTable1.FieldValues['TCKimlikNo'] + ''', ');
IBQuery1.SQL.add('''' + ADOTable1.FieldValues['SecmenNo'] + ''', ');
IBQuery1.SQL.add('''' + ADOTable1.FieldValues['Ad'] + ''', ');
IBQuery1.SQL.add('''' + ADOTable1.FieldValues['SoyAd'] + ''', ');
IBQuery1.SQL.add('''' + ADOTable1.FieldValues['IlkSoyAd'] + ''', ');
IBQuery1.SQL.add('''' + ADOTable1.FieldValues['AnaAdi'] + ''', ');
IBQuery1.SQL.add('''' + ADOTable1.FieldValues['BabaAdi'] + ''', ');
IBQuery1.SQL.add('''' + ADOTable1.FieldValues['Cinsiyet'] + ''', ');
IBQuery1.SQL.add('''' + ADOTable1.FieldValues['DogumYeri'] + ''', ');
IBQuery1.SQL.add('''' + ADOTable1.FieldValues['NufusIl'] + ''', ');
IBQuery1.SQL.add('''' + ADOTable1.FieldValues['NufusIlce'] + ''', ');
IBQuery1.SQL.add('''' + ADOTable1.FieldValues['AdresIlAd'] + ''', ');
IBQuery1.SQL.add('''' + ADOTable1.FieldValues['AdresIlceAd'] + ''', ');
IBQuery1.SQL.add('''' + ADOTable1.FieldValues['AdresMuhtarAd'] + ''', ');
IBQuery1.SQL.add('''' + ADOTable1.FieldValues['AdresCaddeSokakAd'] + ''', ');
IBQuery1.SQL.add('''' + ADOTable1.FieldValues['KapiNo'] + ''', ');
IBQuery1.SQL.add('''' + ADOTable1.FieldValues['DaireNo'] + ''', ');
IBQuery1.SQL.add('''TEST'');');
IBQuery1.Prepare;
IBQuery1.ExecSQL;
Edit1.Text:= ADOTable1.FieldValues['No'];
application.ProcessMessages;
AdoTable1.Next;
End;
IBDataset1.Close;
IBDataset1.Open;
//ADOTable1.FieldValues['HareketFisNo']
end;
****************************************************************
------------------------------------------------------------------------------
_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama
_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama