sorgulama yaparken querynin yenilenememesi...
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
sorgulama yaparken querynin yenilenememesi...
Merhaba arkadaşlar
formlar arası bi sorunum var. 1. formdan sayısal alanlı bi meslek seçiyorum. 2. formda veri tabanından o meslekleri seçip gösteriyorum. daha sonra 1.forma dönüp sözel alanlı bi meslek seçip 2.formda göster deyince göstermiyor. daha önce sayısal olarak filtrelediğim için sözel alanları göstermiyor. fakat yaptığım sorguyu tekrar tümünü listelemesi için kod yazıyorum fakat yapmıyor. hep sayısal alanları gösteriyor. 2. formun açılışında query inin active ni false => true yapıyorum. daha sonra tüm kayıtları getir diyorum ama getirmiyor. yine gidip sadece sayısal alanları getiriyor. nasıl düzeltebilirim bu sorunu?
(veritabanım access ve ADO yla bağlanıyorum. )
herkese ii çalışmalar
formlar arası bi sorunum var. 1. formdan sayısal alanlı bi meslek seçiyorum. 2. formda veri tabanından o meslekleri seçip gösteriyorum. daha sonra 1.forma dönüp sözel alanlı bi meslek seçip 2.formda göster deyince göstermiyor. daha önce sayısal olarak filtrelediğim için sözel alanları göstermiyor. fakat yaptığım sorguyu tekrar tümünü listelemesi için kod yazıyorum fakat yapmıyor. hep sayısal alanları gösteriyor. 2. formun açılışında query inin active ni false => true yapıyorum. daha sonra tüm kayıtları getir diyorum ama getirmiyor. yine gidip sadece sayısal alanları getiriyor. nasıl düzeltebilirim bu sorunu?
(veritabanım access ve ADO yla bağlanıyorum. )
herkese ii çalışmalar
Merhaba
goruntule=> query,
T_PUAN08=> meslekler tablom
procedure nin başında bunu kullanıyorum. kayıtların tamamını getirsin die. ondan sonra
Bunu yazdıktan sonra ; dışardan girilen değerin(soz08.text,say08.text) 3 eksiğinden 100 e kadar olan alanları getircek.
a değişkeninde meslekler var.
ypuanturu=> sözel, sayısal alanlar
Alan=> dışardan girilen değerlere karşılaştırılıp sıralama yaptırılıyor.
ii çalışmalar
goruntule=> query,
T_PUAN08=> meslekler tablom
procedure nin başında bunu kullanıyorum. kayıtların tamamını getirsin die. ondan sonra
Kod: Tümünü seç
veri.goruntule.Active:=False;
veri.goruntule.active:=true;
veri.goruntule.Close;
veri.goruntule.SQL.Clear;
veri.goruntule.SQL.Add('select * from T_PUAN08');
veri.goruntule.Open;
a değişkeninde meslekler var.
ypuanturu=> sözel, sayısal alanlar
Alan=> dışardan girilen değerlere karşılaştırılıp sıralama yaptırılıyor.
Kod: Tümünü seç
if a<>'' then a:=' where '+a+' order by Alan '
else a:=' order by Alan ';
str:='select * from T_PUAN08 '+a;
veri.goruntule.Close;
veri.goruntule.SQL.Clear;
veri.goruntule.SQL.Add(str);
veri.goruntule.Open;
p:=''; r:='';
akil1:=0;akil2:=0;
veri.goruntule.First;
while not veri.goruntule.Eof do
begin
sayi08:=(veri.goruntuleAlan.AsFloat);
if adim2.soz08.Text<>'0' then
begin
if veri.goruntuleypuanturu.AsString='söz' then
begin
soz08alt:=(strtofloat(adim2.soz08.Text)-3);
soz08ust:=100;
if ((sayi08)>(soz08alt)) and ((sayi08)<(soz08ust)) then
begin
if akil1=0 then
begin
if p='' then r:='' else r:=' or ';
p:=p + r +' (((Alan>'+ floattostr(soz08alt)+') and (Alan<'+floattostr(soz08ust)+')) and (ypuanturu='+'''söz'''+'))';
akil1:=1;
end;
end;
end;
end;
if adim2.say08.Text<>'0' then
begin
if veri.goruntuleypuanturu.AsString='say' then
begin
say08alt:=(strtofloat(adim2.say08.Text)-3);
say08ust:=100;
if ((sayi08)>(say08alt)) and ((sayi08)<(say08ust)) then
begin
if akil2=0 then
begin
if p='' then r:='' else r:=' or ';
p:=p + r +' ((Alan>'+ floattostr(say08alt)+' and Alan<'+floattostr(say08ust)+') and (ypuanturu='+'''say'''+'))';
akil2:=1;
end;
end;
end;
veri.goruntule.Next;
end;
veri.goruntule.Filter:=p;
veri.goruntule.Filtered:=true;
label100.Caption:=inttostr(veri.goruntule.RecordCount)+' kayıt bulunmuştur!';
merhaba;
Burada bunlara gerek yok;
veri.goruntule.Active:=False; veri.goruntule.active:=true;
zaten bir altında Close yapmışsınız.
Yukardaki kodun altında,
bu aşağıdaki kod var ise; yukarıdaki kodu dikkate almayacaktır.Çünkü aynı Query;aşağıdaki kod ta 'a' değeri nedir?+ kodta değer de atanmıyor.
En güzeli 'Open' lerin altına
yazıp SQL kodunuzu görmeniz,size faydası olacaktır
iyi günler..
Kod: Tümünü seç
veri.goruntule.Active:=False;
veri.goruntule.active:=true;
veri.goruntule.Close;
veri.goruntule.SQL.Clear;
veri.goruntule.SQL.Add('select * from T_PUAN08');
veri.goruntule.Open;
Bunu yazdıktan sonra ; dışardan girilen değerin(soz08.text,say08.text) 3 eksiğinden 100 e kadar olan alanları getircek.
a değişkeninde meslekler var.
ypuanturu=> sözel, sayısal alanlar
Alan=> dışardan girilen değerlere karşılaştırılıp sıralama yaptırılıyor.
Kod:
if a<>'' then a:=' where '+a+' order by Alan '
else a:=' order by Alan ';
str:='select * from T_PUAN08 '+a;
veri.goruntule.Close;
veri.goruntule.SQL.Clear;
veri.goruntule.SQL.Add(str);
veri.goruntule.Open;
veri.goruntule.Active:=False; veri.goruntule.active:=true;
zaten bir altında Close yapmışsınız.
Kod: Tümünü seç
veri.goruntule.Close;
veri.goruntule.SQL.Clear;
veri.goruntule.SQL.Add('select * from T_PUAN08');
veri.goruntule.Open;
bu aşağıdaki kod var ise; yukarıdaki kodu dikkate almayacaktır.Çünkü aynı Query;aşağıdaki kod ta 'a' değeri nedir?+ kodta değer de atanmıyor.
Kod: Tümünü seç
if a<>'' then a:=' where '+a+' order by Alan '
else a:=' order by Alan ';
str:='select * from T_PUAN08 '+a;
Kod: Tümünü seç
ShowMessage(veri.goruntule.Text)
iyi günler..
merhaba
a ya meslekleri atadım. o kod çok fazla uzundu hemde karışıktı. o yüzden yazmadım. ama doğru atadığından eminim. showmessage larla kontrol ettirdim.
formların açılışlarında onshow olaylarında da
kodunu yazdım. hatta bulduğu kayıt sayısını göstersin dedim. onu da on show olayında yaptım. yaklaşık 4000 kaydım var. ilk sayısal dan meslek seçtiğim zaman form2 nin on show olayındaki kodda 4000 olarak gösteriyor. ama form1 e geri dönüp sözelden bir alan seçtiğim zaman bana sayısal mesleklerin kayıt sayısını gösteriyor. tüm kayıtların sayısını göstermiyor. yani query hiç bi şekilde kendisini yenilemiyor. nie böyle yaptığını anlamadım bende
bana bu konuda yardımcı olursanız sevinirim.
ii çalışmalar
a ya meslekleri atadım. o kod çok fazla uzundu hemde karışıktı. o yüzden yazmadım. ama doğru atadığından eminim. showmessage larla kontrol ettirdim.
formların açılışlarında onshow olaylarında da
Kod: Tümünü seç
str:='select * from T_PUAN08';
veri.goruntule.Close;
veri.goruntule.SQL.Clear;
veri.goruntule.SQL.Add(str);
veri.goruntule.Open;
showmessage(inttostr(veri.goruntule.recordcount));

