editler boşsa mesaj ver dolu ise

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

editler boşsa mesaj ver dolu ise

Mesaj gönderen bobasturk »

merhabalar,

sorgulama sayfamda tarihler arası sorgu kısımlarım var ve burada tarih aralıkları girilmezse sorgu hata veriyor. ve bu hata delphi tarafından ingilizce veriliyor. ben burada şu kodu kullanarak mesajı türkçe vermek istiyorum. bu olayı değişik yerlerdede kullanmak istiyorum

Kod: Tümünü seç

var
  Tarih1,Tarih2:TDate;
  begin
  if not (edit1.Text ='') and (edit2.Text ='') then
  begin
  ibquery1.Close;
  ibquery1.SQL.Clear;
  ibquery1.SQL.Add('select*from ARSIVTESCIL');
  ibquery1.SQL.Add('where D_TARIHI Between :Tarih1 and :Tarih2');
  ibquery1.ParamByName('Tarih1').AsDate:=strtodate(edit11.Text);
  ibquery1.ParamByName('Tarih2').AsDate:=strtodate(edit12.Text);
  ibquery1.Open;
  ibquery1.Last;
  dbgrid1.Visible:=false;
  dbgrid1.Visible:=true;
    if ibquery1.IsEmpty then showmessage('Üzgünüm! Sorguladığınız Kayıtlar Bulunamadı!!!');
    end
    else
    begin
    showmessage('tarih aralığı giriniz');
end;
end;
burada kod çalışıyor, fakat boş olsada tarih girsede mesaj veriyor. dün akşam dto2 de baktım bir kaç örnek var hüsonet in verdiklerinde ama kendi sorguma yapamadım.

nasıl bişi eklemeliyim ki editler boşsa mesaj versin dolu ise sorgu çalışsın.

teşekkür ve saygılarla
kolay gelsin
Misafir

Mesaj gönderen Misafir »

merhaba.
ilk olarak, kodlar pas dosyası içinde de böyleyse ilerde çok sıkıntı yaşarsınız.ikinci olarak begin end bloklarını gerektiği gibi oluşturmamışsınız.buralarda bir düzenleme yapmanız gerekiyor.
kolay gelsin.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

evet ustam bu hatamın farkındayım hepsi bi hizada bu durumu alışkanlık haline getiremedik ve genelde değişiklik ve denemeler yaptığım için genelde kod satırları karışıp duruyor.

begin end bloklarına gelince bildiğim kadarla değişik denemeler yaptım ama bi türlü doğru yöntemi bulamadım.

kolay gelsin
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Mesaj gönderen bgoktas »

-if komutundaki and operatörünü or ile değiştirin...
yada datetimepicker kullanın o zaman tarihi boş geçme diye birşey olmaz...
Kolay gelsin.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

ustam,

datetimepicker kullanmamamın sebebi bu editler doğum tarihleri ile ilgili kişi seçim anında çok uğraşacak diye bu yolu seçtim.

buradaki amacım bu olayı öğrenirsem diğer başka alanlarda da kullanırım diye öğrenmek istedim. kişi ingilizce mesajı anlamayabilir ve sorunu çözemeyebilir diye.

anti parantez mustafa ustamın kod yazma tekniği makalesini okuyorum inşeallah bu hatayı düzeltiriz.

kolay gelsin.
Misafir

Mesaj gönderen Misafir »

Kod: Tümünü seç

   
  if not edit1.text = '' then begin
     
     if not edit2.text = '' then begin
        .
        .
        .
        .
      else application.messagebox(' edit2 boş','Program',0+64);
  else application.messagebox(' edit1 boş','Program',0+64);
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

ustam,

verdiğin şekildede denedim ne mesaj verdi nede tarihsel değer girince veriler geldi sanki butona komut vermemiş gibi öylece o bana baktı ben ona.


bi yerde hata yapıyorum ama nerde bulamıyorum. boş değilse query yi çalıştır diyemedim. boşsa da mesaj ver diyemedim. çok çalışmam gerek çoooook

Kod: Tümünü seç

