Sorgulama !!!

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

Sorgulama !!!

Mesaj gönderen ozcank »

Arkadaşlar;
İki tane DBEdit1.Text ve DBEdit2.Text var bu iki alanı bir Button2 yardımı ile nasıl kontrol ettirebilirim? İki alanı da boş geçmemesi gerekiyor.
Button1 Kayıt için kullanıyorum ve DBEdit1.Text için sorgusu;

procedure TForm5.Button2Click(Sender: TObject);
begin
if DBEdit1.Text='' then
begin
Showmessage('Lütfen Müşteri Kodunu Giriniz.');
DBEdit1.Setfocus;
end
Else
Table1BFIYAT.AsString:=Cedit1.Text;
Table1ADET.AsString:=Cedit2.Text;
Table1TOPTUTAR.AsString:=Cedit3.Text;
Table1.Post;
end;


Bu alanı da üst koda nasıl dahil edebilirim?

if DBEdit2.Text='' then
begin
Showmessage('Lütfen İşlem Kodunu Boş Geçmeyiniz.');
DBEdit2.Setfocus;
end;
Kullanıcı avatarı
mucar
Kıdemli Üye
Mesajlar: 247
Kayıt: 17 May 2005 01:14

Mesaj gönderen mucar »

Kod: Tümünü seç

procedure TForm5.Button2Click(Sender: TObject); 
begin 

if DBEdit1.Text='' then 
begin 
Showmessage('Lütfen Müşteri Kodunu Giriniz.'); 
DBEdit1.Setfocus; 
exit;
end;

if DBEdit2.Text='' then 
begin 
Showmessage('Lütfen İşlem Kodunu Boş Geçmeyiniz.'); 
DBEdit2.Setfocus; 
exit;
end;
 
Table1BFIYAT.AsString:=Cedit1.Text; 
Table1ADET.AsString:=Cedit2.Text; 
Table1TOPTUTAR.AsString:=Cedit3.Text; 
Table1.Post; 

end; 
şeklinde dener misiniz
"Evine bakmaktan aciz olan; ilerici, üç kıtaya hükmeden ecdadın mı gerici?"
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

Kod: Tümünü seç

procedure TForm5.Button2Click(Sender: TObject);
begin
  if DBEdit1.Text='' then
  begin
    Showmessage('Lütfen Müşteri Kodunu Giriniz.');
    DBEdit1.Setfocus;
  end
  Else if DBEdit2.Text='' then
  begin
    Showmessage('Lütfen İşlem Kodunu Boş Geçmeyiniz.');
    DBEdit2.Setfocus;
  end
  else
    Table1BFIYAT.AsString:=Cedit1.Text;
    Table1ADET.AsString:=Cedit2.Text;
    Table1TOPTUTAR.AsString:=Cedit3.Text;
    Table1.Post;
  end;
end;
DeveloperToolKit

..::|YeşilMavi|::..
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

Dolu olsa dahi işlem kodunu geçmiyor kaydetmiyor mesaj verip duruyor.
a_o
Üye
Mesajlar: 84
Kayıt: 18 Eki 2005 04:41
Konum: Tekirdağ

Mesaj gönderen a_o »

mrb hata msjını yazabilirmisiniz?

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

Mesaj gönderen bgoktas »

database tarafında boş geçmeye izin verdirmeyebilirsiniz.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

merhaba,

benimde çalışmamda böyle bir işlem vardı ve ben

Kod: Tümünü seç

if (edit1.text'') or (edit2.text'') then
gibi bir yapı ile bu işi yapmıştım şimdi kodlar elimde tam olarak yok bulursam atarım.

or yerine and kullandığımda olmuyordu. vel hasıl kelam edit1 veya edit2 boş ise mesaj ver yok değilse şu işlemi yop gibi bir yoldu

kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Kod: Tümünü seç

procedure TFormArsivSrg.ArsivSrg_BtnTarihBulClick(Sender: TObject);
var
  tarih1,tarih2:tdate;
  begin
    if (checkbox1.Checked=false) and (checkbox2.Checked=false) then
    begin
      application.MessageBox('Lütfen Bir Seçim Yapınız....','Seçim Uyarısı',MB_OK);
    end
    else
    begin
        if checkbox1.Checked =true then
        begin
            arsivsrgibquery.Close;
            arsivsrgibquery.SQL.Clear;
            arsivsrgibquery.sql.Add('select*from ARSIVTESCIL');
            arsivsrgibquery.SQL.Add('where DOGUM_TARIHI Between :tarih1 and :tarih2');
            arsivsrgibquery.ParamByName('tarih1').AsDate:=jvdateedit2.Date;
            arsivsrgibquery.ParamByName('tarih2').AsDate:=jvdateedit3.date;
            arsivsrgibquery.Open;
            arsivsrgibquery.Last;
      end;

      if checkbox2.Checked =true then
      begin
            arsivsrgibquery.Close;
            arsivsrgibquery.SQL.Clear;
            arsivsrgibquery.SQL.Add('select*from ARSIVTESCIL');
            arsivsrgibquery.SQL.Add('where FRM_DUZ_TARIHI Between :tarih1 and :tarih2');
            arsivsrgibquery.ParamByName('tarih1').AsDate:=jvdateedit2.Date;
            arsivsrgibquery.ParamByName('tarih2').AsDate:=jvdateedit3.Date;
            arsivsrgibquery.Open;
            arsivsrgibquery.Last;
      end;

      if arsivsrgibquery.IsEmpty then
      application.MessageBox('Seçilen Tarihler Arası Kayıt Bulunamadı?','Sorgulama Sonucu',MB_OK);
      end;
