我在我的程序中有各種搜索框(每個表單一個),它被編碼以便通過各種方法返回結果,並且只要返回的結果是整數格式,它就可以很好地工作。我目前的問題是我正在創建一個新表單,並且需要列表搜索框來顯示REPAIR_DATE列的搜索條件找到的所有結果,這顯然是DateTime字段而不是整數。VB通過搜索返回日期
我當前的代碼如下:
Private Sub btnSearch_Click(sender As System.Object, e As System.EventArgs) Handles btnSearch.Click
Cursor = Cursors.WaitCursor
Dirty()
If cbColName.Text = "SEARCH BY" Then
MeMsgBoxSearchCriteria.ShowDialog()
Else : lbSearchResults.Items.Clear()
Select Case MaintenanceDataSet.Maintenance_Table.Columns(cbColName.Text).DataType
Case GetType(Integer)
DV.RowFilter = cbColName.Text & " = " & tbSearchInput.Text.Trim
Case GetType(Date)
DV.RowFilter = cbColName.Text & " = #" & tbSearchInput.Text.Trim & "#"
Case Else
DV.RowFilter = cbColName.Text & " Like '*" & tbSearchInput.Text.Trim & "*'"
End Select
If DV.Count > 0 Then
For ix As Integer = 0 To DV.Count - 1
lbSearchResults.Items.Add(DV.Item(ix)("ID"))
Next
If DV.Count = 1 Then
lbSearchResults.SelectedIndex = 0
Dim ix As Integer = MaintenanceDataSetBindingSource.Find("ID", CInt(lbSearchResults.SelectedItem))
MaintenanceDataSetBindingSource.Position = ix
Else
lbSearchResults.Visible = True
lbSearchResults.BringToFront()
End If
Else
' Display a message box notifying users the search criteria is not found.
MeMsgBoxNoSearch.ShowDialog()
End If
End If
Cursor = Cursors.Default
End Sub
Private Sub lbSearchResults_SelectedIndexChanged(sender As Object, e As EventArgs) Handles lbSearchResults.SelectedIndexChanged
Dim ix As Integer = MaintenanceDataSetBindingSource.Find("ID", CInt(lbSearchResults.SelectedItem.ToString))
MaintenanceDataSetBindingSource.Position = ix
lbSearchResults.Visible = False
End Sub
目前我只得到一個記錄ID或ID的回報,而不是在REPAIR_DATE列。
我試圖重新定義:「的類型‘整數’不能轉換到‘日期’值」
CInt(lbSearchResults.SelectedItem.ToString)
到
CDate(lbSearchResults.SelectedItem.ToString)
,並將其與誤差
我真的很茫然如何讓這個REPAIR_Date回來。
我對VB還是比較新的,不確定如何正確地將REPAIR_DATE結果帶回來,而不是整數。我確實得到了結果,但當點擊其中一個返回的結果時,它應該加載該記錄。當選擇返回值時,它會導致程序中止上面列出的錯誤,主要是因爲它正在尋找返回一個不是日期的整數。我真的明白爲什麼錯誤信息和爲什麼失敗,我只是不知道如何解決它。
在我的其他表格中使用相同的代碼完美地工作,並帶回我的LOAD_NUMBER這是一個整數。很明顯,對代碼進行了細微的更改以適應當前表單的需要。
之前有人問或要求我爲什麼沒有嘗試過DeBugging ...我不是真正熟悉調試功能,雖然我已經嘗試了無數次使用調試它只顯示它是從ID獲得結果字段並返回ID整數。所以這不是真正有用的,因爲它正在帶回代碼目前正在告訴它做的事情。
lbSearchResults.SelectedItem.ToString是隱藏的列表框,它變得可見並顯示搜索時返回的項目。然後,我可以選擇我想從該列表框&中加載相關記錄的結果。可能不是最有效的方法來做到這一點,但我仍然在學習,並在其他網頁上工作。
Jaxedin:你的obs是正確的......這是問題所在。該代碼旨在將所有結果導入可點擊的列表框(在這種情況下按日期)。
到DV參考如下:Private DV As DataView
我很肯定的問題是內部的私人小組lbSearchResults_SelectedIndexChanged子,因爲如果我試圖改變九是它說不能更改日期的整數(顯然)一個日期,這是我迷失的地方。我希望這更清楚一點......?
接聽MIC:
是主鍵是ID字段。我不想將ID轉換爲日期。我期待在任何記錄中找到搜索條件。一旦找到,我希望它在列表框中顯示REPAIR_DATE列結果。當我點擊日期時,它會加載記錄... ID字段被設置爲知道要加載哪條記錄。
我有一個在數據庫中有一個數據列的CB我想要搜索。通過選擇特定數據列,搜索條件僅在該列中查找,而不是整個記錄。我有一個用戶輸入搜索條件的結核病。
例如,用戶搜索「交流發電機」並選擇APU_REPAIR_DESCRIP作爲要搜索的列。任何具有搜索到的單詞交流發電機的修理記錄都將返回並且工作,只有我獲得記錄ID號(s )而不是修理日期(s)。 我正在使用MS SQL 2015作爲我的數據庫。
我不知道你需要看到什麼代碼才能進一步理解我的請求。
[如何調試小程序](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/) – Plutonix
Plutonix,相信我這不是一個小程序。我請求協助的頁面是479行代碼,不包括加1200行,我的「默認」形式和其他6種其他形式的近似等長或更多。我僅在我的問題上發佈了相關代碼。 –
你確定這不是一個錯字嗎?您正在「ID」列中搜索日期。 – Jaxedin