У меня есть функция, единственная цель которой - получить некоторые данные при нажатии кнопки и вызывать ее несколько раз. Это код функции:Неверная попытка прочитать, когда данных нет.
Function GetData2(ByVal clientNo As Integer) As List(Of SocioInfo)
Dim theResults2 = New List(Of SocioInfo)
Dim connStr = "Data Source=localhost;Initial Catalog=testdb;Integrated Security=True;MultipleActiveResultSets=true"
Using conn = New SqlConnection(connStr)
Dim sql = "SELECT [FirstName], [LastName] FROM [CustInfo] Where ([NumCuenta] = @SocioNum)"
Dim sql2 = "SELECT [AcctName], [AcctNum], [NewAcct], [Balance] From [ACCT_NEW] Where ([AcctNum] = @SocioNum)"
Dim sqlCmd = New SqlCommand(sql, conn)
Dim sqlCmd2 = New SqlCommand(sql2, conn)
sqlCmd.Parameters.AddWithValue("@SocioNum", CDbl(txtInput.Text))
sqlCmd2.Parameters.AddWithValue("@SocioNum", CDbl(txtInput.Text))
conn.Open()
Dim rdr = sqlCmd.ExecuteReader
Dim rdr2 = sqlCmd2.ExecuteReader
While rdr.Read
theResults2.Add(New SocioInfo With {
.Nombre = rdr.GetString(0),
.LastName = rdr.GetString(1)
})
End While
While rdr2.Read
theResults2.Add(New SocioInfo With {
.CuentaName = rdr.GetString(0),
.AcctNum = rdr.GetValue(1),
.AcctFull = rdr2.GetValue(2),
.Balance = rdr2.GetValue(3)
})
End While
End Using
Return theResults2
End Function
Я не 100% уверен, что это лучший способ сделать это (в основном необходимо получить данные из двух разных таблиц). Дело в том, что Rdr
не показывает мне никакой ошибки, Rdr2
просто ударяет по лицу. Исключение заключается в следующем:
Invalid attempt to read when no data is present.
* Facepalm * Я только что видел его. Такая простая проблема ... Я клянусь богом, я посмотрел на нее, как 5 раз, до публикации. Geesh. У меня теперь есть смешная проблема ... Я нажимаю кнопку «Поиск», но программа просто любопытная. Исключено исключение VB. –
Я так опасаюсь SQL; Я боюсь этого ха-ха. Вот почему я не пошел с Inner Join. Ваш ответ совершенный Стив, спасибо миллион. –