Forum

sql trigger hk.
 
Bildirimler
Hepsini Temizle

[Çözüldü] sql trigger hk.

10 Yazılar
4 Üyeler
2 Likes
1,290 Görüntüleme
(@tslugr)
Gönderiler: 34
Eminent Member
Konu başlatıcı
 

 

Merhaba arkadaşlar;

Mail göndermesi için bir trigger yazdım, Mikro diye bir program üzerinden 'Depolar arası sevk fişi' girdiğimiz alanda birden çok satır girip kaydetmekteyiz bunları trigger üzerinden mail olarak göndermekte buraya kadar sorun yok sorun her satırı ayrı ayrı mail gönderiyor ve en sonunda toplu olarak geliyor misal 3 satırlık mikrodan ürün girdim ve kaydet dediğimde toplam 3 tane mail gelmekte en son gelen 3 mail da toplam ürünlerin listesi geliyor bunu tek mail üzerinden nasıl yapabilirim ?

 

Kodlarım aşağıda ki gibidir;

image
1
2
 
Gönderildi : 10/05/2021 17:44

(@tslugr)
Gönderiler: 34
Eminent Member
Konu başlatıcı
 

satır sayısını hesaplayıp en son mail gönderme işlemi bu kodun içinde yapabilir miyiz ? misal @@ROWCOUNT gibi

 
Gönderildi : 10/05/2021 17:54

(@serkanates)
Gönderiler: 1271
Üye
 

Günaydın;

if(@sth_cins=6) satırındaki koşulunuzu düzenlemelisiniz. Sistemi transaction'ın tamamlanıp ilgili kayıtların oluştuğu bilgisine yönlendirmelisiniz. Sonrasında oluşmuş olan kayıtlardan istediğiniz veri setini çekip şekillendirebilirsiniz.

İyi çalışmalar.

NOT: Bu tarz fonksiyonların veritabanı katmanında yönetilmesi önerilen bir yöntem değildir.

 
Gönderildi : 11/05/2021 07:59

(@mehmetsucu)
Gönderiler: 85
Estimable Member
 

Merhaba @tslugr

sp_send_dbmail de @query parametresine sorgunu yazıp gönderebilirsin.

EXEC msdb.dbo.sp_send_dbmail
@recipients = '[email protected]',
@query = 'SELECT Adi, COUNT(*) Sayi
FROM Test
GROUP BY Adi
HAVING COUNT(*) > 1' ,

@subject = 'deneme'

Mehmet SUCU
HBYS Yazılım Uzmanı
[email protected]
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

 
Gönderildi : 11/05/2021 08:35

(@tslugr)
Gönderiler: 34
Eminent Member
Konu başlatıcı
 

Merhaba

Maalesef düzgün bir sonuç alamadım

Şu şekilde yapsam acaba karşı tarafta nasıl karşılayıp mail göndere bilirim sizce ?


5

yani burada post yaptığında nasıl karşılayıp mail olarak göndere bilirim ?

 

Json çıktısı şu şekilde

[{"seri":"","sira":35,"tarih":"2021-05-05T00:00:00","kullanici":"Supervisor","stokkod":"YAĞ.003","sto_isim":"BİRYAĞ","miktar":12.0000,"hedef":"HIJYENBANK","kaynak":"Merkez depo"},{"seri":"","sira":35,"tarih":"2021-05-05T00:00:00","kullanici":"Supervisor","stokkod":"KEMER002","sto_isim":"DERİ KEMER","miktar":34.0000,"hedef":"HIJYENBANK","kaynak":"Merkez depo"},{"seri":"","sira":35,"tarih":"2021-05-05T00:00:00","kullanici":"Supervisor","stokkod":"TMZLK001","sto_isim":"ISLAK MENDİL","miktar":34.0000,"hedef":"HIJYENBANK","kaynak":"Merkez depo"}]

 
Gönderildi : 11/05/2021 21:03

