【发布时间】:2020-09-22 08:59:25
【问题描述】:
问题。 如何在 VB 中使用 CheckBox 来请求创建过程中的更改? 例如。: 这是我的 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
【问题讨论】:
-
你的问题到底是什么——你做了什么,什么没有按预期工作,你遇到了什么样的错误等等?
-
我不明白如何通过Visual Basic中的CheckBox从Procedure中获取WindowsForm中的先前数据。
-
将 3 个反引号放在各自的行上。在标记为
[sql-server]和[vb.net]的问题中,将lang-vb放在 vb 代码块的前 3 个反引号旁边,以防止其语法突出显示为 sqlserver -
您对
last_date("")和last_date.ToString()的使用令人困惑。请发布解释它们的代码(它是一个重载的方法吗?)
标签: sql-server vb.net stored-procedures