seçeneğe göre listelemek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
yakliii
Üye
Mesajlar: 12
Kayıt: 15 Nis 2006 09:39

seçeneğe göre listelemek

Mesaj gönderen yakliii »

slm arkadaşlar bmn şöyle bi sorum var. Yaptığım projede şöyle bi form var.

Resim

Resimde de görüldüğü gibi sol tarafta eksik olan evrak diye 3 seçenek var bunlardan hangisini seçerse ve listele derse kişi onlar listelensin istiyorum. Griddeki 1 ve 0 lar ise var yok hesabı. 1 ler var, 0 lar yok.

Örneğin sol taraftan öğrenci belgesini seçtim ve listele butonuna bastığımda Gridte OGR_BELGE alanı 0 olanlar listelensin.

Tabloyu oluştururken bu alanları 'N' olarak belirledim.Bu alanları integer yapıyorum olmuyor. Srting yapıyorum olmuyor anlamadım gitti.Biligim kadarıyla kod yazmaya çalıştım ama olmadı. Kodlarda bu:

procedure TForm23.BitBtn1Click(Sender: TObject);
var
a:integer;
begin

a:=radiogroup1.items.strings[radiogroup1.itemindex];
query1.Close;
query1.SQL.clear;
query1.SQL.Add('select * from ogrenci.db');
query1.SQL.Add(' where a=0');
query1.Open;
end;

end.

Verdiği hata da şu: Incompatible typs: 'integer' and 'string'


Şimdi ben bu işin içinden nasıl çıkarım?
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

Sizin nasıl yapmaya çalıştığınızı anlayamadım, kendi yöntemimi yazdım;

Kod: Tümünü seç

var
  sorgu:String;
begin
  if RadioGroup1.ItemIndex=-1 Then //Seçilmemişse
  begin
    ShowMessage('Seçim yapın');
    exit;//alttaki kodlar işlemesin
  end;


  sorgu:='Select * from ogrenci where';//her sorguda olacak olan kısım.

  if RadioGroup1.ItemIndex=0 Then sorgu:=sorgu+' N_CUZ_OR';  //
  if RadioGroup1.ItemIndex=1 Then sorgu:=sorgu+' OGR_BELGE';// Bunlar değişen kısım.
  if RadioGroup1.ItemIndex=2 Then sorgu:=sorgu+' VESIKALIK'; //
  sorgu:=sorgu+'='+QuotedStr('0');//=0 kontrolü de hepsinde olacak.
  
  query1.Close;
  query1.SQL.clear;
  query1.SQL.Add(sorgu);
  query1.Open;

end;
Kolay gelsin.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7604
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

a değişkenini integer tanımlamışsınız, string bir değer atamaya çalışıyorsunuz aşağıda. Delphi buna kızar.

var
a : string;

yaparsanız düzelir.

Bu arada "a" değişkenini hiçbir yerde kullanmamışsınız???

Ayrıca like diye aratırsanız istediğiniz kodlar ve mantık daha önce çok konuşuldu.

Kolay gelsin.
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

a:integer; yerine a:string; yazdığınızda Incompatible typs: 'integer' and 'string' hatası vermez. Fakat sorgu cümleniz yanlış olacağı için yine hata verir. Çünkü, sizin yazmış olduğunuz cümleye göre; a adındaki alanın 0'a eşit olup olmaması kontrol edilmeye çalışılacak. Fakat a adında bir alanınız yok.

Benim cümlemi biraz daha açıklayayım;
Sorguyu adım adım oluşturuyorum.
Önce neyi sorgulayacak olursak olalım yer alması gereken kelimeler;

Kod: Tümünü seç

Sorgu:='Select * from ogrenci where';
Where'in yanına alan adını ve değerini yazmamız lazım. Alan adı değişen bir şey olduğu için, bunu if'lerle kontrol ederek eklettim.

Kod: Tümünü seç

if RadioGroup1.ItemIndex=0 Then sorgu:=sorgu+' N_CUZ_OR';
  if RadioGroup1.ItemIndex=1 Then sorgu:=sorgu+' OGR_BELGE';
  if RadioGroup1.ItemIndex=2 Then sorgu:=sorgu+' VESIKALIK';
Son olarak da alanın eşit olması gereken değeri ekledim:

Kod: Tümünü seç

sorgu:=sorgu+'='+QuotedStr(0);
Kolay gelsin...
yakliii
Üye
Mesajlar: 12
Kayıt: 15 Nis 2006 09:39

Mesaj gönderen yakliii »

çok teşekkür ederim arkadaşlar sağolun
Cevapla