Sql veri karşılaştırma
Sql veri karşılaştırma
iyi günler,sizlere delphide kullanılmak üzere bir soru sormak istiyorum.
Query1.SQL.Text:='Select Count(ogretmenad) From data Where ogretmenad="'+Combobox1.Text+'"';
query1.Open;
sayi:=Query1.fields[0].AsInteger;
Query1.SQL.Text:='Select * from ogretmen where ad="'+combobox1.Text+'"';
query1.open;
if sayi=Query1.fieldbyName('kontenjan').asInteger Then
ShowMessage('Kontenjan Doldu')
benim böyle bir sql kodum var bunu combobox ın onclick olayına yazdım ve işlem yaptırıyorum.Benim istediğim bu kodu formun creatine uyarlamak ve programa girildiğinde combobox1 deki isimleri veritabanı ile karşılaştırıp eşit olan varsa onu comboboxtan silsin.
yardımlarınız için şimdiden teşekkürler.
Query1.SQL.Text:='Select Count(ogretmenad) From data Where ogretmenad="'+Combobox1.Text+'"';
query1.Open;
sayi:=Query1.fields[0].AsInteger;
Query1.SQL.Text:='Select * from ogretmen where ad="'+combobox1.Text+'"';
query1.open;
if sayi=Query1.fieldbyName('kontenjan').asInteger Then
ShowMessage('Kontenjan Doldu')
benim böyle bir sql kodum var bunu combobox ın onclick olayına yazdım ve işlem yaptırıyorum.Benim istediğim bu kodu formun creatine uyarlamak ve programa girildiğinde combobox1 deki isimleri veritabanı ile karşılaştırıp eşit olan varsa onu comboboxtan silsin.
yardımlarınız için şimdiden teşekkürler.
Yapmak istediğinizi anlamış değilim.biraz daha açarsanız yardımcı olucaz.
tablonuz ney veritabanınız ney alanlarınız ney neyi nerden istiyorsunuz vs. gibi.
tablonuz ney veritabanınız ney alanlarınız ney neyi nerden istiyorsunuz vs. gibi.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
İyi günler
konuyu biraz daha açayım o zaman.
yukarıdaki gönderdiğim örnek şöyle çalışıyor.program açıldığında ogretmen isimli veritabanındaki ad isimli alandaki bilgiler combobox1 e ekleniyor. Bende comboboxtan bir kişiyi seçtiğimde bu kişiye ait olan kayıtları data veritabanındaki ogretmenad alanlarına göre topluyor ve topladığı rakamı ogretmen isimli veribanında bulunan kontenjan alanındaki rakamla karşılaştırıyor ve eğer data veritabaından topladığı rakam ile ogretmen veritabaındaki kontenjandaki rakam eşit olursa kontenjan dolu diyerek mesajımızı bildiriyor.
benim istediğim bunu comboboxtan seçtiğimiz kişiye göre değilde.Programa girişte comboboxta bulunan kayıtları kontrol etsin ve eşit olanları comboboxtan temizlesin.
konuyu biraz daha açayım o zaman.
yukarıdaki gönderdiğim örnek şöyle çalışıyor.program açıldığında ogretmen isimli veritabanındaki ad isimli alandaki bilgiler combobox1 e ekleniyor. Bende comboboxtan bir kişiyi seçtiğimde bu kişiye ait olan kayıtları data veritabanındaki ogretmenad alanlarına göre topluyor ve topladığı rakamı ogretmen isimli veribanında bulunan kontenjan alanındaki rakamla karşılaştırıyor ve eğer data veritabaından topladığı rakam ile ogretmen veritabaındaki kontenjandaki rakam eşit olursa kontenjan dolu diyerek mesajımızı bildiriyor.
benim istediğim bunu comboboxtan seçtiğimiz kişiye göre değilde.Programa girişte comboboxta bulunan kayıtları kontrol etsin ve eşit olanları comboboxtan temizlesin.
şimdi biraz daha anladım o zaman şöyle yapacaksın bir döngü açıcaksın
burda teker teker combo içindeki tüm itemleri teker teker dener .
Kod: Tümünü seç
var
i:integer;
begin
for i:=0 to combobox1.items.count-1 do
begin
Query1.SQL.Text:='Select Count(ogretmenad) From data Where ogretmenad="'+combobox1.items[i]+'"';
query1.Open;
sayi:=Query1.fields[0].AsInteger;
Query1.SQL.Text:='Select * from ogretmen where ad="'+combobox1.items[i]+'"';
query1.open;
if sayi=Query1.fieldbyName('kontenjan').asInteger Then
ShowMessage('Kontenjan Doldu')
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
sayın vedatkaba
yardımınız için tşk.
verdiğiniz koda göre işlem yaptırdım,işlem sonunda mesela comboboxta birden fazla kayıt eşit ise her kayıt için ayrı ayrı şhow message veriyor.
bunun yerine işlem sonunda showmessage yerine eşit olan kayıtları comboboxtan hiçbir mesaj vermeden silen bir komut yazmamız lazım.Bunu nasıl yapabiliriz.
yardımınız için tşk.
verdiğiniz koda göre işlem yaptırdım,işlem sonunda mesela comboboxta birden fazla kayıt eşit ise her kayıt için ayrı ayrı şhow message veriyor.
bunun yerine işlem sonunda showmessage yerine eşit olan kayıtları comboboxtan hiçbir mesaj vermeden silen bir komut yazmamız lazım.Bunu nasıl yapabiliriz.
onu şöyle yapcaz mesela comboboxta o kendisi döngüyle her bir elemanı tekler teker seçmekte showmessage yerine
bu iki komutta comboboxtan itemsleri siler ama combodaki veriler veritabanında kayıtlımı onunla ilgili bir ibare göremedim yazdıklarınızda.eğer veritabanında kayıtlı ise combo daki bilgiler showmessage yerine o kaydı silecek komutu yazarsınız olur. ki burda ki komutta amacımız seçilen kayıt eğer eşitse sil değilse silmez zaten.benim anlamadığım bir nokta eğer böyle olmazsa en son yazdığını komutun tamamını buraya yazmanızı rica ediyorum ne yaptığımızı nasıl yaptığınızı anlamak açısından.
Kod: Tümünü seç
combobox1.DeleteSelected;
combobox1.Items.Delete(combobox1.ItemIndex);
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
kod aşağıdadır.Ama silme işlemini malesef yapmıyor.
Bu arada comboboxın aldığı bilgiler veritabanından alınmıştır.Silme işlemi sadece comboboxtan olacak veritabanından değil.
Not: Kodları [ code ] [ /code ] tagları içinde ve bloklu yazalım
edit rsimsek
Bu arada comboboxın aldığı bilgiler veritabanından alınmıştır.Silme işlemi sadece comboboxtan olacak veritabanından değil.
Kod: Tümünü seç
var
i,sayi:integer;
begin
for i:=0 to ComboBox1.items.count-1 do
begin
Query1.SQL.Text:='Select Count(ogretmenad) From data Where ogretmenad="'+ComboBox1.items[i]+'"';
query1.Open;
sayi:=Query1.fields[0].AsInteger;
Query1.SQL.Text:='Select * from ogretmen where ad="'+ComboBox1.items[i]+'"';
query1.open;
if sayi=Query1.fieldbyName('kontenjan').asInteger Then
combobox1.DeleteSelected;
combobox1.Items.Delete(combobox1.ItemIndex);
end;
end;

