2012-06-21 2 views
0

현재 스토어드 프로 시저를 사용하는 테이블에 사용자 송장 전자 메일을 보내고 있습니다. 내가 가지고있는 문제는 인보이스 행 수가 일정 금액에 도달하면 더 이상 인쇄되지 않는다는 것입니다. 예를 들어 50 개의 인보이스가 있지만 37 개의 인쇄물이있는 공급 업체가 있습니다. 그 이상으로 테이블을 확장 할 수있는 방법이 있습니까? 어떤 도움을 주셔서 감사합니다! 선언에서SQL 메일로 html 테이블 서식 지정

USE [CMSOPEN] 
GO 
/****** Object: StoredProcedure [dbo].[_HM_EXPENSE_EMAIL] Script Date: 06/21/2012 10:15:02 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

ALTER PROCEDURE [dbo].[_HM_EXPENSE_EMAIL] (@schedule_num int = 0) 
AS 

If @schedule_num = 0 return -1 

select a.source_tran_uno, v.vendor_id, n.name remit_name, 
    IsNull(n.internet_addr, '[email protected]') internet_addr, p.car_phone, 
    addr.address1, addr.city, addr.state_code, 
    c.check_num, c.check_date, c.request_num, 
    i.invoice_num, i.invoice_date, 
    c.chk_amt, a.ap_amt * a.sign * -1 as invoice_amt, isnull(left(t.txt1, 500), '') as comment 
into #t1 
from apt_invoice_amt a inner join apt_check c on a.source_Tran_uno = c.tran_uno 
inner join hbm_address addr on c.address_uno = addr.address_uno 
inner join apt_invoice i on a.inv_tran_uno = i.tran_uno 
inner join apm_vendor v on a.remit_vend_uno = v.vendor_uno 
inner join hbm_name n on v.name_uno = n.name_uno 
inner join apt_text t on i.text_id = t.text_id 
inner join HBM_NAME_PEOPLE p on n.PEOPLE_NAME_UNO = p.name_uno 
WHERE c.SCHEDULE_NUM = @Schedule_num 
and i.aptype_code = 'EXPREM' 

update #t1 
set internet_addr = '[email protected]' 
where internet_addr = '' 


SET NOCOUNT ON 

Declare @HTML varchar(6000), @table VARCHAR(MAX), @source_tran_uno int, @check_date datetime, @chk_amt money, @remit_name varchar(120), 
    @vendor_id varchar(16), @city varchar(30), @state_code varchar(2), @internet_addr varchar(80),@sec_email varchar(80), @request_num int 


DECLARE ach_cursor CURSOR FOR 
select distinct source_tran_uno, check_date, chk_amt, remit_name, rtrim(vendor_id), city, state_code, internet_addr, car_phone, request_num 
from #t1 t 
order by remit_name 
OPEN ach_cursor 

FETCH NEXT FROM ach_cursor 
INTO @source_tran_uno, @check_date, @chk_amt, @remit_name, @vendor_id, @city, @state_code, @internet_addr, @sec_email, @request_num 

WHILE @@FETCH_STATUS = 0 
BEGIN 

Select @HTML = '<H1>Expense Report Payment Advice</H1>' + 
       '<BR>Date: ' + convert(varchar(10), IsNull(@check_Date, ''), 101) + '<BR>' + 
       '<B>Total: $' + Cast(@Chk_Amt as varchar(15)) + '</B><BR><BR>' + 
       IsNull(@remit_name, '') + '<B>(' + IsNull(@Vendor_ID, '') + ')</B><BR>' + 
       '<BR><BR>' + 
       'Payment for the following expense report(s) have been included as part of your payroll deposit <BR><BR>' 

SET @table = 

    '<TABLE border=1 cellpadding=5>' + 
    '<tr><th width=100 align=center><B>Expenditure Date</B></th><th width=100 align=center><B>Expense Processing Date</B></th><th width=100 align=center><B>Amount Paid</B></th><th width=250 align=center><B>Reimbursement Narrative</B></th></tr>' + 
CAST ((
select td = invoice_num, '', 
td = convert(varchar(10), invoice_date, 101), '', 
td = '$' + convert(varchar(12), invoice_amt, 1), '', 
td = comment 
from #t1 t 
where t.source_Tran_uno = @source_tran_uno 
       FOR XML PATH('tr'), TYPE 
    ) AS NVARCHAR(MAX)) + 
    N'</table>' ; 
--select @internet_addr 
--select @HTML 
--select @table 
set @HTML = @HTML + @table 
--select @html 
-- Email delimiter must be semicolon 
EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Accounting ACH Notification', @recipients = @internet_addr, @copy_recipients = @sec_email, @blind_copy_recipients = '[email protected]', 

--EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Accounting ACH Notification', @recipients='[email protected]', @blind_copy_recipients = '[email protected]', 
    @subject = 'Payment Advice from Honigman Miller' , 
    @body = @HTML, 
    @body_format = 'HTML' ; 

-- Get the next Billing Attorney. 
FETCH NEXT FROM ACH_cursor 
INTO @source_tran_uno, @check_date, @chk_amt, @remit_name, @vendor_id, @city, @state_code, @internet_addr, @sec_email, @request_num 
END 
CLOSE ACH_cursor 
DEALLOCATE ACH_cursor 

drop table #t1 
+0

동일한 콘텐츠를 가져 와서 일반 이메일 클라이언트를 통해 이메일을 보내면 어떻게됩니까? –

+0

죄송합니다 - 어떻게하는지 모르겠습니다. 나는 상당히 sql과 html에 익숙하다. –

+0

인보이스를 가져 와서 전자 메일 본문에 붙여 넣으시겠습니까? 나는 송장을 엑셀의 테이블에 복사하고 이메일 메시지 본문에 잘 붙였다. 나는 이것이 당신이 의미하는 것이 었는지 확신 할 수 없다. ... –

답변

0

: 충분한

@HTML varchar(6000) 

여기

현재 저장 프로 시저에 사용 된 코드는?

+0

나는 그것을 최대로 바꾸고 무슨 일이 일어나는지 보게 될 것이다! 고마워요. –

+0

고맙습니다. - 크기를 MAX로 변경했는데 이제는 완벽하게 작동합니다! 도움과 조언을 주신 모든 분들께 감사드립니다. :) –