query beforepost sorunu
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
query beforepost sorunu
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;
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;
Re: query beforepost sorunu
acaba yanlış mı kullanıyorum. hala post işleminden çıkamıyorum.
kodlarım şöyle.
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;
Re: query beforepost sorunu
Kod: Tümünü seç
SysUtils.Abort;
Re: query beforepost sorunu
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.
Re: query beforepost sorunu
s.a.
ben exception oluşturuyorum
kolay gelsin.
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;
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Re: query beforepost sorunu
bu post işlemi benim kafamı baya ağrıttı. ne yaptıysan yararı olmuyo..!?!? :posting.php?mode=reply&f=2&t=24398#

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.
database olarak Access 2007 kullanıyorum. kodları yazayım...

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...

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;
Re: query beforepost sorunu
yukarıda OgrSayi:=IntToStr(hesapla.RecordCount) olan kısmı
olacak
Kod: Tümünü seç
OgrSayi:=IntToStr(SQLMevcut.RecordCount);