使用 Windows 窗体在 Visual Basic 中创建过程和复选框

Create Procedure and CheckBox in Visual Basic with WindowsForm

问题。 如何在 VB 中将 CheckBox 用于 Create Procedure 中的更改请求? 例如。: 这是我的 sql 代码和 Visual Basic 代码。 该程序提供一定时间的数据和前一天的数据。 WindowsForm 中显示的数据。 如果选中 CheckBox - 前一天的数据, 如果不检查 - 提供一定时间的数据。

ALTER PROCEDURE [dbo].[UP_DIR_sel_protocol_DataImport]  
    @obj varchar(10), @k_uch varchar(10), @tab varchar(10), @pr_withLastdate int
AS
begin

set dateformat dmy

if (@pr_withLastdate = 0)
begin
    select * 
    from DIR_protocol_DataImport 
    where left(codDB,1)=(case @obj when 'FL' then '4' when 'UR' then '3' else left(codDB,1) end)
    and codDB=(case when @k_uch='' then codDB else @k_uch end) 
    and isnull(tab,'')=(case when @tab='' then isnull(tab,'') else @tab end) 
    order by codDB,tab,id
end
if (@pr_withLastdate = 1)
begin
    select * 
    from DIR_protocol_DataImport 
    where left(codDB,1)=(case @obj when 'FL' then '4' when 'UR' then '3' else left(codDB,1) end)
    and codDB=(case when @k_uch='' then codDB else @k_uch end) 
    and isnull(tab,'')=(case when @tab='' then isnull(tab,'') else @tab end)  
    and eddate<convert(datetime,convert(varchar(10),getdate(),104)) --без изменений текущего дня
    order by codDB,tab,id
end

end
Public Sub proc_protocol()
        Try
            'regim: "protocol"
            Grid_report.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None
            Me.Cursor = Cursors.WaitCursor

            Dim v_sql As String = ""
            Dim filtr_uch As String = "", filtr_tab As String = "", n_tab As Int16 = 0, last_date As Boolean

            If Check_uch.CheckedItems.Count() = 1 Then
                filtr_uch = Check_uch.CheckedItems.Item(0)
                filtr_uch = filtr_uch.Substring(1)
                filtr_uch = filtr_uch.Substring(0, filtr_uch.IndexOf(")"))
            End If
            If Ch_0.Checked Then
                n_tab += 1
                filtr_tab = "0"
            End If
            If Ch_1.Checked Then
                n_tab += 1
                filtr_tab = "1"
            End If
            If Ch_2.Checked Then
                n_tab += 1
                filtr_tab = "2"
            End If
            If Ch_3.Checked Then
                n_tab += 1
                filtr_tab = "3"
            End If
            If Ch_4.Checked Then
                n_tab += 1
                filtr_tab = "4"
            End If
            If Ch_5.Checked Then
                n_tab += 1
                filtr_tab = "5"
            End If
            If Ch_6.Checked Then
                n_tab += 1
                filtr_tab = "6"
            End If
            If Ch_8.Checked Then
                n_tab += 1
                filtr_tab = "8"
            End If
            If Ch_9.Checked Then
                n_tab += 1
                filtr_tab = "9"
            End If
            If Ch_del.Checked Then
                n_tab += 1
                filtr_tab = "del"
            End If
            If Ch_lastDate.Checked Then
                last_date("")
                n_tab += 1
                filtr_tab = "last"
            Else
                last_date("")

            End If
            If n_tab > 1 Then filtr_tab = ""

            v_sql = "exec dbo.UP_DIR_sel_protocol_DataImport " + M_convert.FM_strSTR("FL") + "," + M_convert.FM_strSTR(filtr_uch) _
                + "," + M_convert.FM_strSTR(filtr_tab) + "," + last_date.ToString()
            M_qSQL.Build_DGView(Me.Grid_report, v_sql)

            Grid_report.Refresh()
            Me.Cursor = Cursors.Default
            Grid_report.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
            Dim v_str = "Строк - " + Grid_report.RowCount.ToString
            ToolStripStatusLabel1.Text = v_str

        Catch ex As Exception
            MessageBox.Show("Oшибка в процедуре " + ex.Message, Me.Text)
        End Try
    End Sub

所以,我知道如何在 VB 中使用 CheckBox 在 Create Procedure 中进行更改请求 ^^

我应该在 VB-code 中添加 @... :D 非常感谢您的帮助!

Public Sub proc_protocol()
        Try
            'regim: "protocol"
            Grid_report.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None
            Me.Cursor = Cursors.WaitCursor

            Dim v_sql As String = ""
            Dim filtr_uch As String = "", filtr_tab As String = "", n_tab As Int16 = 0, last_date As Integer
'...
'...
'...
            If Ch_lastDate.Checked Then
                last_date = 1
                n_tab += 1
                filtr_tab = "last"
            Else
                last_date = 0

            End If

            If n_tab > 1 Then filtr_tab = ""

            **v_sql = "exec dbo.UP_DIR_sel_protocol_DataImport " _
            + "@obj = " + M_convert.FM_strSTR("FL") _
            + ",@k_uch = " + M_convert.FM_strSTR(filtr_uch) _
            + ",@tab = " + M_convert.FM_strSTR(filtr_tab) _
            + ",@pr_withLastdate = " + last_date.ToString() `this is @pr_withLastdate change request in the Create Procedure**

            M_qSQL.Build_DGView(Me.Grid_report, v_sql)
'...
'...
'...
        End Try
    End Sub