Forum

Döngüde n...
 
Bildirimler
Hepsini Temizle

Döngüde neresi yanlış acaba?

3 Yazılar
2 Üyeler
0 Reactions
637 Görüntüleme
(@UnalAvci)
Gönderiler: 39
Trusted Member
Konu başlatıcı
 

 

Merhaba,  tablodan view'den mail adreslerini okuyorum fakat bir mail adresi tekrar ediyorsa tekrar ettiği kadar mail gönderiyor. Yapmak istediğim mail adresi view'da 5 kere tekrar etse bile bir mail gitmesi. Yardımcı olabilecek birileri var mıdır?

Teşekkürler.

USE [NB_DB]
GO
/*** Object:  StoredProcedure [dbo].[UnCompletedWorks_SP1]    Script Date: 14.10.2016 09:41:28 ***/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:      <ÜA>
-- Create date: <26.09.2016>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[UnCompletedWorks_SP1]
         
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
 
     
    DECLARE @tableHTML  NVARCHAR(MAX)
    DECLARE @Email NVARCHAR(200)
    DECLARE @EmployerID NVARCHAR(200)
    DECLARE @Store NVARCHAR(200)
    DECLARE @WorkType NVARCHAR(50)
    DECLARE @VehiclePlate NVARCHAR(50)
    DECLARE @WorkDate nvarchar(200)
    DECLARE @CustomerName NVARCHAR(200)
    DECLARE @CustomerPhone NVARCHAR(50)
    DECLARE @CustomerAddress NVARCHAR(250)
    DECLARE @Title NVARCHAR(200)
    DECLARE Cur CURSOR
    FOR
        SELECT * FROM [dbo].[VW_UnCompletedWorks]
        OPEN Cur
        FETCH NEXT FROM Cur INTO @EmployerID,@Store,@WorkType,@VehiclePlate,@WorkDate,@CustomerName,@CustomerPhone,@CustomerAddress,@Title,@Email
        WHILE @@FETCH_STATUS=0
        BEGIN    
    SET @tableHTML = 
        N'<h3 colspan="10" bgcolor="#FF6600" scope="colgroup">Kapatılmayan İşler Listesi</h3></th>'+
        N'<table border=1" bordercolor="green" cellspacing="3">' + 
        N'<tr><th bgcolor="#FF6600">İş Emri No</th>' +
        N'<th bgcolor="#FF6600">Mağaza</th>' + 
        N'<th bgcolor="#FF6600">İş Türü</th>'+
        N'<th bgcolor="#FF6600">Plaka</th> '+ 
        N'<th bgcolor="#FF6600">Taşeron Adı</th>'+
        N'<th bgcolor="#FF6600">Çalışma Günü</th>' +
        N'<th bgcolor="#FF6600">Müşteri Adı</th>' +
        N'<th bgcolor="#FF6600">Müşteri Tel.</th>' +
        N'<th bgcolor="#FF6600">Müşteri Adresi</th>' +
      --N'<th bgcolor="#FF6600">E-Mail</th>' +
        CAST ( ( SELECT td=@EmployerID ,'',
                        td=@Store ,    '',
                        td=@WorkType,'',
                        td=@VehiclePlate, '',
                        td=@Title ,'',
                        td=@WorkDate, '', 
                        td=@CustomerName,  '',
                        td='',
                        td=@CustomerPhone, '',
                        td='',
                        td=@CustomerAddress ,''
                       -- td=Mail ,''
        FROM  [dbo].[VW_UnCompletedWorks]   FOR XML PATH('tr'), TYPE  ) AS NVARCHAR(MAX) ) +
        N'</table>' +
        N'<H5><font face= "calibri" > Eğer bir hata olduğunu düşünüyorsanız [email protected] adresine yazın! </font></H5>'
            EXEC [msdb].[dbo].[sp_send_dbmail]
            @profile_name = 'Otomatik Mail', --MAİL BAŞLIĞI
            @recipients = @Email,-- KİME
            @subject = 'NN - Kapatılmayan İşler Listesi', --MAİL KONUSU
            @body = @tableHTML, 
            @body_format = 'HTML'; 
 
FETCH
NEXT FROM Cur INTO @EmployerID,@Store,@WorkType,@VehiclePlate,@WorkDate,@CustomerName,@CustomerPhone,@CustomerAddress,@Title,@Email
END
CLOSE
Cur
DEALLOCATE
Cur
END
 
Gönderildi : 14/10/2016 14:04

(@UnalAvci)
Gönderiler: 39
Trusted Member
Konu başlatıcı
 

Merhaba

Bu işlem için ayrı bir tabloya kayıt ederseniz eğer, o tablodan sorgulayıo 5 kere gitmesini sağlayabilirsiniz.

 

Anlamadım ne demek istediğinizi? Sorun sadece 5 kere gitmesi değil ilgili satırda mevcut olan kadar gitmesiyle alakalı.  Ayrı bir tablo dediğiniz View'den geliyor SELECT sonucu.

 
Gönderildi : 14/10/2016 16:37

(@HalitSiMSEK)
Gönderiler: 93
Estimable Member
 

Merhaba,

Bazı kayıtların çift olduğunumu söylüyorsunuz yoksa farklı kişiler aynı mailleri kullandığı içinmi tablonuzda mailler tekrar etti?

Aynı mailleri sildirebilirsiniz ufak bir kod yardımıyla. --->

DELETE
FROM tablo_ismi
WHERE ID NOT IN
(
SELECT MAX(ID)
FROM tablo_ismi
GROUP BY tekrar_eden_kolon_ismi)
GO
 
yanlışlık yoksa bu tekrar eden mail adreslerindeki kayıtları silecektir.
 
Tabiki birde iç içe sorgu var 🙂 linki veriyorum işini görecektir. 🙂
 
 
iyi çalışmalar kolay gelsin.
 
 
Gönderildi : 14/10/2016 17:10

Paylaş: