ISNULL DEĞERİ ATAMAK

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ozcank
Üye
Mesajlar: 925
Kayıt: 28 Nis 2005 05:29

ISNULL DEĞERİ ATAMAK

Mesaj gönderen ozcank »

Arkadaşlar Merhaba; Hepinizin Bayramını Kutluyorum. Sorum şöyle yardımcı olursanız çok sevinirim.

Excel den SQL veri tabanına data alıyorum fakat Excel de bazı alanlar NULL ve boş bu durumda kontrol etmek istiyorum eğer NULL veya boş ise veri tabanına yazmayacak. Bu şekilde yapmaya çalıştım ama olmadı.

Kod: Tümünü seç

DBSTHAR.FieldByName('STHAR_MALFISK').AsString:= ExcelWorkSheet1.Cells.Item[ Satir, 15 ].Value OR
DBSTHAR.FieldByName('STHAR_MALFISK').AsString ISNULL:= ExcelWorkSheet1.Cells.Item[ Satir, 15 ].Value ISNULL;
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: ISNULL DEĞERİ ATAMAK

Mesaj gönderen freeman35 »

if null or trim(x)='' then yazılımın, bilinmezse yazılamayacak olan yapı taşı !!!
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
ozcank
Üye
Mesajlar: 925
Kayıt: 28 Nis 2005 05:29

Re: ISNULL DEĞERİ ATAMAK

Mesaj gönderen ozcank »

Bu şekilde kullandım ama "Invalid argument" hatası veriyor

Kod: Tümünü seç

if Null OR Trim( ExcelWorkSheet1.Cells.Item[ Satir, 15 ].Value ) then
DBSTHAR.FieldByName('STHAR_MALFISK').AsString:= ExcelWorkSheet1.Cells.Item[ Satir, 15 ].Value;

//DBSTHAR.FieldByName('STHAR_FTIRSIP').AsString:= ExcelWorkSheet1.Cells.Item[ Satir, 16 ].Value;
if Null OR Trim( ExcelWorkSheet1.Cells.Item[ Satir, 16 ].Value ) then
DBSTHAR.FieldByName('STHAR_FTIRSIP').AsString:= ExcelWorkSheet1.Cells.Item[ Satir, 16 ].Value;

//DBSTHAR.FieldByName('STHAR_SATISK2').AsString:= ExcelWorkSheet1.Cells.Item[ Satir, 17 ].Value;
if Null OR Trim( ExcelWorkSheet1.Cells.Item[ Satir, 17 ].Value ) then
DBSTHAR.FieldByName('STHAR_SATISK2').AsString:= ExcelWorkSheet1.Cells.Item[ Satir, 17 ].Value;
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: ISNULL DEĞERİ ATAMAK

Mesaj gönderen freeman35 »

Sen önce biraz ara ver, sonrada if kullanımını tekrar bir gözden geçir.
if ...].Value is null veya if ...].Value = null veya if Trim(...].Value )='' ve Trim i bir incele ne işe yarar nerede kullanılır. veri tiplerini incele, onları koşullarda nasıl kullanabilirsin
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: ISNULL DEĞERİ ATAMAK

Mesaj gönderen ertank »

ozcank yazdı: 25 May 2020 08:02 Excel den SQL veri tabanına data alıyorum fakat Excel de bazı alanlar NULL ve boş bu durumda kontrol etmek istiyorum eğer NULL veya boş ise veri tabanına yazmayacak. Bu şekilde yapmaya çalıştım ama olmadı.
Merhaba,

Kullandığınız yöntemde Excel'den okunan veriler Variant türünde bir değişkende saklanır. Variant değişkenlerin NULL kontrolünü aşağıdaki şekilde yapabilirsiniz.

Kod: Tümünü seç

uses
  System.Variants;
  
if VarIsNull(ExcelWorkSheet1.Cells.Item[ Satir, 15 ].Value) then
  // Değer Null
else
  // Değer Null değil
Eğer sizin için NULL *veya* Boş olması aynı şey ise bu defa iki kontrolü birlikte yapan aşağıdaki fonksiyonu kullanabilirsiniz

Kod: Tümünü seç

uses
  System.Variants;
  
if VarIsNull(ExcelWorkSheet1.Cells.Item[ Satir, 15 ].Value) or VarIsEmpty(ExcelWorkSheet1.Cells.Item[ Satir, 15 ].Value) then
  // Değer Null veya boş
else
  // Değer Null veya boş değil
Eğer NULL durumunda farklı ve boş olması durumunda farklı işlem yapmak isterseniz bu durumda aşağıdaki gibi bir kod yazabilirsiniz

Kod: Tümünü seç

uses
  System.Variants;
  
if VarIsNull(ExcelWorkSheet1.Cells.Item[ Satir, 15 ].Value) then
  // Değer Null 
else
if VarIsEmpty(ExcelWorkSheet1.Cells.Item[ Satir, 15 ].Value)
  // Değer boş
else
  // Değer mevcut
NOT: Delphi 7 için uses kısmına System.Variants değil, sadece Variants yazmalısınız.
ozcank
Üye
Mesajlar: 925
Kayıt: 28 Nis 2005 05:29

Re: ISNULL DEĞERİ ATAMAK

Mesaj gönderen ozcank »

Yardımlarınızdan dolayı teşekkür ederim.
Bu şekilde halletim.

Kod: Tümünü seç

If (Not VarIsNull( ExcelWorkSheet1.Cells.Item[ Satir, 15 ].Value )) 
And
(Trim( ExcelWorkSheet1.Cells.Item[ Satir, 15 ].Value) ) <> '' Then
Begin
DBSTHAR.FieldByName('STHAR_MALFISK').Value:= ExcelWorkSheet1.Cells.Item[ Satir, 15 ].Value;
End;
Cevapla