Parametreli sorguda aranan yoksa showmessage

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
zondernick
Üye
Mesajlar: 19
Kayıt: 11 Oca 2011 11:24

Parametreli sorguda aranan yoksa showmessage

Mesaj gönderen zondernick »

Bir tablodan diğerine parametreye göre ilgili alanları insert yapıyorum Kodum şöyle;

Kod: Tümünü seç

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
dm.IBQs.close;
dm.IBQs.SQL.Clear;
dm.IBQs.sql.add('insert into veri_girilen_t(veri_girilen_t_alanalrı_1,2,3) select  veri_alınan_t_alanları1,2,3 from veri_alınan_t where sorgulanacak_alan=:p');
dm.IBQs.Params.parambyname('p').value := edit2.text;
dm.IBQs.ExecSQL;
dm.IBTs.Commit;

       if  dm.IBQs.IsEmpty then
showmessage('Aradığınız Kayıt Bulunamadı!!!');
 end;
 end;
Girilen parametre olsa da olmasa da kayıt bulunamadı diyor onaydan sonra varsa ekliyor yoksa eklemiyor. Çeşitli versiyonlarda da denememe rağmen sonuç aynı.

Kod: Tümünü seç

if  dm.IBQs.recordcount=0 then
showmessage('Aradığınız Kayıt Bulunamadı!!!');
gibi.

Bu işlemi nasıl yapabilirim? Teşekkürler.
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: Parametreli sorguda aranan yoksa showmessage

Mesaj gönderen Battosai »

Arama yapmıyorsun ki kayıt bulacaksın :)
zondernick
Üye
Mesajlar: 19
Kayıt: 11 Oca 2011 11:24

Re: Parametreli sorguda aranan yoksa showmessage

Mesaj gönderen zondernick »

Arama yapmıyorsun ki kayıt bulacaksın
Nasıl yani aramıyorsak neyi buluyoruz?
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: Parametreli sorguda aranan yoksa showmessage

Mesaj gönderen unicorn64 »

bir tablodan diğerine aktarım yapmaya çalışıyorsunuz gördüğüm kadarıyla, burada select iç sorgu olarak değerlendirildiğinden dönen kayıt sonucunu göremezsiniz, ama asıl sorgunuz olan insert işleminde eklenen kayıt sayısını

Kod: Tümünü seç

dm.IBQs.RowsAffected
ile görebilmeniz gerek...
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
zondernick
Üye
Mesajlar: 19
Kayıt: 11 Oca 2011 11:24

Re: Parametreli sorguda aranan yoksa showmessage

Mesaj gönderen zondernick »

unicorn64 cevap için teşekkürler evet parametreye göre seçilen kaydı diğer tabloya kaydediyorum ve isteğim parametreli alanda istenen aynı değer yoksa mesaj vermesi.

Kod: Tümünü seç

dm.IBQs.RowsAffected
Hata verdi.
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: Parametreli sorguda aranan yoksa showmessage

Mesaj gönderen unicorn64 »

sorgu için hangi bileşeni kullanıyorsunuz, dm.IBQs nedir?
insert ve update komutlarından sonra geriye eklenen/güncellenen kayıt sayısı döner normalde ve sorgu için kullanılan bileşen bunu bir şekilde geriye döner...
parametreye göre seçilen kaydı diğer tabloya kaydediyorum ve isteğim parametreli alanda istenen aynı değer yoksa mesaj vermesi
kullanmaya çalıştığınız yapı genelde çoklu kayıt girişi için kullanılır, bir sürü kayıt için tek tek insert etmek yerine bulk insert yapar, ama sanırım siz tek bir kayıt aktaracaksınız.. eğer öyleyse sorguları ayırıp, önce parametreye göre kaydı sorgulamanızı sorgu sonucundan değer dönerse (query.recordcount>0) insert işlemine geçmenizi öneririm...

bu arada bir önceki mesajınızda belirttiğiniz "hata verdi" konusunda daha net cevaplar alabilmek için imzama göz atmanızı tavsiye ederim


Not: İmzam kesinlikle doğrudan kimseye yönelik değildir, ama böylesi durumlar için de bence uygundur...
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
zondernick
Üye
Mesajlar: 19
Kayıt: 11 Oca 2011 11:24

Re: Parametreli sorguda aranan yoksa showmessage

Mesaj gönderen zondernick »

Cevap için teşekkür ederim;
dm.IBQs data modüldeki IBQuery;

Hazırda veri olan tablonun bir alanındaki veriye göre arama yapıp aynı satırdaki diğer alanlardaki verilerle beraber diğer tabloya ekliyorum. Bu işlemi dediğiniz şekilde yani önce sorgulayıp bulursa ekleme işini nasıl yapabilirim?

Biraz acele etmem nedeniyle imzanızı mesajı yazdıktan sonra gördüm haklısınız bu nedenle özür diliyorum.

Hata konusu;
Verdiğiniz kodun tam olarak nasıl kullanılacağını bilmediğimden olsa olsa metoduyla if then ifadeleri arasında kullandım ve

Kod: Tümünü seç

 [DCC Error]  Type of expression must be BOOLEAN
şeklinde bir hata aldım. RowsAffected gibi string ifade yerine boolean olması gerekiyormuş. Önceki mesajda belirtmediğim için tekrar özür dilerim.
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: Parametreli sorguda aranan yoksa showmessage

Mesaj gönderen unicorn64 »

insert update delete işlemlerinden sonra etkilenen (eklenen/güncellenen/silinen) kayıt sayısını

Kod: Tümünü seç

query.RowsAffected
ile,
select sonucu dönen kayıt sayısını

Kod: Tümünü seç

query.RecordCount
ile görebilirsin... her ikisi de integer tipli değerlerdir...

yani ilk mesajınızda yazdığın

Kod: Tümünü seç

if  dm.IBQs.IsEmpty then
   showmessage('Aradığınız Kayıt Bulunamadı!!!');
kısmını

Kod: Tümünü seç

if  dm.IBQs.RowsAffected=0 then
     showmessage('Aradığınız Kayıt Bulunamadı!!!');
şeklinde deneyebilirsin...
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
zondernick
Üye
Mesajlar: 19
Kayıt: 11 Oca 2011 11:24

Re: Parametreli sorguda aranan yoksa showmessage

Mesaj gönderen zondernick »

Tekrar teşekkür ederim;

Sonradan yine deneme yanılma yoluyla son verdiğiniz

Kod: Tümünü seç

if  dm.IBQs.RowsAffected=0 then
     showmessage('Aradığınız Kayıt Bulunamadı!!!');
Şeklindeki ifadeyi de aynen kullandım bunda da diğerleri gibi kayıt olsa da olmasa da mesaj veriyor. Sanıyorum işlem içim insertsiz başka bir yol bulmam gerekiyor.
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: Parametreli sorguda aranan yoksa showmessage

Mesaj gönderen unicorn64 »

neden önce kaydı sorgulayıp sonuç dönerse, dönen bilgileri alıp insert etmiyorsunuz ki?
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
zondernick
Üye
Mesajlar: 19
Kayıt: 11 Oca 2011 11:24

Re: Parametreli sorguda aranan yoksa showmessage

Mesaj gönderen zondernick »

Evet bu oldu önce sorguladım sonra insert işlemini yaptım oldu. Teşekkür ederim.
Cevapla