bu yapıda yapmak istediğine bir ışık tutabilir.
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

procedure TForm5.Button2Click(Sender: TObject);
begin
if DBEdit1.Text='' then
begin
Showmessage('Lütfen Müşteri Kodunu Giriniz.');
DBEdit1.Setfocus;
end
Else if DBEdit2.Text='' then
begin
Showmessage('Lütfen İşlem Kodunu Boş Geçmeyiniz.');
DBEdit2.Setfocus;
end
else
Table1BFIYAT.AsString:=Cedit1.Text;
Table1ADET.AsString:=Cedit2.Text;
Table1TOPTUTAR.AsString:=Cedit3.Text;
Table1.Post;
end;
end;

Aslında bu kod tam istediğim gibi fakat Setfocus da takılıyor bunu çözemedim.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Kod: Tümünü seç

procedure TFormRaporSrg.RprSrg_BtnRaporBulClick(Sender: TObject);
var
  rno1,rno2:string;
  begin
    if edit4.Text='' then
    begin
      application.MessageBox('Lütfen Birinci Kutuyu Boş Geçmeyiniz','Boş Alan Uyarısı',MB_OK);
      edit4.SetFocus;
    end
    else
    begin
    if edit5.Text ='' then
    begin
    application.MessageBox('Lütfen İkinci Kutuyu Boş Geçmeyiniz','Boş Alan Uyarısı',MB_OK);
    edit5.SetFocus;
    end
    else
    begin
        raporsrgibquery.Close;
        raporsrgibquery.SQL.Clear;
        raporsrgibquery.SQL.Add('select*from RAPORLAR');
        raporsrgibquery.SQL.Add('Where RAPOR_NO Between :rno1 and :rno2');
        raporsrgibquery.SQL.Add('order by RAPOR_NO');
        raporsrgibquery.ParamByName('rno1').AsString:=edit4.Text;
        raporsrgibquery.ParamByName('rno2').AsString:=edit5.Text;
        raporsrgibquery.Open;
        raporsrgibquery.Last;
    if raporsrgibquery.IsEmpty then
      showmessage('Aradığınız Kayıtlar Bulunamadı');
    end;
  end;
end;
@ozcank ustam yukarıdaki kodu denedim kendi çalışmamda ve sayende bende eklemiş oldum koduma (unutmuşum böyle bir şeyi). çalışıyor ve istediğin gibi birinci kutu boşsa uyarıyor ve setfocus oluşuyor, ikinci boş ise uyarıyor ve setfocus oluşuyor dilersen iki editde boş ise diye bir kod daha ekleyerek ikiside boş ise mesaj verdirebilirsin

kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Kod: Tümünü seç

procedure TFormRaporSrg.RprSrg_BtnRaporBulClick(Sender: TObject);
var
  rno1,rno2:string;
  begin
    if (edit4.Text ='') and (edit5.Text ='') then
    begin
      application.MessageBox('Lütfen Kutuları Boş Geçmeyiniz','Boş Alan Uyarısı',MB_OK);
      edit4.SetFocus;
     end
     else
     begin
       if edit4.Text='' then
       begin
         application.MessageBox('Lütfen Birinci Kutuyu Boş Geçmeyiniz','Boş Alan Uyarısı',MB_OK);
         edit4.SetFocus;
       end
       else
       begin
         if edit5.Text ='' then
         begin
           application.MessageBox('Lütfen İkinci Kutuyu Boş Geçmeyiniz','Boş Alan Uyarısı',MB_OK);
           edit5.SetFocus;
         end
         else
         begin
           raporsrgibquery.Close;
           raporsrgibquery.SQL.Clear;
           raporsrgibquery.SQL.Add('select*from RAPORLAR');
           raporsrgibquery.SQL.Add('Where RAPOR_NO Between :rno1 and :rno2');
           raporsrgibquery.SQL.Add('order by RAPOR_NO');
           raporsrgibquery.ParamByName('rno1').AsString:=edit4.Text;
           raporsrgibquery.ParamByName('rno2').AsString:=edit5.Text;
           raporsrgibquery.Open;
           raporsrgibquery.Last;
         if raporsrgibquery.IsEmpty then
           showmessage('Aradığınız Kayıtlar Bulunamadı');
         end;
       end;
     end;
