query beforepost sorunu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
mahir
Üye
Mesajlar: 82
Kayıt: 11 Mar 2008 12:13

query beforepost sorunu

Mesaj gönderen mahir »

merhabalr.

iki tanew değişkenim var.
birincisi OgrSayi;
ikincisi Kontenjan;
benim istediğim adaoqueryde post işlşeminden evvel yani beforeposta kontrlol yapmak. eğer OgrSayi deferi Kontenjan degerinden büyükdse post işlemini
engellemek.

procedure TForm1.ADOQuery1BeforePost(DataSet: TDataSet);
begin

a:= MessageDlg ('Ogrenci sayısı = '+OgrSayi+ ' , kontenjan = '+Kontenjan+' : ÖĞRENCİ ÇOK FAZLA',mtConfirmation,[mbYes,mbNo],0);
case a of
mrYes : ShowMessage('kaydedildi');
mrCancel: exit; ////////// işte tam burada post işemini yapmak istemiyorum //////////////////////////////////
end;
end;
mcihad
Üye
Mesajlar: 283
Kayıt: 18 Tem 2003 03:28
Konum: Sivas

Re: query beforepost sorunu

Mesaj gönderen mcihad »

Kod: Tümünü seç

Abort;
Bize iyilik yaraşır.
mahir
Üye
Mesajlar: 82
Kayıt: 11 Mar 2008 12:13

Re: query beforepost sorunu

Mesaj gönderen mahir »

acaba yanlış mı kullanıyorum. hala post işleminden çıkamıyorum.
kodlarım şöyle.

Kod: Tümünü seç

 
procedure TForm1.ADOQuery1BeforePost(DataSet: TDataSet);
begin
 if OgrSayi <= Kontenjan then //  kontrol  yapılıyor
  begin
   ShowMessage('Ogrenci sayısı  = '+OgrSayi+ ' , kontenjan = '+Kontenjan)
  end else
  begin
      a:= MessageDlg ('Ogrenci sayısı  = '+OgrSayi+ ' , kontenjan = '+Kontenjan+' : ÖĞRENCİ ÇOK FAZLA',mtConfirmation,[mbNo],0);
      case a of
      //  mrYes :  ShowMessage('kaydedildi');
        mrCancel: begin
                  Abort;  ShowMessage('Kaydetme İşlemi İptal Edildi');
                  end;
       end;
  end;
end;
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: query beforepost sorunu

Mesaj gönderen mkysoft »

Kod: Tümünü seç

    SysUtils.Abort;
komutu ile post işlemini dururabilirsiniz. Yada exception oluşturarak durdurabilirsiniz.
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: query beforepost sorunu

Mesaj gönderen Battosai »

Bilindik yöntemlerle çözülmüyor bu mevzu Posttan kaçış yok bi ara bende denediydim sonuç hüsran....Ama vardır tabi bir hal çaresi....Birde bu tarz kontrolleri POST dan önceki kod satırlarında yapmak daha kullanışlı ve sorun çıkarmaz.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: query beforepost sorunu

Mesaj gönderen aslangeri »

s.a.
ben exception oluşturuyorum

Kod: Tümünü seç

case a of
      //  mrYes :  ShowMessage('kaydedildi');
        mrCancel: begin
                  raise exception.create('kayıt hatası....!');
                  end;
       end;
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
mahir
Üye
Mesajlar: 82
Kayıt: 11 Mar 2008 12:13

Re: query beforepost sorunu

Mesaj gönderen mahir »

bu post işlemi benim kafamı baya ağrıttı. ne yaptıysan yararı olmuyo..!?!? :posting.php?mode=reply&f=2&t=24398#
:roll:

post çalışmadan evvel Ogrno ile kontenjan değişkenlerini kontrol ettiryorum..... bu olay bu kadar basit olması lazım fakat bir yerlerde bir şeyler kaçırıyor olmalıyım.

şart koymadığımız zaman çalışıyor bir sorun yok fakak şart koyduğumuz zaman hiç post yapmıyo. yani Ogrno if (OgrSayi>= Kontenjan) then kısmında
OgrSayi ,kontenjan degerinden küçük olsa bile if dongusune giriyor.

Kod: Tümünü seç

 if  (OgrSayi>= Kontenjan) then //  kontrol  yapılıyor
  begin
    ShowMessage('Mevcut : "'+OgrSayi+'" , kontenjan : "'+Kontenjan+'" , Öğrenci  kaydedilemedi.');
    SysUtils.Abort;
  end ;


database olarak Access 2007 kullanıyorum. kodları yazayım...:D

Kod: Tümünü seç

procedure TForm1.ADOQuery1BeforePost(DataSet: TDataSet);
var
 OgrSayi, seId, SiId ,gunId, Kontenjan:  string;
 begin

  SQLMevcut.close;
  SQLMevcut.SQL.Text:='select  *  from Sinif   where ad ="'+form6.cxDBLookupComboBox2.Text+'"';
  SQLMevcut.open;

  Kontenjan:=  SQLMevcut.FieldByName('kontenjan').AsString;   //KONTENJAN  HESAPLANIYO

  SQLMevcut.Close;
  SQLMevcut.SQL.Text:='select * from seans  where ad ="'+form6.cxDBLookupComboBox3.Text+'"';
  SQLMevcut.Open;

  seId:=SQLMevcut.FieldByName('sirano').AsString;



  SQLMevcut.Close;
  SQLMevcut.SQL.Text:='select * from sinif  where ad ="'+form6.cxDBLookupComboBox2.Text+'"';
  SQLMevcut.Open;

  siId:=SQLMevcut.FieldByName('sirano').AsString;

  SQLMevcut.Close;
  SQLMevcut.sql.clear;
  SQLMevcut.SQL.Text:='select * from kayit where Sinif='+Siid+' and Seans='+ seid;
  SQLMevcut.open;

  OgrSayi:=IntToStr(hesapla.RecordCount);
//   mesela  degerlerim   şöyle :  OgrSayi=2  ,  Kontenjan =14  burada  bile  döngüye  giriyor.

  if  (OgrSayi>= Kontenjan) then //  kontrol  yapılıyor
  begin
    ShowMessage('Mevcut : "'+OgrSayi+'" , kontenjan : "'+Kontenjan+'" , Öğrenci  kaydedilemedi.');
    SysUtils.Abort;
  end ;
end;
mahir
Üye
Mesajlar: 82
Kayıt: 11 Mar 2008 12:13

Re: query beforepost sorunu

Mesaj gönderen mahir »

yukarıda OgrSayi:=IntToStr(hesapla.RecordCount) olan kısmı

Kod: Tümünü seç

OgrSayi:=IntToStr(SQLMevcut.RecordCount);
olacak
Cevapla