kod aynı ama??

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
mrtyes

kod aynı ama??

Mesaj gönderen mrtyes »

if (radiogroup1.ItemIndex=0) then
begin
with adoquery1 do
begin
close;
sql.Clear;
sql.add('select * from tablo1');
sql.add('where ogrno between'+quotedstr(edit1.Text));
sql.add('and'+ quotedstr(edit4.Text));
//parameters.ParamByName('iogr').Value:=form10.Edit1.Text;
//parameters.ParamByName('sogr').Value:=form10.edit2.Text;
prepared;
open;
end;
if (radiogroup1.ItemIndex=1) then
begin
with adoquery1 do
begin
close;
sql.Clear;
sql.add('select * from tablo1');
sql.add('where sinif like'+ quotedstr(dblookupcombobox1.Text));
prepared;
open;
end;
end;

if (radiogroup1.ItemIndex=2) then
begin
with adoquery1 do
begin
close;
sql.Clear;
sql.add('select * from tablo1');
sql.add('where ograd like'+ quotedstr(edit2.Text));
prepared;
open;
end;
end;

yukarıdaki kodda ogrno alanı çalışıyor ama diğerleri çalışmıyor hatam nerdedir??
mrtyes

Mesaj gönderen mrtyes »

valla arkadaşlar kusura bakmayın böyle göndermezdim ama
ya ado filtermi kullansam acaba sorun yok hata yok anlamadım
dbgridde listeliyor.öğrenci noyu tıkır tıkır ama diğerlerinde tık yok.

başka bir yollamı yapsam
fikir verin kaldım

saygılarımla
Kullanıcı avatarı
mnt
Üye
Mesajlar: 57
Kayıt: 30 Eki 2005 12:58
Konum: Kocaeli

Mesaj gönderen mnt »

sql.add('where ograd like'+ quotedstr(edit2.Text)+'%'); dene...
Mustafa
Kullanıcı avatarı
mnt
Üye
Mesajlar: 57
Kayıt: 30 Eki 2005 12:58
Konum: Kocaeli

Mesaj gönderen mnt »

bu prepared; lar gereksiz gibi görünüyor..
Mustafa
menderes

Mesaj gönderen menderes »

Kolay gelsin kardeş sabahın 7 sinde denedim ve buraya koyuyorum umarım boşuna olmamıştır. Deneme de 1 adet form ve 1 adet datamodule kullanılmıştır.
Form içerisinde; Edit1.Text,Edit2.Text,ComboBox1.Text,RadioGroup1,DBGrid1,BitBtn1(Ara butonu)...
datamodul de de ADOConnection1,ADOQuery1,DataSource1

Kod: Tümünü seç

procedure TForm2.BitBtn1Click(Sender: TObject);//Ara butonu
begin
if DataModule1.ADOQuery1.Active=True then //Tablemiz açık mı
begin
Case RadioGroup1.ItemIndex of   
0:
begin
if (Trim(Edit1.Text)<>'') and (Trim(Edit2.Text)<>'') then
begin
DataModule1.ADOQuery1.Close;
DataModule1.ADOQuery1.SQL.Clear;
DataModule1.ADOQuery1.SQL.Add('select * from tablo2');
DataModule1.ADOQuery1.SQL.Add('where ogrno>=:xio and ogrno<=:xson');
DataModule1.ADOQuery1.Parameters.ParamByName('xio').Value:=StrToInt(Edit1.Text);
DataModule1.ADOQuery1.Parameters.ParamByName('xson').Value:=StrToInt(Edit2.Text);
DataModule1.ADOQuery1.Prepared:=True;
DataModule1.ADOQuery1.Open;
if DataModule1.ADOQuery1.IsEmpty then
begin
ShowMessage('Aradığınız kayıt bulunamadı');
Abort;
end;
end
else
begin
ShowMessage('Edit1 veya Edit2 Boş');
Edit1.SetFocus;
Abort;
end;
end;//0 rın sonu
1:
begin
 if Trim(ComboBox1.Text)<>'' then
begin
DataModule1.ADOQuery1.Close;
DataModule1.ADOQuery1.SQL.Clear;
DataModule1.ADOQuery1.SQL.Add('select * from tablo2');
DataModule1.ADOQuery1.SQL.Add('where sinif Like "'+ComboBox1.Text+'%"');
DataModule1.ADOQuery1.Prepared:=True;
DataModule1.ADOQuery1.Open;
if DataModule1.ADOQuery1.IsEmpty then
begin
ShowMessage('Aradığınız kayıt bulunamadı');
Abort;
end;
end
else
begin
ShowMessage('Sınıf Seçimi Yapılmamış');
ComboBox1.SetFocus;
Abort;
end;
end;//1 in sonu
2:
begin
 if Trim(Edit2.Text)<>'' then
begin
DataModule1.ADOQuery1.Close;
DataModule1.ADOQuery1.SQL.Clear;
DataModule1.ADOQuery1.SQL.Add('select * from tablo2');
DataModule1.ADOQuery1.SQL.Add('where ogradi Like "'+Trim(Edit2.Text)+'%"');
DataModule1.ADOQuery1.Prepared:=True;
DataModule1.ADOQuery1.Open;
if DataModule1.ADOQuery1.IsEmpty then
begin
ShowMessage('Aradığınız kayıt bulunamadı');
Abort;
end;
end
else
begin
ShowMessage('Edit2 boş');
Edit2.SetFocus;
Abort;
end;
end;//2 in sonu
end;//Case sonu
end
else
begin
ShowMessage('Kayıtlar aktif değil');
Edit1.SetFocus;
end;
end;
Kendinize göre ayarlarsınız. ADO filter demişsiniz o sql den daha ağırdır. Hızlı ve kullanışlı olan sql komutlarıdır. Birde prepared ile ilgili demişsiniz o da olayın daha verimli olmasını sağlar. Düzene sokar.
Bir de dost tavsiyesi, bir kodun o an için işliyor olması sizi yanıltmasın. Kullanılmaya başlandıktan bir süre sonra hatalar vermeye başlar neden olduğunu anlamakta zorluk çekebilir ve zor anlara düşebilirsiniz.
O yüzden iyice araştırma yapılması veya böyle forumlarda soru ve cevapları takip edip gerekli faydalar alıncağı kanaatindeyim. Yorum sizin...
Kolay gelsin,
mrtyes

Mesaj gönderen mrtyes »

menderes hocam saolun sorun halloldu.

peki aynı kodları qreport içnde kullanabilirmiyim?

yani istenilen aralığı dbgridde görüntülemek yerine reportta gösterebilirmiyiz.
Kullanıcı avatarı
mnt
Üye
Mesajlar: 57
Kayıt: 30 Eki 2005 12:58
Konum: Kocaeli

Mesaj gönderen mnt »

Prepared bir method değil property dir. Dolayısıyla;
"prepared;" şeklinde kullanmak anlamsız.
Ayrıca Open komutu prepared özelliğini zaten true yapar. Eğer prepared:=True ve Open arasında bir işlem yapmayacaksanız bunları ardarda kullanmakta anlamsız.
Mustafa
Cevapla