bana bu konuda yardımcı olursanız sevinirim.
ii çalışmalar
merhaba;
recordcount olarak değilde şöyle bir denermisin,bir değişkene alarak,daha sağlıklı olur.
hem bir daha toplam kayıt nedir diye,uğraşmassın..
iyi günler
Kod: Tümünü seç
form1 e geri dönüp sözelden bir alan seçtiğim zaman bana sayısal mesleklerin kayıt sayısını gösteriyor. tüm kayıtların sayısını göstermiyor. yani query hiç bi şekilde kendisini yenilemiyor. nie böyle yaptığını anlamadım
Kod: Tümünü seç
str:='select * from T_PUAN08';
veri.goruntule.Close;
veri.goruntule.SQL.Clear;
veri.goruntule.SQL.Add(str);
veri.goruntule.Open;
showmessage(inttostr(veri.goruntule.recordcount));
Kod: Tümünü seç
str:='select count(*) as ToplamKayit from T_PUAN08';
veri.goruntule.Close;
veri.goruntule.SQL.Clear;
veri.goruntule.SQL.Add(str);
veri.goruntule.Open;
Degisken:=veri.goruntule.FieldByName('ToplamKayit').AsInteger;
iyi günler
Burda öenmli bir nokatya deyinmek istiyorum..Query le bulduğunuz
kayır sayısına pek fazla güvenmeyin derim.Ben çok sorun yaşıyordum aynı kodu bende kullandım bu kod çok sağlıklı çalışan bir kod değil.kayıt sayısını SQL le ile yada eğer bir sayısal alanınız var sa anahtar alan gibi * yerine onu yazarak ta buldum ve şu ana kadar bir sorun yaşamadım.
Birde yazdığınız SQl lerin Sql.text ten bakarak buraya yazabilirmisiniz acaba karışık olduğu için biraz zor oluyor.
kayır sayısına pek fazla güvenmeyin derim.Ben çok sorun yaşıyordum aynı kodu bende kullandım
Kod: Tümünü seç
query1.recordcount
Kod: Tümünü seç
select count(*) as toplam from tablo
Birde yazdığınız SQl lerin Sql.text ten bakarak buraya yazabilirmisiniz acaba karışık olduğu için biraz zor oluyor.
***********************************
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.
***********************************
Merhaba
ilk olarak sayısal meslek olan hemşireliği seçtim. hemşireliğin kodu 23. ve bana gelen sql.txt aşağıdaki gibi.
select * from T_PUAN08 where (s12='23') order by Alan
daha sonra "Alan" dediğim bölümde ekrandan girilen değerin 3 eksiğiyle 100 arasında olacak. ve bana aşağıdaki gibi bi filtreleme yapıyor.
((Alan>2 and Alan<100) and (ypuanturu='say'))
buraya kadar olan kısımda bi sorun yok.
ama daha sonra form1 e geri döndüm. arkeolojiyi seçtim. kodu 12. ve bana getiridği listeleme aşağıdaki gibi.
select * from T_PUAN08 where (s12='12') order by Alan
daha sonra bunu yukardaki gibi filtrelemesi lazım. ama bi türlü yapmıyor. yani o döngüye bile girmiyor. çünkü query de sadece sayısal alanlar var. arkeoloji sözel olduğu için direk esgeçiyor. ve filtreleme yapmıyor.
normalde filtreleme için yapması gereken kod:
((Alan>2 and Alan<100) and (ypuanturu='söz'))
bu şekilde olmalı. ama bana böyle bi kod göndermiyor. öyle olunca değer boş dönüyor. ve Arkeoloji alanlarını göstermiyor.
ii çalışmalar
ilk olarak sayısal meslek olan hemşireliği seçtim. hemşireliğin kodu 23. ve bana gelen sql.txt aşağıdaki gibi.
select * from T_PUAN08 where (s12='23') order by Alan
daha sonra "Alan" dediğim bölümde ekrandan girilen değerin 3 eksiğiyle 100 arasında olacak. ve bana aşağıdaki gibi bi filtreleme yapıyor.
((Alan>2 and Alan<100) and (ypuanturu='say'))
buraya kadar olan kısımda bi sorun yok.
ama daha sonra form1 e geri döndüm. arkeolojiyi seçtim. kodu 12. ve bana getiridği listeleme aşağıdaki gibi.
select * from T_PUAN08 where (s12='12') order by Alan
daha sonra bunu yukardaki gibi filtrelemesi lazım. ama bi türlü yapmıyor. yani o döngüye bile girmiyor. çünkü query de sadece sayısal alanlar var. arkeoloji sözel olduğu için direk esgeçiyor. ve filtreleme yapmıyor.

