SQL Server'dan Mesaj Yakala

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

SQL Server'dan Mesaj Yakala

Mesaj gönderen pro_imaj »

Merhaba;

MSSQL Server Query Analyzer ile bir herhangi bir sorgu çalıştırdığımda Messages Kısmında o sorgunun sonucu ile ilgili detay bilgi veriyor.

Bu bilgiyi delphi de Query ile Aynı sql kodunu çalıştırdığımızda alabilrmiyiz acaba.

Basit Bir örn verecek olursak

Kod: Tümünü seç

Select * From FINSAT482.STI
Kodu ile dönen sonuç

(9029 row(s) affected)

Bu sonucu RecordCound ile alabiliz ama fdarkılı işlemlerde farklı veriler geliyor Hem daha sağlıklı ve ayrı bir işlem gerektirmiyor.

Saygılarımla
Teşekkür Ederim.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

Delphi ile gelen SQL Monitör ile veritabanınıza giden SQL cümlelerini takip edebilirsiniz. Ben birkaç kez denemiştim. Ama sizin durumunuzda işe yarar mı bilmiyorum.

Ayrıca SQL Serverın Query Analyzerı da gelen, işletilen cümleleri yakalar gibi geliyor bana ama denemek lazım.

Kolay gelsin.
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Bu daha ziyade kullandığınız componentler ile ilgili (tabi ki ne yapmak istediğinizle de).
Örneğin dbExpress'in TSQLQuery componenti ile ExecSQL komutunu çalıştırdığınızda bizzat kendisi yaptığı işlem sonucunda kaç kaydı etkilediğini belirtiyor. Yani:

SQLQuery1.SQL.Text := 'DELETE FROM MYTABLE';
ShowMessage(IntToStr(SQLQuery1.ExecSQL));

İyi çalışmalar.
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Merhaba;
@Mussimsek Hocam SQL Monitör daha önce kullanmadığım için deneme şansım olmadı hafta sonu bunu denicem teşekkür ederim.

@Hakancan Hocam AdoQuery kullanıyorum bu componentin böyle bir özelliği varmı acaba.

Sizin belirtiğiniz ExecSQL komutu ile zaten update veya insert işlemlerinde kullanılıyor fakat kaç sonuç döndüğünü bu şekilde nasıl alabilriiz pek anlayamadım. Bu komutu kullandıktan sonra dönen bahsi geçen sonuç kümesini hangi komut ile alacağız.

Saygılarımla.
Teşekkür Ederim
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

Merhaba ,
Rxlib içinde , DBProgress nesnesi BDE nin mesajlarını yakalıyor ben MySQL için denedim sorun yaşamadım.
Basitçe kullanımı ,
rxDBAwere sekmesinden DBProgress i ekleyin SessionName özelliğine Default atayın, Trace özelliğini TRUE yapın, bilmek isteiğiniz olayları TraceFlags bölümünden TRUE ile aktifleştirin,olanları bir memo içinde görmek için DBProgress in OnTrace olayına

Kod: Tümünü seç

Memo.Lines.Add(Msg);
atayın ,
iyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

TADOQuery.ExecSQL helpine bakarsanız orada:
"ExecSQL returns an integer value reflecting the number of rows affected by the executed SQL statement" diye yazıyor. ExecSQL orada da function ve Integer değer döndürüyor.
Verdiğim önceki örnek "ShowMessage(IntToStr(SQLQuery1.ExecSQL));" aslında aynı şeyi anlatıyordu.

İyi çalışmalar.
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Merhaba;

Değerli Cevaplarınız için teşekkür ederim.

Sorunu @vkamadan :oops: yardımıyla çözdüm.

@HakanCan senin yazdıkların doğruymuş hocam ama ben uygulamada yanlışlık yapıyormuşum ben normal execsql cümlesinin altına sizin yazdığınız uygulayınca hata almıştım halbuki sizinde belirtiğiniz gibi bu komut hem integer bir değer dönderiyor hemde işlemi yapıyor.

Kod: Tümünü seç

Var
EtkilenenKayitSay:string;
begin
DepoUpdateQuery.Close;
DepoUpdateQuery.SQL.Clear;
DepoUpdateQuery.SQL.Add(DepoInsertMemo.Lines.Text);
EtkilenenKayitSay:=IntToStr(DepoUpdateQuery.ExecSQL); Burada hem işlemi gerçekleştiriyor hemde işlem yapılan kayıt sayısını almış oluyoruz.

ShowMessage(EtkilenenKayitSay);//

Yardımlarınız için çok teşekkür ederim.
Sağlıcakla kalın.
iyi akşamalar.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Cevapla