使用 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
问题。 如何在 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