((Alan>2 and Alan<100) and (ypuanturu='söz'))
bu şekilde olmalı. ama bana böyle bi kod göndermiyor. öyle olunca değer boş dönüyor. ve Arkeoloji alanlarını göstermiyor.
ii çalışmalar
SQL de bu alanlar farkediyor;
Mesala Alanınız;
Alan=VarChar olarak tanımlı
iki değer girdiğiniz
Alan=1;
Alan=0001;
bu değerleri Integer olarak değerlendirirseniz.bu iki değer birbirine Eşittir;
String olarak değerlendirirseniz,Her ikisi de birbirine eşit olmaz.
Çünkü
Bence sizin hatalarınız bu gibi sorunlardan ibaret.SQL de
dikkat etmeniz gerekli.Çünkü doğru olarak umduğunuz sonuç yanlış çıkabiliyor..
iyi günler
Mesala Alanınız;
Alan=VarChar olarak tanımlı
iki değer girdiğiniz
Alan=1;
Alan=0001;
bu değerleri Integer olarak değerlendirirseniz.bu iki değer birbirine Eşittir;
String olarak değerlendirirseniz,Her ikisi de birbirine eşit olmaz.
Çünkü
Kod: Tümünü seç
Alan=1;
Alan=0001;
Kod: Tümünü seç
' Tırnaklara+TipDönüşümlerine+,Büyük/Küçük harf uyumuna
iyi günler
Merhaba
benim programdaki hata sizin dediğiniz nedenlerden kaynaklanmıyor bence. çünkü Alan die adlandırdığım bölüm float. karşılaştırmalarda hata yapmıyor. bunu biçok kez denedim. bide zaten ilk aramayı yapıyor. ondan sonraki aramayı yapmıyor. o yüzden de sorun bence başka bişeyden kaynaklanıyor:(
ii çalışmalar.
benim programdaki hata sizin dediğiniz nedenlerden kaynaklanmıyor bence. çünkü Alan die adlandırdığım bölüm float. karşılaştırmalarda hata yapmıyor. bunu biçok kez denedim. bide zaten ilk aramayı yapıyor. ondan sonraki aramayı yapmıyor. o yüzden de sorun bence başka bişeyden kaynaklanıyor:(
ii çalışmalar.
Bence sizin kodlarda bir sorun yok gibi query bileşenini değiştirseniz.anladığım kadarı ile yukarıdaki kodlar tek bir proceduredemi yoksa faklı procedurelerdemi.eğer aynı procedure de ise ilk önce sorgu çekiyorsunuz sonra false true yapıyorsunuz burasını anlamadım,yada 2. defa filtrelemek istedğiniz zaman form2 yi kapatıyormusunuz form2 ile query nin arasında ilişki nedir nasıl bağlanıyor.işin içinden çıkamadım,biraz olayı toparlasanız adım adım delphi çalışır 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.
***********************************
Merhaba
=>İlk olarak form1 de checklistboxım var. ve checkboxta mesleklerim listelenmiş olarak geliyor. burdan meslek seçip ileri deyince form2 açılıyor.
=>form2 de; gözlem butonumla dbrgidim var.
gözlem butonuna tıkladığım zaman yukarıdaki kodlar çalışıyorlar. ve hepsi aynı proceduredeler. 2.defa filterelerken form2 yi kapatmıyorum. hepsini gözlem butonunun içinde yapıyorum.
=>query i veri adlı bi datamodule ün üzerinde tutuyorum. bütün sorgularım tablolarım orda duruyor. dbgridde datamodülün üzerindeki query e bağlı.
bide mesela ben önce sözel sonra sayısal alandan bi meslek seçsemde önce sözeli çalıştırıyor sonra sayısalı çalıştırmıyor. yani sorun 2. kez çalıştırırken oluyor. ikinci kez sseçim yapmazsa sorun yok. ama yaparsa sorun o zaman ortaya çıkıyor.
ii çalışmalar
=>İlk olarak form1 de checklistboxım var. ve checkboxta mesleklerim listelenmiş olarak geliyor. burdan meslek seçip ileri deyince form2 açılıyor.
=>form2 de; gözlem butonumla dbrgidim var.
gözlem butonuna tıkladığım zaman yukarıdaki kodlar çalışıyorlar. ve hepsi aynı proceduredeler. 2.defa filterelerken form2 yi kapatmıyorum. hepsini gözlem butonunun içinde yapıyorum.
=>query i veri adlı bi datamodule ün üzerinde tutuyorum. bütün sorgularım tablolarım orda duruyor. dbgridde datamodülün üzerindeki query e bağlı.
bide mesela ben önce sözel sonra sayısal alandan bi meslek seçsemde önce sözeli çalıştırıyor sonra sayısalı çalıştırmıyor. yani sorun 2. kez çalıştırırken oluyor. ikinci kez sseçim yapmazsa sorun yok. ama yaparsa sorun o zaman ortaya çıkıyor.
ii çalışmalar
merhaba;
Asıl sorun buradan kaynaklanıyor herhalde.biraz uzun kodlarda BreakPoint koyarsan daha da kolay olur.+ konu bir kaç parça olduğu için, kodu yukarıdan aşağıya doğru parçalara bölüpte çalıştırman daha da iyi olur kanaatim.
iyi günler...
Kod: Tümünü seç
bide mesela ben önce sözel sonra sayısal alandan bi meslek seçsemde önce sözeli çalıştırıyor sonra sayısalı çalıştırmıyor. yani sorun 2. kez çalıştırırken oluyor. ikinci kez sseçim yapmazsa sorun yok. ama yaparsa sorun o zaman ortaya çıkıyor.
iyi günler...