procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
begin
table2.open;
Table2.first;
ComboBox1.Items.Clear;
while not table2.eof do
begin
combobox1.Items.Add(table2.fieldbyname('ad').asstring);
table2.NEXT;
end;
table2.first;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i,sayit,k:integer;
a:string;
begin
table2.First;
while not table2.Eof do
begin
i:=0;
a:=table2.fieldbyname('ad').AsString;
showmessage('Aranacak Ogretmen Adı:'+a);
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select count(ogretmenad) as sayi from data');
query1.SQL.Add('where ogretmenad='''+a+'''');
query1.Open;
sayit:=query1.fieldbyname('sayi').AsInteger;
showmessage('Ogretmen Sayısı: '+inttostr(sayit));
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select * from ogretmen');
query1.SQL.Add('where ad='''+a+'''');
query1.Open;
k:=query1.FieldByName('kontenjan').AsInteger;
showmessage('Kontenjan Miktarı: '+inttostr(k));
if sayit=k then
begin
showmessage(inttostr(sayit)+'='+inttostr(k)+'Eşit Combodan Silinecek');
for i:=0 to combobox1.Items.Count do
begin
if query1.FieldByName('ad').AsString=combobox1.Items[i] then
begin
combobox1.Items.Delete(i);
table1.Next;
showmessage('Silinde');
end;
end;
end
else
ShowMessage('normal');
table2.Next;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
c:string;
begin
c:=extractfilepath(Application.ExeName);
query1.DatabaseName:=c;
table1.DatabaseName:=c;
table2.DatabaseName:=c;
table1.Open;
table2.Open;
end;
end.
sorunun nerden kaynaklandığını anlatayım..eğer kayıtsayısı ile kontenjan eşit olduğu zamanda silme işlemi yapıyordu ve combodaki items değeri azalıyordu 2. kere döngüye girdikten sonra sorun çıkartıyordu.bunu aşmak için tamamıyle ters bir yol izledim ve kayıtı table dan çağırdım ona göre işlem yaptırdım.dikkat ederseniz table için döngü açtım.ve şartlar uyduğu zaman kayıtı bir döngü açarak combounun tüm itemlerinde aratarak buşdurdum ve combodan sildim daha sonra döngüyü en başa dönün ce sıfıra eşitledim ve başa sardırdım ki comboda yine elamanları 0 dan başlayarak arasın.biraz uzun yol oldu geldi ama başka yoları vardır elbette onları da düşündüm ama vaktim yok yazmaya..kolay gelsin iyi çalışmalar.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
buradaki problem sanırım form cerate koyduğumuz koddan kaynaklanıyor
çünkü kodu 2.bir buton açarak içine yazdım ve programı çalıştırdım program çalıştı.ama 3.butonu çalıştırdığımda hata mesajı veriyor