(@tslugr)
Gönderiler: 34
Eminent Member
Konu başlatıcı
 

Merhaba;

Ömer ÇOLAKOĞLU Hocamız sağ olsun konuyla ilgili yardımcı oldu ve sorunumuzu çözdü, kendisine çok teşekkür ediyorum ilgi ve alakasından dolayı sağ olun var olun iyi ki varsınız. Teşekkürler.

 
Gönderildi : 14/05/2021 00:52

(@serkanates)
Gönderiler: 1271
Üye
 

Merhaba;

Ömer ÇOLAKOĞLU'nun başlık altında herhangi bir önerisi bulunmuyor. Çözümü detaylı bir şekilde burada da paylaşırsanız başlığa ulaşan arkadaşların da istifade etmesini sağlamış olursunuz. Bu şekilde geri bildiriminiz daha fazla değer kazanır. Teşekkürler.

 
Gönderildi : 14/05/2021 09:41

Hakan Uzuner
(@hakanuzuner)
Gönderiler: 32965
Illustrious Member Yönetici
 

Selamlar, Ömer hocam sağ olsun el atmış ancak evet çözüm paylaşabilirseniz herkese yardımcı olur.

Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

 
Gönderildi : 14/05/2021 11:09

(@tslugr)
Gönderiler: 34
Eminent Member
Konu başlatıcı
 

Merhabalar;

Konuyu ve çözümü şu şekilde özetleyeyim

İlk olarak yapmış olduğumuz trigger  ile bu işlemin olmayacağı anlaşılmıştır, nedeni ise her satırda ayrı insert işlemi yaptığı için her insert işleminde satırları ayrı ayrı mail atmakta idi ondan dolayı yeni bir tablo oluşturuldu STOK_HAREKETLERI_MAIL adında bunun içinde [DATE_], [STH_EVRAKNO_SERI], [STJ_EVRAKNO_SIRA], [MAILSENT], [MAILSENDDATE] adında alanlar oluşturuldu ve bu alana trigger üzerinden her satırın aynı numaralama kolonu yani sth_evrakno_seri STOK_HAREKETLERI_MAIL tablosunda STJ_EVRAKNO_SIRA kolonuna INSERT INTO yapılarak ve MAILSENT False değerleri atanarak işlem yapıldı sonra Stored Procedure, den CREATE PROCEDURE açarak STOK_HAREKETLERI_INSERT_MAIL mail gönderme kodu burada hazırlandı burada sadece MAILSENT False olanları ağılayıp True ye çevirip bilgileri o şekilde Update işlemi yapmakta en son olarak ta Job üzerinden 5dk ara ile Stored Procedure deki STOK_HAREKETLERI_INSERT_MAIL kontrol ederek MAILSENT False olan alanı kontrol edip mail gönderek bu işi bu şekilde halletmiş oldu.

Umarım anlaşılmıştır ve doğru anlatmıştır diye düşünüyorum, herk eze yardımlarından dolayı teşekkürler. Özelliklede Ömer hocamıza teşekkür ediyorum.

 
Gönderildi : 14/05/2021 14:51

(@serkanates)
Gönderiler: 1271
Üye
 
Gönderen: @SerkanAtes

Günaydın;

if(@sth_cins=6) satırındaki koşulunuzu düzenlemelisiniz. Sistemi transaction'ın tamamlanıp ilgili kayıtların oluştuğu bilgisine yönlendirmelisiniz. Sonrasında oluşmuş olan kayıtlardan istediğiniz veri setini çekip şekillendirebilirsiniz.

İyi çalışmalar.

NOT: Bu tarz fonksiyonların veritabanı katmanında yönetilmesi önerilen bir yöntem değildir.

Bende benzer bir çözüme sizi yönlendirmiştim ancak Ömer bey kod tarafında da destek verdi sanırım. Geri bildiriminiz için teşekkürler. 

 

 
Gönderildi : 14/05/2021 15:01

Paylaş: