Ms Sql databaseten excele veri gönderirken hata

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Ms Sql databaseten excele veri gönderirken hata

Mesaj gönderen denizfatihi »

Merhaba,

Ms sql server kullanıyorum kayıt esnasında tarih alanına null olarak kaydedilen değer excele gönderince 01.01.1900 şeklinde yansıyor bunu excel hücresinde boş olarak nasıl gösterebilirim. Kullandığım kod aşağıdaki gibi şimdiden teşekkür ederim.

Kod: Tümünü seç

var
  v,sayfa:variant;{v excel prg, sayfa calisma sayfasi}
  i,a :integer;
  z : string;
  mak:AnsiString;
  begin
  Application.ProcessMessages;
  v:=createoleobject('excel.application');//exceli yarat
  v.workbooks.add;//yeni calisma kitabini ekle
 
   
    sayfa:=v.workbooks[1].worksheets[1];
   
    Qr_Peronel_lis.First;
    Application.ProcessMessages;
    sayfa.cells[4,1]:='Sicil';
    sayfa.cells[4,2]:='T.C.Kimlik';
    sayfa.cells[4,3]:='Adı Soyadı';
    sayfa.cells[4,4]:='İşe Giriş';
    sayfa.cells[4,5]:='Sözleşme Bitiş Tarihi';
    sayfa.cells[4,6]:='İşten Çıkış';
    


    Application.ProcessMessages;
    i:=4;
    while not Qr_Peronel_lis.Eof do
    begin
    i:=i+1;    Application.ProcessMessages;
    sayfa.cells[i,1]:=Qr_Peronel_lisSICIL.Asstring;
    sayfa.cells[i,2]:=Qr_Peronel_lisTCKIMLIK.AsString;
    sayfa.cells[i,3]:=Qr_Peronel_lisADISOYADI.AsString;
    sayfa.cells[i,4]:=Qr_Peronel_lisISEGIRTAR.Value;
    sayfa.cells[i,5]:=Qr_Peronel_lisSOZLESMEBITIS.Value;
    sayfa.cells[i,6]:=Qr_Peronel_lisCIKISTARIHI.Value;
    

    Qr_Peronel_lis.next;    

    sayfa.Columns[1].Columns.Autofit;
    sayfa.Columns[2].Columns.Autofit;
    sayfa.Columns[3].Columns.Autofit;
    sayfa.Columns[4].Columns.Autofit;
    sayfa.Columns[5].Columns.Autofit;
    sayfa.Columns[6].Columns.Autofit;
    
    
    end;
    v.visible:=true;
    Qr_Peronel_lis.First;
    v.Quit;
    end;
Kullanıcı avatarı
cinarbil
Üye
Mesajlar: 109
Kayıt: 18 Mar 2014 09:26

Re: Ms Sql databaseten excele veri gönderirken hata

Mesaj gönderen cinarbil »

Kod: Tümünü seç

sayfa.cells[i,6]:=Qr_Peronel_lisCIKISTARIHI.Value;
satırını

Kod: Tümünü seç

if  Peronel_lisCIKISTARIHI.Value <> ' ' veya null  then sayfa.cells[i,6]:=Qr_Peronel_lisCIKISTARIHI.Value;
şeklinde yapabilirmiyiz.
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: Ms Sql databaseten excele veri gönderirken hata

Mesaj gönderen denizfatihi »

Sorgu içinde yapmıştım ama olmadı.

Kod: Tümünü seç

CASE
WHEN  P.CIKISTARIHI <> '' THEN P.CIKISTARIHI
WHEN  P.CIKISTARIHI IS NULL THEN ''  END AS CIKISTARIHI,
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: Ms Sql databaseten excele veri gönderirken hata

Mesaj gönderen denizfatihi »

Merhaba,

Fikir verebilecek kimse yok mu ?
Kullanıcı avatarı
tuna
Üye
Mesajlar: 300
Kayıt: 07 Tem 2008 04:39
Konum: İstanbul

Re: Ms Sql databaseten excele veri gönderirken hata

Mesaj gönderen tuna »

select cümlenize şunu ekleyebilirmisin. case when satırını kaldırdığını varsayıyorum.

Kod: Tümünü seç

select field1...., coalesce(P.CIKISTARIHI,0) as CIKISTARIHI FROM .......
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: Ms Sql databaseten excele veri gönderirken hata

Mesaj gönderen esistem »

Selam,

Kod: Tümünü seç

sayfa.cells[i,6]:=Qr_Peronel_lisCIKISTARIHI.AsString;
şeklinde denermisin.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Ms Sql databaseten excele veri gönderirken hata

Mesaj gönderen mrmarman »

bunlar da olmadı (excel sütun formatı boşlukları dolduruyorsa)
tarih alanı null ise hücreye başında tek tırnak olan bir belirtici karakter koy. mesela '''. ' gibisinden.Bilmeyenler içi yazıyorum yanyana iki adet tek tırnak, çıktı olarak bir tek tırnak verir.

Hücre bunu string kabul eder formül dışı bırakır.
Resim
Resim ....Resim
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: Ms Sql databaseten excele veri gönderirken hata

Mesaj gönderen denizfatihi »

mrmarman yazdı:bunlar da olmadı (excel sütun formatı boşlukları dolduruyorsa)
tarih alanı null ise hücreye başında tek tırnak olan bir belirtici karakter koy. mesela '''. ' gibisinden.Bilmeyenler içi yazıyorum yanyana iki adet tek tırnak, çıktı olarak bir tek tırnak verir.

Hücre bunu string kabul eder formül dışı bırakır.
Hocam bir örnek ile açıklayabilir misiniz ?
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Ms Sql databaseten excele veri gönderirken hata

Mesaj gönderen mrmarman »

FieldByName yerine kendi dilediğin şekilde de yapabilirsin.

Kod: Tümünü seç

  if NOT Qr_Peronel_lis.FieldByName('CIKISTARIHI').IsNull
    then sayfa.cells[i,6]:= Qr_Peronel_lis.FieldByName('CIKISTARIHI').Value
    else sayfa.cells[i,6]:= '''.';
Resim
Resim ....Resim
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: Ms Sql databaseten excele veri gönderirken hata

Mesaj gönderen denizfatihi »

Sorun çözüldü, herkeze teşekkür ederim.
Kullanıcı avatarı
tuna
Üye
Mesajlar: 300
Kayıt: 07 Tem 2008 04:39
Konum: İstanbul

Re: Ms Sql databaseten excele veri gönderirken hata

Mesaj gönderen tuna »

Sorunun nasıl çözüldüğünü burada paylaşırsan ileride başkalarınada yardımcı olmuş olursun.
Kullanıcı avatarı
muratcelik64
Üye
Mesajlar: 17
Kayıt: 16 Tem 2014 05:07

Re: Ms Sql databaseten excele veri gönderirken hata

Mesaj gönderen muratcelik64 »

Exceldeki tarih yazılacak hücrenin formatı metin yapılması gerekir.

ExcelApp.Range['A4:A5'].NumberFormat := '@'; // Hücre Formatını Metin YAPAR
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: Ms Sql databaseten excele veri gönderirken hata

Mesaj gönderen denizfatihi »

mrmarman yazdı:FieldByName yerine kendi dilediğin şekilde de yapabilirsin.

Kod: Tümünü seç

  if NOT Qr_Peronel_lis.FieldByName('CIKISTARIHI').IsNull
    then sayfa.cells[i,6]:= Qr_Peronel_lis.FieldByName('CIKISTARIHI').Value
    else sayfa.cells[i,6]:= '''.';
Yukarıdaki şekilde mrmarman hocamın örneği gibi.
Cevapla