0
我有一个大的VB/SQL应用程序,我创建了一个问题。我有一个程序表,他们有一个活动的标志。该标志可以通过用户屏幕切换。其他屏幕访问此表以填充下拉菜单。这些值作为ID字段(PK)存储在表中。我遇到的问题是我选择基于活动标志的下拉值。如果我选择了一个记录,该记录中存储了一个已经失效的过程,我会将旧对象未设置为实例....错误。VB - 如何测试值不在下拉
我希望能够做的是在填充下拉列表时检查记录中的值,并允许通过绕过SQL错误显示记录并仅将下拉值显示为空白而不更改记录本身。我希望我有道理。代码如下 - 非常香草的东西,但是我在成为系统管理员20年后回到了应用程序编程中,而且我仍然生锈。
库代码
Public Function GetDropDownList(ByVal strDropDownList As String, _
ByRef objSession As System.Web.SessionState.HttpSessionState) As String
Dim strSQL As String = ""
Select Case strDropDownList
Case "SurgicalProcedure_ID"
strSQL = "SELECT [ID]=0,[Description]='' " _
& "UNION " _
& "SELECT [ID],[Description] " _
& "FROM dbo.viw_List_SurgicalProcedures " _
& "WHERE ISNULL(Active,0) = 1 " _
& "ORDER BY [Description] ASC"
VB代码隐藏
With objSqlCommand
.Connection = mobjSqlConnection
.CommandText = "SELECT * " _
& "FROM dbo.viw_tblCaseProcedure " _
& "WHERE [ID] = " & Session("CASE_ID").ToString
.CommandType = CommandType.Text
End With
objSqlDataAdapter = New SqlDataAdapter(objSqlCommand)
objSqlDataAdapter.Fill(objSqlDataSet)
objSqlDataRow = objSqlDataSet.Tables(0).Rows(0)
objDropDownList = Me.SurgicalProcedure_ID
strStringValue = objSqlDataRow("SurgicalProcedure_ID").ToString()
If strStringValue = "" Then strStringValue = "0"
objDropDownList.Items.FindByValue(strStringValue).Selected = True
在此先感谢您的任何建议, 乔尔
rskar,这似乎是正确的方向。但是“没什么”不会奏效。在从该视图选择时,返回一个有效的值。我想我需要添加列/逻辑到表和操作反对它的SP。如果过程被标记为不活动,则由于库代码中的WHERE ISNULL条件,从select返回的值不在下拉列表中。而且由于历史问题,我无法更新表格值(对于旧案例,过程仍然有效,但对于新案例,则无效)。旧案件需要可访问。 – 2011-05-11 17:14:01
@rskar,我没有把@标志放在你的名字前面。感谢您的意见,并看到我上面的评论。 – 2011-05-11 18:02:08
@Joel - 你的意思是说你需要展示一个“不活跃”的选择,以便记录 - 曾经一度 - 现在已经将非活动过程作为其价值之一? – rskar 2011-05-11 18:13:48