Я не знаю, о чем идет ошибка. Когда я запускаю инструкцию SQL в SQL Server или в построителе запросов vb.net, я не получаю ошибки и получаю результаты. Но когда я запускаю его из моей vb.net коды, я получаю эту ошибку:IndexOutOfRangeException: имя_поля в SQL Server select statement
System.IndexOutOfRangeException:Invoice
at System.Data.ProvideBase.FieldNameLookup.GetORdrinal(String fieldName)
at Suste.mData.SqlClient.SqlDataReader.GetOrdnal(String name).... (more texts)
Это мой код:
Private Sub FillPulloutList(employee_id As Integer, transaction_date As Date)
Try
cnn.Open()
query = "SELECT invoice As 'Invoice', product_id As 'Product ID', quantity As 'Quantity', amount As 'Amount', transaction_date As 'Date', employee_id As 'Employee ID' FROM pullouts_tbl " & _
"WHERE (transaction_date = @transaction_date) AND (employee_id = @employee_id)"
cmd.Parameters.AddWithValue("@_transaction_date", transaction_date)
cmd.Parameters.AddWithValue("@_employee_id", employee_id)
dr = cmd.ExecuteReader()
While dr.Read
PulloutListDGV.Rows.Add(dr("Invoice"), dr("Amount"))
End While
Catch ex As Exception
MessageBox.Show(ex.ToString)
Finally
cnn.Close()
End Try
End Sub
Я использовал этот код более ста раз в этой программе, что я создавая, но не получал никаких ошибок, кроме этого. Можете ли вы указать мне, что я здесь делаю неправильно? Благодарю.
Это мой стол, если это помогает
if not exists (select * from sys.tables where name = N'pullouts_tbl' and type = N'U')
begin
create table pullouts_tbl
(
tid int identity(1,1) not null,
transaction_date date not null,
invoice int not null,
product_id nchar(20) not null,
quantity int not null,
amount decimal(18,2) not null,
employee_id nchar(20) not null
constraint pullouts_tbl_tid_pk primary key clustered (tid)
constraint pullouts_tbl_invoice_fk
foreign key (invoice) references invoice_tbl(invoice),
constraint pullouts_tbl_product_id_fk
foreign key (product_id) references products_tbl(product_id),
constraint pullouts_tbl_employee_id_fk
foreign key (employee_id) references employees_tbl(employee_id)
)
Спасибо. Я понял. Я забыл cmd = новый SQLCommand (query, cnn) – Ibanez1408
Вы действительно должны использовать локальную переменную для этого, поэтому не было бы возможности совершить эту ошибку. Я бы предложил локальную переменную для подключения, если вам действительно не нужно использовать один и тот же объект соединения несколькими способами. – jmcilhinney
Мне бы очень хотелось это сделать, но я не знаю, как его реализовать. Можете ли вы показать мне пример? – Ibanez1408