Query1.SQL.Text:='Select Count(ogretmenad) From data Where
ogretmenad="'+ComboBox1.items+'"';
query1.Open;
sayi:=Query1.fields[0].AsInteger;///
if sayi=Query1.fieldbyName('kontenjan').asInteger Then //
kodu düzenledim böyle deneyin..
ogretmenad="'+ComboBox1.items+'"';
query1.Open;
sayi:=Query1.fields[0].AsInteger;///
burda seçilenlerden alan indexi 0 olan veriyi sayi değişkenine atıyorsunuz.yani öğretmen sayısı
if sayi=Query1.fieldbyName('kontenjan').asInteger Then //
burdada kontenjan adlı alanın verisiyle karşılaştırma yapmışsınız..
Kod: Tümünü seç
var
i,sayi:integer;
begin
for i:=0 to ComboBox1.items.count-1 do
begin
Query1.SQL.Text:='Select Count(ogretmenad) From data Where ogretmenad="'+ComboBox1.items[i]+'"';
query1.Open;
sayi:=Query1.fields[0].AsInteger;
Query1.SQL.Text:='Select * from ogretmen where ad="'+ComboBox1.items[i]+'"';
query1.open;
if sayi=Query1.fieldbyName('kontenjan').asInteger Then
begin
combobox1.Items.Delete(combobox1.ItemIndex);
end else showmessage('herşey normal');
end;
end;
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Kod: Tümünü seç
var
i,sayi:integer;
begin
for i:=0 to ComboBox1.items.count-1 do
begin
combobox1.itemindex:=i;
Query1.SQL.Text:='Select Count(ogretmenad) From data Where ogretmenad="'+ComboBox1.items[combobox1.itemindex]+'"';
query1.Open;
sayi:=Query1.fields[0].AsInteger;
Query1.SQL.Text:='Select * from ogretmen where ad="'+ComboBox1.items[combobox1.itemindex]+'"';
query1.open;
if sayi=Query1.fieldbyName('kontenjan').asInteger Then
begin
combobox1.Items.Delete(combobox1.ItemIndex);
end else showmessage('herşey normal');
end;
end;
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
ben doğru şekilde çalıştırıyorum nasıl yaptığınızı anlamış değilim.
size örnek olark bir çalışma gönderiyorum bakın aşağıda bir butona basınca 0-20 ye kadar kayıt ekliyor ve bir butona basınca 20-0 tersten siliyor..
yukarıdaki kod için 2 buton bir combobox koyun ve bir deneyin..sizde göreceksiniz tamamı silinmiş.tablonuzda ki alanları yazpısını bilmediğim için bir yorum da yapamıyorum .
en son haliyle bir daha yoolarmısınız birde comboboxun içine kayıtları eklerken hangi kodu kullandınız onu da yazabirlirmisiniz.
size örnek olark bir çalışma gönderiyorum bakın aşağıda bir butona basınca 0-20 ye kadar kayıt ekliyor ve bir butona basınca 20-0 tersten siliyor..
Kod: Tümünü seç
procedure TForm1.ekleClick(Sender: TObject);
var
i:integer;
begin
for i:=0 to 20 do
begin
combobox1.Items.Add(inttostr(i));
end;
end;
procedure TForm1.silClick(Sender: TObject);
var
i:integer;
begin
for i:=20 downto 0 do
begin
combobox1.ItemIndex:=i;
combobox1.Items.Delete(combobox1.ItemIndex);
end;
en son haliyle bir daha yoolarmısınız birde comboboxun içine kayıtları eklerken hangi kodu kullandınız onu da yazabirlirmisiniz.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************