Goedemorgen
Zojuist geregistreerd en ik heb meteen een probleem.
Om bepaalde data uit een database zo nu en dan naar bepaalde mensen te verzenden zet ik het in een excel sheet en verzend ik het vervolgens via email. Het is misschien niet de meest gangbare oplossing, maar het moet eenmaal op deze manier.
Ik heb de volgende stored procedures geschreven:
Het probleem is dat het excelbestand is 'gelocked' zolang de procedure draait. Hierdoor kan de sendmail procedure niet uitgevoerd worden. Ik heb getracht waitfor(delay 00:00:10) toe te voegen aan de tweede procedure, maar dan blijft de file gewoon 10 sec locked. Ik kom er even niet meer uit. Wie helpt mij?
Alvast vriendelijk bedankt.
Zojuist geregistreerd en ik heb meteen een probleem.
Om bepaalde data uit een database zo nu en dan naar bepaalde mensen te verzenden zet ik het in een excel sheet en verzend ik het vervolgens via email. Het is misschien niet de meest gangbare oplossing, maar het moet eenmaal op deze manier.
Ik heb de volgende stored procedures geschreven:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| CREATE procedure sp_subvtMailer as select top 1 SalesRepNR into ##tblVTMailer from terminal2 where LastCommunicationTime > email_sent_date and LastCommunicationTime < dateadd(mi, -1, getdate() ) select salesrepnr from ##tblVTMailer update terminal2 set email_sent_date = getdate() where salesrepnr = (select salesrepnr from ##tblVTMailer) exec orderstoexcel exec sendmail drop table ##tblVTMailer GO |
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| CREATE procedure orderstoexcel
as
exec spExecute_ADODB_SQL @DDL='drop table porders',
@DataSource ='C:\temp\VTorders.xls'
exec spExecute_ADODB_SQL @DDL='Create table porders
(Ordernummer Text, Klantnummer Text, TotaalBedrag currency, VerzendDatum date, OrderDatum date, Producten int)',
@DataSource ='C:\temp\VTorders.xls'
INSERT INTO OPENDATASOURCE ('Microsoft.Jet.OleDB.4.0',
'Data Source="c:\temp\VTorders.xls";
extended Properties=Excel 8.0')...porders
(Ordernummer, Klantnummer, TotaalBedrag, VerzendDatum, OrderDatum, Producten)
select right([order].ordernr,6), right([order].entcustnr,6), [order].totalordervalue/100, [order].transmissiondate, [order].[orderdatum], count(orderdetail.ordernr) as Producten
from [order]
left outer join orderdetail
on [order].ordernr = orderdetail.ordernr
where left([order].ordernr,5) =
(select salesrepnr from ##tblVTMailer)
and transmissiondate > DATEADD(mi, -8, Getdate())
group by [order].transmissiondate, [order].entcustnr, [order].totalordervalue, [order].[orderdatum], orderdetail.ordernr, [order].ordernr
GO |
Het probleem is dat het excelbestand is 'gelocked' zolang de procedure draait. Hierdoor kan de sendmail procedure niet uitgevoerd worden. Ik heb getracht waitfor(delay 00:00:10) toe te voegen aan de tweede procedure, maar dan blijft de file gewoon 10 sec locked. Ik kom er even niet meer uit. Wie helpt mij?
Alvast vriendelijk bedankt.