用WindowsForm在Visual Basic中创建过程和复选框



问题。如何使用VB中的复选框处理创建过程中的更改请求?例如:这是我的sql代码和Visual Basic代码。提供一定时间的数据和前一天的数据的程序。在WindowsForm中显示的数据。如果选中复选框-前一天的数据,如果不检查-提供一定时间的数据。

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来处理创建过程^^中的更改请求

我应该添加@。。。在我的VB代码中: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

最新更新