How to pass a parameter from vb.net

后端 未结 3 1476
心在旅途
心在旅途 2020-12-21 23:30

I have a Program that will auto run each night, run a query, and email results. In my program I am calling a function as part of the query... What i\'d like to is pass the

相关标签:
3条回答
  • 2020-12-21 23:38

    To call this function in VB.Net code, you should place the function call in a Stored Procedure and call this Procedure from VB.NET, passing the parameters as follows:

     Dim sqlcmd As New SqlClient.SqlCommand()
     sqlcmd.CommandType = CommandType.StoredProcedure
     sqlcmd.CommandText = "PROCEDURE_NAME"
     sqlcmd.Parameters.Add(New SqlClient.SqlParameter("@startdate", DateTime.Now.Date))
     sqlcmd.Parameters.Add(New SqlClient.SqlParameter("@enddate", DateTime.Now.Date.AddDays(1).AddSeconds(-1)));
     Dim obj As Object = sqlcmd.ExecuteScalar()
    

    If you can't create a Stored Procedure, you can do at the query level:

    declare @startdate datetime
    declare @enddate datetime
    
    set @startdate = cast(floor(cast(getdate() as float))as datetime) -- truncate the time part
    set @enddate = dateadd(S, -1, dateadd(d, 1, @startdate)) -- add 1 day, subtract 1 minute from today
    
    0 讨论(0)
  • 2020-12-21 23:48

    //These are the date variables.. if u need them seperately

    Dim TodayDt As DateTime = DateTime.Today
    Dim Tomorrow As DateTime = DateTime.Today.AddDays(1)
    Dim TodayEnd as DateTime
    TodayEnd = Tomorrow.AddSeconds(-1)
    

    //This is the SQL Command that executes in SQL Server

      SELECT
      SUM(QTY) AS Discounts
    FROM
      dbo.fFinancialDataFull('Date Range Report', startdate , enddate, '1', '1', 'ALL', 'ALL', 'ALL', 'ALL', '1', '1', '1', '1', '1') AS fFinancialDataFull_1
    WHERE ReportCategoryID = 62
     AND startdate = TodayDt
     AND enddate = TodayEnd AS unlimitedtbl
    

    //This is the function u need to write to make the same SQL run on VB

    Public Function GetValueByDates() As String
        Dim TodayDt As DateTime = DateTime.Today
        Dim Tomorrow As DateTime = DateTime.Today.AddDays(1)
        Dim TodayEnd as DateTime
        TodayEnd = Tomorrow.AddSeconds(-1)
        Dim ReportCategoryID = 62
    
        Dim sql As String = "       SELECT
          SUM(QTY) AS Discounts
        FROM
          dbo.fFinancialDataFull('Date Range Report', startdate , enddate, '1', '1', 'ALL', 'ALL', 'ALL', 'ALL', '1', '1', '1', '1', '1') AS fFinancialDataFull_1
        WHERE ReportCategoryID = @ReportCategoryID
         AND startdate = @TodayDt
         AND enddate = @TodayEnd AS unlimitedtbl"
    
        Using cn As New SqlConnection("Your connection string here"), _
            cmd As New SqlCommand(sql, cn)
    
            cmd.Parameters.Add("@TodayDt", SqlDbTypes.DateTime).Value = TodayDt
            cmd.Parameters.Add("@TodayEnd", SqlDbTypes.DateTime).Value = TodayEnd
            cmd.Parameters.Add("@ReportCategoryID", SqlDbTypes.int).Value = ReportCategoryID 
         Return cmd.ExecuteScalar().ToString()
        End Using
    End Function
    
    0 讨论(0)
  • 2020-12-21 23:56

    Try This :

    Dim StartDate as string = DateTime.Today.ToString("yyyy/MM/dd") & " 00:00:00"
    Dim EndDate as string = DateTime.Today.ToString("yyyy/MM/dd") & " 23:59:59"
    

    I don't know what database server you are using. Try different date format if that didn't work, like DateTime.Today.ToString("yyyy-MM-dd")

    0 讨论(0)
提交回复
热议问题