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