2011-02-16 78 views
0

我想创建一个vb.net程序,要求用户在两个文本框内输入开始日期和结束日期。我想使用这些日期,他们在我创建的存储过程中输入以运行查询,该查询将返回基于这些日期的结果。VB.NET用户输入文本框在SQL脚本命令中使用

这是我目前的SQL脚本。

SET NOCOUNT ON 
DECLARE @DBNAME NVARCHAR(MAX) 
DECLARE @DBNAME1 NVARCHAR(MAX) 
DECLARE @varSQL NVARCHAR(MAX) 
DECLARE **@BEGDATE DATE** 
DECLARE **@ENDDATE DATE** 

DROP TABLE "SQL-EDD5 TOTALS" 
CREATE TABLE "SQL-EDD5 TOTALS" 
(SERVERNAME NVARCHAR(128), 
TOTAL_IMAGES INT, 
TOTAL_FILE_SIZE_MBS INT) 

DECLARE DBNAME CURSOR FAST_FORWARD FOR 
select name from sys.databases where [NAME] LIKE 'Z%' AND create_date between @BEGDATE and @ENDDATE 
ORDER BY [create_date] 

OPEN DBNAME 

FETCH NEXT FROM DBNAME INTO @DBname 
WHILE (@@FETCH_STATUS=0) 
BEGIN 

    Set @varSQL='INSERT INTO "SQL-EDD5 TOTALS" (TOTAL_IMAGES, TOTAL_FILE_SIZE_MBS) 
    SELECT SUM(PGCOUNT), sum(filesize/1024/1024) FROM ['[email protected]+'].dbo.tbldoc 
    WHERE created between between @BEGDATE and @ENDDATE' 
    EXEC SP_EXECUTESQL @varSQL 

    FETCH NEXT FROM DBNAME 
    INTO @DBNAME 
    END 

    CLOSE DBNAME 
    DEALLOCATE DBNAME 

    INSERT INTO "SQL-EDD5 TOTALS"(SERVERNAME) 
    SELECT CONVERT (NVARCHAR (128), SERVERPROPERTY('MachineName')) AS 'SERVER NAME' 

    SELECT SERVERNAME AS 'SERVER NAME',SUM(TOTAL_IMAGES) AS 'TOTAL IMAGES', SUM(TOTAL_FILE_SIZE_MBS) AS 'TOTAL FILE SIZE IN MBS' 
    FROM "SQL-EDD5 TOTALS" 
    GROUP BY [SERVERNAME] 
    ORDER BY [SERVERNAME] desc 

这是我当前的文本框Vb.net脚本。我想将文本框中的数据链接到@BEGDATE DATE,@ENDDATE DATE。这些是我想用来存储和使用用户输入的日期的变量。我能做些什么来链接它们。

下面是脚本:

Protected Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged 
    Dim BEGDATE As DateTime 
    BEGDATE = "@BEGDATE" 
End Sub 

Protected Sub TextBox2_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged 
    Dim ENDDATE As DateTime 
    ENDDATE = "@ENDDATE" 
End Sub 

末级

回答

1

好第一关,你不能绑定(链接)的SQL参数,你认为你能方式。

您需要做的是将文本设置为变量,然后在执行SQL语句之前将该变量设置为SQL参数。

你应该执行使用osmething类似的脚本如下:

Using cn As SqlClient.SqlConnection(dbConnectionString) 
    cn.Open() 
    Using cmd AS SqlCleint.SqlCommand(cn) 
     cmd.CommandText = "Select * From Table Where Between(@BeginDate, @EndDate) 
     cmd.Parameters.AddWithValue("@BeginDate", BeingDate) 
     cmd.Parameters.AddWithValue("@EndDate", EndDate) 

     cmd.ExecuteNonQuery() 
     'Or cmd.ExecuteQuery() 
    End Using 
End Using 

这将取代@BeginDate和@EndDate的所有实例相关的参数值

+0

在那里我会插入这个?在我的GridView? – Jeff 2011-02-16 20:37:43