end;
son hali iki edit de boş ise uyarı veriyor ve sonra sırası ile gidiyor.
kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba,
Dbedit1 ve Dbedit2 yi girişe zorlamak için bir butonla kontrol yerine bu iki bileşenin Onexit olayını neden kullanmıyorsunuz? Girişi onexit ile kontrol edip sadece kayıt kısmını butonla yaparsınız.
Aşağıdaki kodu dbedit1 için yazdıktan sonra form kısmında shift tuşunu basılı tutarak dbedit1 ve dbedit2 yi seçerek onexit olayına aşağıdaki procedure yi seçersiniz. Yani bir olayla her iki bileşeni de kontrol etmiş olursunuz.

Kod: Tümünü seç

procedure TForm1.DBEdit1Exit(Sender: TObject);
var
bilesen:tdbedit;
begin
           bilesen:=sender as tdbedit;
           if bilesen.EditText='' then
             begin
                showmessage ('Bu alanı bos geçemezsiniz. ');
                 bilesen.SetFocus;

             end;

end;

Kolay gelsin.
menderes

Mesaj gönderen menderes »

kolay gelsin!
onexit olayı sadece izlemek için geldiyse sorun çıkartabilir.
Birde genelde ben önce boş değilse kontrolünü uygularım,

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
if (DBEdit1.Text<>'') and (DBEdit2.Text<>'') then//
begin
//Buraya da yapmak istediğiniz kodları yazınız
ShowMessage('Hoş Geldiniz');
end
else
begin
ShowMessage('Eksik Bilgi Girişi');
DBEdit1.SetFocus;
Abort;
end;
end;
veya hangi DBEdit i boş geçmişse

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
if DBEdit1.Text<>'' then// and (DBEdit2.Text<>'') then
begin
if DBEdit2.Text<>'' then
begin
//Buraya da yapmak istediğiniz kodları yazınız
ShowMessage('Hoş Geldiniz');
end
else
begin
ShowMessage('DBEdit2 Boş');
DBEdit2.SetFocus;
Abort;
end;
end
else
begin
ShowMessage('DBEdit1 boş');
DBEdit1.SetFocus;
Abort;
end;
end;
Aynı işlemi Edit lerle yapmak istersek,

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
if (Trim(Edit1.Text)<>'') and (Trim(Edit2.Text)<>'') then
begin
//Buraya da yapmak istediğiniz kodları yazınız
ShowMessage('Hoş Geldiniz');
end
else
begin
ShowMessage('Eksik bilgi girişi');
Edit1.SetFocus;
Abort;
end;
end;
veya

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
if Trim(Edit1.Text)<>'' then // Boşlukları atmak için Trim kullanıyoruz, boşluk tuşuna basıp geçmemesi için
begin
if Trim(Edit2.Text)<>'' then
begin
//Buraya da yapmak istediğiniz kodları yazınız
ShowMessage('Hoş Geldiniz');
end
else
begin
ShowMessage('Edit2 Boş');
Edit2.SetFocus;
Abort;
end;
end
else
begin
ShowMessage('Edit1 boş');
Edit1.SetFocus;
Abort;
end;
end;
kolay gelsin....
En son menderes tarafından 26 Eki 2005 03:46 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

Bu şekilde kullanıyorum ama Abort da hata veriyor;


[Error] ISILGIRIS2.pas(352): Statement expected, but expression of type 'Integer' found


procedure TForm5.Button2Click(Sender: TObject);
begin
if DBEdit1.Text<>'' then
begin
if DBEdit30.Text<>'' then
begin
Table1BFIYAT.AsString:=Cedit1.Text;
Table1ADET.AsString:=Cedit2.Text;
Table1TOPTUTAR.AsString:=Cedit3.Text;
Table1.Post;
end
else
begin
ShowMessage('Lütfen İşlem Kodunu Boş Geçmeyiniz !!!');
DBEdit30.SetFocus;
Abort;
end;
end
else
begin
ShowMessage('Lütfen Firma Kodunu Boş Geçmeyiniz !!!');
DBEdit1.SetFocus;
//Abort;
end;
end;
menderes

Mesaj gönderen menderes »

ozcank yazdı:Bu şekilde kullanıyorum ama Abort da hata veriyor;
[Error] ISILGIRIS2.pas(352): Statement expected, but expression of type 'Integer' found
Table1BFIYAT.AsString:=Cedit1.Text;
Table1ADET.AsString:=Cedit2.Text;
Table1TOPTUTAR.AsString:=Cedit3.Text;
Sanıyorum burada integer tanımlanmış bölümü string olarak veri girdirmeye çalışıyorsunuz.
Bence Table1ADET.AsString yerine
table1.FieldByName('ADET').AsInteger:=StrToInt(Cedit2.Text);
eğer bu alan string tanımlı ise
table1.FieldByName('ADET').AsString:=Cedit2.Text;
gibi ,
sanıyorum tablenin içerisine fieldleri eklemişsiniz, bence bu hızı düşürür.
Yani table ye çift tıklayıp gelen pencereye add all fields yapılıpta eklenen alanlar.
Kolay gelsin
Cevapla