Index out of range exception - {"particular"}
У меня есть база данных SQL со следующими подробностями таблиц;
Билл Без Особого Цена За Единицу Измерения Сумма Налога Taxamount
2905 авиаперевозка 100.000 100 10000.000 0.000 0.000
2905 таможня 4500.00 1 0.000 4500.000 675.000
2906 ТГК 250.000 250.000 0.000 1 38.000
2906 XYZ 5000.00 1 5000.000 0.0000 0.0000
В оконной форме у меня есть текстовое поле с именем Tbblbillto.Текст для поиска bill no и Datagrid со следующим именем. когда я наберу Билл нет. в текстовом поле, как все данные можно собрать из таблицы данных базы данных sql против счета no и отобразить в datagrid ?? Пожалуйста, помогите, как это сделать. на самом деле я использую его для своей собственной работы и никогда не испытываю никакого программного обеспечения или не изучал.
Конкретная Цена Единичная Сумма Taxamount Tax
Что я уже пробовал:
Private Sub Tbblbillto_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tbblbillto.TextChanged Dim Cmd As New SqlClient.SqlCommand Dim Con As New SqlClient.SqlConnection Dim Rd As SqlDataReader Con.ConnectionString = "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=dbase;Integrated Security=True;Pooling=False" Cmd.Connection = Con Con.Open() Cmd.CommandText = "Select * from Bill where BillNo = '" & Tbblbillto.Text & "'" Rd = Cmd.ExecuteReader Rd.Read() If Rd.HasRows Then Dtpblbilldate.Text = Rd.Item("BillDate") Dudblmode.Text = Rd.Item("Smode") Dudbltype.Text = Rd.Item("Stype") Lbcur.Text = Rd.Item("Curency") Tbbljobno.Text = Rd.Item("JOBNo") Dtpbljobdt.Text = Rd.Item("JobDate") Tbbillexr.Text = Rd.Item("ExRate") Tbblcrdit.Text = Rd.Item("CreditPeriod") Lbbillno.Text = Rd.Item("BillNoType") Tbbillcltid.Text = Rd.Item("ClientID") Tbblname.Text = Rd.Item("BillTo") Tbblmawb.Text = Rd.Item("MAWBBLNo") Dtblmawbdt.Text = Rd.Item("MAWBBLDate") Tbblhawb.Text = Rd.Item("HAWBBLNo") Dtblhawbdt.Text = Rd.Item("HAWBBLDate") Tbblorg.Text = Rd.Item("Origin") Tbblpol.Text = Rd.Item("POL") Tbbldst.Text = Rd.Item("Dest") Tbblpod.Text = Rd.Item("POD") Tbblpro.Text = Rd.Item("Products") Tbblinv.Text = Rd.Item("ShInvNo") Dtblinvdt.Text = Rd.Item("ShInvdt") Tbblqty.Text = Rd.Item("Qty") Tbblgwt.Text = Rd.Item("Gwt") Tbblcwt.Text = Rd.Item("Cwt") Tbblacof.Text = Rd.Item("Acof") Tbblcarrier.Text = Rd.Item("Carrier") Dudblfreight.Text = Rd.Item("Freight") Dudblterms.Text = Rd.Item("Incotrm") Cmd.CommandText = "Select BillNo from BillDetails Where BillNo = '" & Tbblbillto.Text & "'" Rd.Close() Rd = Cmd.ExecuteReader Rd.Read() If Rd.HasRows Then Dim Row As DataGridViewRow Dim I As Integer For I = 0 To Dgvbillsa.Rows.Count - 1 Row = Dgvbillsa.Rows(I) Using SqlCommand As New SqlCommand Row.Cells(0).Value = Rd.Item("Particular") (Error Here) Row.Cells(1).Value = Rd.Item("Price") Row.Cells(2).Value = Rd.Item("Unit") Row.Cells(3).Value = Rd.Item("Amount") Row.Cells(4).Value = Rd.Item("TaxAmount") Row.Cells(5).Value = Rd.Item("Tax") End Using Next End If ElseIf Len(Tbblbillto.Text) > 3 Then MsgBox("No Invoice Record Found", MsgBoxStyle.Critical, "MODIFY BILL") CmdEdit.Enabled = False End If End Sub
Richard MacCutchan
Int
не содержит значения.
Member 13174737
Спасибо за ваш ответ. Не могли бы вы посоветовать, что мне делать, чтобы получить доступ ??
Afzaal Ahmad Zeeshan
Предоставьте ему значение; какое-то значение, которое можно использовать.
Значение должно быть неотрицательным и меньше длины контейнера. Пожалуйста, ознакомьтесь также с сообщением об ошибке. :-)
0x01AA
Особенно предварительный просмотр сообщения об ошибке
Ralf Meier
В основном все уже сказано Афзаалом.
Речь идет об этих 2-х кодовых строках :
Dim Int Как Целое Число
Строки = Dgvbillsa.Строк(Инт)
Строка, к которой вы хотите получить доступ, должна исходить от вас (откуда нам это знать?). Это число должно быть значением из Int ...
Afzaal Ahmad Zeeshan
Это означает, что вы пытаетесь получить доступ к элементу, который не существует; вы пытаетесь захватить 10-й элемент в последовательности из 5 элементов. Как ты можешь это делать? Просто вы не можете. :-)
Итак, правильно проверьте размер вашего массива, а затем получите объект оттуда. Технически вам потребуется проверить размер или длину переменной Dgvbillsa, чтобы проверить, будет ли Int работать.
Во-вторых, поскольку вы не упомянули, где произошла ошибка, пожалуйста, дважды проверьте, есть ли в ячейках информация, существуют ли они и доступны ли они.
Member 13174737
Уважаемый сэр, я в Dgvbillsa(практическое руководство) снимите флажок Разрешить добавление. когда я проверяю включить добавление одних данных, показывающих без ошибок, но как я могу получить другие данные с тем же счетом нет.
Member 13174737
Я надеюсь, что в моем вопросе есть недоразумение. я редактирую свой запрос. Спасибо
Richard MacCutchan
Вы только выбираете BillNo
поле из элементов базы данных, поэтому вы не можете ссылаться ни на какие другие поля. Может быть, вам нужно потратить еще немного времени на изучение обоих VB.NET и SQL.
Member 13174737
выбраны и другие, но ошибка та же "Index out of range exception - {"particular"}"
УМК.Свойства commandtext = "выбрать [конкретное], [цена], [подразделение], [количество], [TaxAmount], [налог] из BillDetails где [BillNo] = '" &амп; Tbblbillto.Текст &"'"
РД.Рядом()
РД = ЦМД.Метода executereader
РД.Читать()
Если У РД. Есть Деньги, То
Тусклая Строка Как DataGridViewRow
Dim I Как Целое Число
Для I = 0 До Dgvbillsa.Строк.Количество-1
Строки = Dgvbillsa.Строк(Я)
С Помощью Sqlcommand Как Новый Sqlcommand, Который
Ряд.Ячейки (0). Value = Rd. Item ("[Particular]") (здесь ошибка)
Ряд.Ячейки (1). Value = Rd. Item("[Цена]")
Ряд.Ячейки (2). Value = Rd. Item("[Единица Измерения]")
Ряд.Ячейки (3). Value = Rd. Item ("[Сумма]")
Ряд.Ячейки (4). Value = Rd. Item("[TaxAmount]")
Ряд.Ячейки (5). Value = Rd. Item ("[Налог]")
Richard MacCutchan
Имя столбца: Particular
нет [Particular]
.