Sql server 从CSV为SQLCMD查询声明值

Sql server 从CSV为SQLCMD查询声明值,sql-server,csv,vbscript,Sql Server,Csv,Vbscript,我已经编写了一个SQL查询来搜索日期范围内的特定忠诚度销售,如下所示,是的,这是一个VBScript问题 DECLARE @datefrom date = '01-Jul-2015' DECLARE @dateto date = '23-Aug-2015' SELECT CONVERT(nvarchar,[SaleDate],112) as SaleDate, year(saledate) as SaleYear, month(saledate) as salemonth, day(saleda

我已经编写了一个SQL查询来搜索日期范围内的特定忠诚度销售,如下所示,是的,这是一个VBScript问题

DECLARE @datefrom date = '01-Jul-2015'
DECLARE @dateto date = '23-Aug-2015'
SELECT CONVERT(nvarchar,[SaleDate],112) as SaleDate, year(saledate) as SaleYear, month(saledate) as salemonth, day(saledate) as saleday,
COUNT([CustID]) as Customers, SUM([SaleTotal]) as SaleTotal
FROM [Server].[dbo].[LoyaltyTransactions]
WHERE LoyaltyTranTypeID =11 and SaleDate between @datefrom and @dateto
GROUP BY convert(nvarchar,[SaleDate],112), year(saledate), month(saledate), day(saledate)
ORDER BY convert(nvarchar,[SaleDate],112)
问题是,我不想每次最终用户需要不同的日期范围时都修改从/到的日期,所以我决定尝试编写我的第一个VBScript

我成功地编写了以下内容,以便从HTA GUI输出最终用户开始和结束日期(DD-MMM-YYYY)输入到CSV文件中

<html>
<head>
<title>LRR</title>
</head>
<HTA:APPLICATION
 CONTEXTMENU="no" 
 SCROLL="no"
 SINGLEINSTANCE="yes"
 Navigable="yes"
 BORDER="dialog"
/>
    <script language="VBScript">
    Sub SaveData
        Set objFSO = CreateObject("Scripting.FileSystemObject")
        If objFSO.FileExists("F:\DISKSETS\SCRIPTS\SQLREPORT\Report.txt") Then
            objFSO.DeleteFile("F:\DISKSETS\SCRIPTS\SQLREPORT\Report.txt")
            Set objFile = objFSO.CreateTextFile("F:\DISKSETS\SCRIPTS\SQLREPORT\Report.txt")
            strLine = SD.Value & "," & ED.Value & ","   
            objFile.WriteLine strLine
            objFile.Close
        End If
    End Sub
    Sub Window_onLoad
        window.resizeTo 320,230
    End Sub
            Sub RunProgram
        Set objShell = CreateObject("Wscript.Shell")
        objShell.Run "F:\DISKSETS\SCRIPTS\SQLREPORT\Report.vbs"
    End Sub
</script>
<body>
<p><span style="font-size:16px;">&nbsp;</span><u><strong><span style="font-size:16px;">Loyalty Redemption Report</span></strong></u></p>
<p><strong><span style="font-size:14px;">&nbsp;START DATE : <input maxlength="14" name="SD" size="14" type="text" value="DD-MMM-YYYY" />&nbsp;</span></strong></p>
<p><strong><span style="font-size:14px;">&nbsp; &nbsp;END DATE :&nbsp;<input maxlength="14" name="ED" size="14" type="text" value="DD-MMM-YYYY" /></span></strong></p>
<p>&nbsp;<strong><span style="font-size:14px;"><input name="REPORT" type="button" value="REPORT" onclick="SaveData" /></span></strong></p>
</body>
</html>

LRR
子存储数据
设置objFSO=CreateObject(“Scripting.FileSystemObject”)
如果存在objFSO.files(“F:\DISKSETS\SCRIPTS\SQLREPORT\Report.txt”),则
objFSO.DeleteFile(“F:\DISKSETS\SCRIPTS\SQLREPORT\Report.txt”)
Set objFile=objFSO.CreateTextFile(“F:\DISKSETS\SCRIPTS\SQLREPORT\Report.txt”)
strLine=SD.Value&“,”和ED.Value&“,”
objFile.WriteLine strLine
objFile.Close
如果结束
端接头
子窗口加载
window.resizeTo 320230
端接头
子运行程序
设置objShell=CreateObject(“Wscript.Shell”)
运行“F:\DISKSETS\SCRIPTS\SQLREPORT\Report.vbs”
端接头
忠诚赎回报告

开始日期:

结束日期:

这里是我陷入困境的地方,我现在需要VBScript从CSV中提取两个日期,并将它们放入我上面写的SQL查询中

从那里,我将能够使用SQLCMD获取VBSCript中的查询以输出到excel


TIA.

您已经检索到SD.Value和ED.Value(可能是日期),那么为什么不将它们作为参数传递给vbscript调用呢

<html>
<head>
<title>LRR</title>
</head>
<HTA:APPLICATION
 CONTEXTMENU="no" 
 SCROLL="no"
 SINGLEINSTANCE="yes"
 Navigable="yes"
 BORDER="dialog"
/>
    <script language="VBScript">
    Sub SaveData
        RunProgram SD.Value, ED.Value
    End Sub
    Sub Window_onLoad
        window.resizeTo 320,230
    End Sub
    Function RunProgram(startDate, endDate)
        Set objShell = CreateObject("Wscript.Shell")
        objShell.Run "F:\DISKSETS\SCRIPTS\SQLREPORT\Report.vbs " & startDate & " " & endDate
    End Function
</script>
<body>
<p><span style="font-size:16px;">&nbsp;</span><u><strong><span style="font-size:16px;">Loyalty Redemption Report</span></strong></u></p>
<p><strong><span style="font-size:14px;">&nbsp;START DATE : <input maxlength="14" name="SD" size="14" type="text" value="DD-MMM-YYYY" />&nbsp;</span></strong></p>
<p><strong><span style="font-size:14px;">&nbsp; &nbsp;END DATE :&nbsp;<input maxlength="14" name="ED" size="14" type="text" value="DD-MMM-YYYY" /></span></strong></p>
<p>&nbsp;<strong><span style="font-size:14px;"><input name="REPORT" type="button" value="REPORT" onclick="SaveData" /></span></strong></p>
</body>
</html>

LRR
子存储数据
运行程序SD.值,ED.值
端接头
子窗口加载
window.resizeTo 320230
端接头
函数运行程序(开始日期、结束日期)
设置objShell=CreateObject(“Wscript.Shell”)
运行“F:\DISKSETS\SCRIPTS\SQLREPORT\Report.vbs”&startDate&&endDate
端函数
忠诚赎回报告

开始日期:

结束日期:

在vbscript中,可以使用
WScript.Arguments(0)
WScript.Arguments(1)
访问这些参数,指示传入的第一个和第二个参数