var
  Tarih1,Tarih2:TDate;
    begin
     if not (edit1.Text ='') then
       begin
     if not (edit2.Text ='') then
       begin
           ibquery1.Close;
           ibquery1.SQL.Clear;
           ibquery1.SQL.Add('select*from ARSIVTESCIL');
           ibquery1.SQL.Add('where D_TARIHI Between :Tarih1 and :Tarih2');
           ibquery1.ParamByName('Tarih1').AsDate:=strtodate(edit11.Text);
           ibquery1.ParamByName('Tarih2').AsDate:=strtodate(edit12.Text);
           ibquery1.Open;
           ibquery1.Last;
           dbgrid1.Visible:=false;
           dbgrid1.Visible:=true;
     if ibquery1.IsEmpty then showmessage('Üzgünüm! Sorguladığınız Kayıtlar Bulunamadı!!!');
       end
       else
       begin
       application.MessageBox('Edit2 Boş','Program',0+64);

end;
end;
end;
bu şekil denedim çalıştı fakat dediğim gibi hiç bi hareket göstermedi.

kolaylıklar dilerim.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

kodları girintili cıkıntılı yazmak okunaklılıgı cok artırır
ama bu bir alıskanlık meselesi
hic alısmamaıs icin angarya gelecektir
elemanın teki delphiye entegre bir expert hazırlamıs saolsun ben hala
surekli bunu kullanıyorum
kod konusunda cok titizimdir bu eklenti benim icin vazgecilmez oldu herkese de tavsiye ederim

viewtopic.php?t=1201&highlight=formatter

yukardaki kodda ise

Kod: Tümünü seç

var
  Tarih1, Tarih2: TDate;
begin
  if (edit1.Text <> '') and (edit2.Text <> '') then
  begin
    ibquery1.Close;
    ibquery1.SQL.Clear;
    ibquery1.SQL.Add('select*from ARSIVTESCIL');
    ibquery1.SQL.Add('where D_TARIHI Between :Tarih1 and :Tarih2');
    ibquery1.ParamByName('Tarih1').AsDate := strtodate(edit11.Text);
    ibquery1.ParamByName('Tarih2').AsDate := strtodate(edit12.Text);
    ibquery1.Open;
    ibquery1.Last;
    dbgrid1.Visible := false;
    dbgrid1.Visible := true;
    if ibquery1.IsEmpty then
      showmessage('Üzgünüm! Sorguladığınız Kayıtlar Bulunamadı!!!');
  end
  else
  begin
    application.MessageBox('Edit2 Boş', 'Program', 0 + 64);

  end;
end;
seklinde calısmasılazım mantık olarak

ben de edit yerine DateTimePicker kullanmanızı oneririm
illa en sagdaki butona gelipte tarih girmek zorunlulugu yok
elle de yazarak editte oldugu gibi tarih girebilirsiniz...
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

Mesaj gönderen Fatih! »

editlerde geçerli bilginin olup olmadığını şu şekilde öğrenebilirsin

Kod: Tümünü seç

var
tarih:tdate;
begin
try
   tarih:=strtodate(edit1.text);
except
   Application.MessageBox('Geçersiz tarih formatı.','Dikkat',mb_ok+mb_iconerror);
    edit1.SetFocus;
  
  end;
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

ustalarım,

sorunu şu şekilde hallettim

Kod: Tümünü seç

var
  Tarih1,Tarih2:TDate;
    begin
      if (edit11.Text<>'') and (edit12.Text<>'') then
        begin
         ibquery1.Close;
         ibquery1.SQL.Clear;
         ibquery1.SQL.Add('select*from ARSIVTESCIL');
         ibquery1.SQL.Add('where D_TARIHI Between :Tarih1 and :Tarih2');
         ibquery1.ParamByName('Tarih1').AsDate:=strtodate(edit11.Text);
         ibquery1.ParamByName('Tarih2').AsDate:=strtodate(edit12.Text);
         ibquery1.Open;
         ibquery1.Last;
         dbgrid1.Visible:=false;
         dbgrid1.Visible:=true;
      if ibquery1.IsEmpty then showmessage('Üzgünüm! '+edit11.Text+' / '+edit12.Text+
      #13'Tarihleri Arası Kayıt Bulunamadı');
        end
        else
        begin
      if not (edit11.Text<>'') then
        begin
          showmessage('Lütfen Editlere Tarih Giriniz');
        end
        else
        begin
      if not (edit12.Text<>'') then
        begin
          showmessage('Lütfen Editlere Tarih Giriniz');
        end
        else
        begin
      if not (edit11.Text<>'') or (edit12.Text<>'') then
        begin
          showmessage('Lütfen Editlere Tarih Giriniz');
        end;
      end;
   end;
 end;
end;
paylaşmak istedim.

yardımlarınızdan dolayı teşekkürlerimle
kolay gelsin
Cevapla