Stored Procedureler Arasında İlişki

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
osmantaskiran
Üye
Mesajlar: 34
Kayıt: 17 Nis 2004 09:27
İletişim:

Stored Procedureler Arasında İlişki

Mesaj gönderen osmantaskiran »

Merhaba;
Delphi 7 ve sql server 2000 kullanıyorum. sql de iki adet stored procedure yarattım bunları delphide ado stored procedure ile getirdim. Bu iki procedure dede ortak alan "Kodu" alanı.
Masterdeki "Kodu" alanına göre "Detay" ı "Kodu" alanına göre ilişkilendirmek istiyorum.Detay stored procedure bileşenine dataset olarak masteri gösterdim ama yemedi. Bunu nasıl yapabilirim.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

stored procedure'ler arasında master-detail ilişki olamaz?? Buna niçin ihtiyaç duydunuz.

Ama gerekiyorsa, bir stored proc. içinden diğerini çağırabilirsiniz.

Kolay gelsin.
Kullanıcı avatarı
osmantaskiran
Üye
Mesajlar: 34
Kayıt: 17 Nis 2004 09:27
İletişim:

Örnek

Mesaj gönderen osmantaskiran »

Şöyle bir olayım var diyelim.
1.Tablo:öğrenci nosu,adı,soyadı
2.tablo:öğrencinosu,derskodu
3.tablo:derskodu,dersadi

1.tablom master tablo.
2.tablomda detail
iki adet gridim var.

1.gridde master veriler, 2. gridde detail veriler.
1.gridde her üstüne geldiğim öğrencinin aldığı dersleri 2.gridde göstermek istiyorum. bunu eskiden ado table lar veya ado query ile rahatça yapabiliyorum fakat şimdi yapamıyorum ve yapmak istiyorum.
Yardımcı olursanız sevinirim.
Teşekkürler...
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Dediğiniz gibi table veya quer nesneleri ile bunu kolayca yapabilirsiniz... Karşınıza çıkan engel ne oldu?

Ne tür hatalar aldınız?
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
Kullanıcı avatarı
osmantaskiran
Üye
Mesajlar: 34
Kayıt: 17 Nis 2004 09:27
İletişim:

Cevap2

Mesaj gönderen osmantaskiran »

1.tabloya ait master verilerimi stored procedure ile almıştım zaten.(başka bir yerde de kullanıyorum)
fakat detay bilgileri query ile almaya kalktım. "where AlanKodu= :'Masterdeki_Alan_Kodu'" şeklinde ve detay datesource unu master stored procedure göstererek ama buda yemedi. sanırım stored procedure den parametreyi alamadı.
Daha sonra detayıda stored procedure şekline çevirdim.Detay stored procedure dışarıdan parametre alıyordu detay stored proceduründe datasource sini master stored procedure yaptım fakat bununla da olmadı.
Sonuç olarak istediğim ise master ve detay verileride stored procedure yardımı ile getirebilmek. Çünkü işlerin server tarafında yapılmasını cliente sadece sonuç verilerin gelmesini istiyorum.
Yardımcı olursanız teşekkür ederim.
İyi çalışmalar...
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

stored procedure yapmak iyi fikir tabi ki....
Dediginiz sekilde detay SP'nin datasource 'u olarak masteri gostermek yetiyor olmali.

Fakat verdiginiz ornekte
"where AlanKodu= :'Masterdeki_Alan_Kodu'"
'Masterdeki_Alan_Kodu' tırnak icinde. Bu sekli yanlıs. Ornegin bu sekilde olmalı ve master tabloda da Alan_kodu alanı olmalı. Yani parametre tırnak icinde olmamalı.

Kod: Tümünü seç

AlanKodu= :Alan_Kodu
Olmazsa yazdiginiz SQL'i tam olarak gonderin.

Kolay gelsin...
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
Kullanıcı avatarı
osmantaskiran
Üye
Mesajlar: 34
Kayıt: 17 Nis 2004 09:27
İletişim:

cevap3

Mesaj gönderen osmantaskiran »

söylediğiniz şekilde;
master-->stored procedure
detail-->ado_query şekli ile tırnak işareti olmadan çalıştı.teşekkürler.
Fakat ben biraz daha zorlayarak detayıda stored procedure haline getirip detay verileri sp ile getirmek istiyorum.
bunu yapmak için detay sp nin datasource sini maste sp yaptım.fakat olmadı.
sizce masterde return değeri ile detayda artifikal key olarak tanıttığım alanı mı döndürmem gerekiyor, başka nasıl olabilir?
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

ben master ve detay'ta TQuery kullanarak veritabanı tarafindaki iki ayri SP'u master detay olacak sekilde baglayabiliyorum.
Ornegin detay query'nin SQL'ine:

Kod: Tümünü seç

SP_RAPOR_DETAY :FIRMA_NO, :BILET_NO
SP'yi cagirmak icin kullanılan parametreler master'dan alındığı için istediğinizi yapacaktır...

Bu arada gozumden kacmış:
Admin yazdı:stored procedure'ler arasında master-detail ilişki olamaz??
Database tarafındaki SP'leri Query nesneleri ile cagirilarak yapılabiliyor. Ben hep kullanıyorum...
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
Kullanıcı avatarı
osmantaskiran
Üye
Mesajlar: 34
Kayıt: 17 Nis 2004 09:27
İletişim:

cevap4

Mesaj gönderen osmantaskiran »

harika...sonunda çalıştı.ilgilendiğiniz ve yardımlarınız için teşekkür ederim.

Bunun haricinde bir soru sormak istiyorum.
Ben şimdiye kadar stored procedure olmadan veritabanı programı yazıyorum. Son 2 haftadır stored procedure kullanıyorum.
Eski kullandığım sistem ado table ve queryler , ondan öncede bde idi.
hem ado hemde bde ve tablolarda filtreleme yada where kullandığım zaman query nin sorguladığı tablo ve/veya tablolar içindeki tüm veri cliente geliyor sonra filtreleniyor diye biliyorum. Bunun doğruluğu nedir?
Tekrar teşekkürler, iyi çalışmalar...
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

fahrettin yazdı: Bu arada gozumden kacmış:
Admin yazdı:stored procedure'ler arasında master-detail ilişki olamaz??
Database tarafındaki SP'leri Query nesneleri ile cagirilarak yapılabiliyor. Ben hep kullanıyorum...
birşey daha öğrenmiş oldum, sağol abi :)

Kolay gelsin.
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

osmantaskiran yazdı:Eski kullandığım sistem ado table ve queryler , ondan öncede bde idi.
hem ado hemde bde ve tablolarda filtreleme yada where kullandığım zaman query nin sorguladığı tablo ve/veya tablolar içindeki tüm veri cliente geliyor sonra filtreleniyor diye biliyorum. Bunun doğruluğu nedir?
Buna %100 evet diyemiyorum. Çünkü farklı yapılarda sonuç değişiyor olabilir. Mesela klasik TTable üzerinde yapacağınız filtrelemer için dediğiniz gibi herşey client'a geliyor diye biliyorum. Eger BDE ile TQuery kullarnısanız o zaman da BDE ayarlarında SQLQRYMODE un Local veya Server olmasına gore tabi veritabanınız client server bir veritabanı ise degişecektir. Ama sonuçta stored procedure'lerin server tarafında çalışıtı kesin... :D

Kolay gelsin...
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
Cevapla