2014-10-14 4 views
-1

Я новичок в vb .net Я создаю систему резервирования авиакомпании проекта, поэтому мне нужно получить данные из двух таблиц и показать в моей форме vb textboxs Я использую внутреннее соединение для извлечения данных из двух разных таблиц, но я всегда получаю ошибки. Ребята смотрят мой код и предлагают me.here TICKET_NO, CUSTOMER_ID и FLIGHT_ID здесь, в таблице TICKET_RESERVATION и FLIGHT_CHARGES здесь, в столбцах FLIGHT_DETAILS и FLIGHT_ID здесь как TICKET_RESERVATION и FLIGHT_DETAILS Таблицы Просьба помочь мнеКак использовать внутреннее соединение в vb .net, чтобы заполнить текстовое поле vb windows form application

Я больше получаю ошибку никакого значения, указанные для одного или нескольких обязательных параметров

Try 
    If Not con.State = ConnectionState.Open Then 
     con.Open() 
    End If 
    Dim da As New OleDb.OleDbDataAdapter("SELECT TICKET.TICKET_NO,CUSTOMER.CUSTOMER_ID,FLIGHT.FLIGHT_ID,FLIGHT.FLIGHT_CHARGES FROM TICKET_RESERVATION INNER JOIN FLIGHT_DETAILS ON TICKET_RESERVATION.FLIGHT_ID = FLIGHT_DETAILS.FLIGHT_ID WHERE [TICKET_NO]= '" & txtTicketNo.Text & "'", con) 
    Dim ds As New DataSet 
    da.Fill(ds, "TICKET_RESERVATION") 
    If ds.Tables("TICKET_RESERVATION").Rows.Count > 0 Then 
     txtTicketNo.Text = ds.Tables("TICKET_RESERVATION").Rows(0).Item(0).ToString() 
     txtCustomerId.Text = ds.Tables("TICKET_RESERVATION").Rows(0).Item(1).ToString() 
     txtFlightId.Text = ds.Tables("TICKET_RESERVATION").Rows(0).Item(2).ToString() 
     txtAmount.Text = ds.Tables("FLIGHT_DETAILS").Rows(0).Item(3).ToString() 

    End If 
    con.Close() 
Catch ex As Exception 
    MsgBox(ex.Message.ToString) 
End Try 

теперь мой prblem это решить, но сейчас я получаю объект ссылки ошибка не указывает на экземпляр объекта я думаю, что теперь prblem в этот мой код

Dim ds As New DataSet 
     da.Fill(ds) 
     If ds.Tables("TICKET_RESERVATION").Rows.Count > 0 Then 
      txtTicketNo.Text = ds.Tables("TICKET_RESERVATION").Rows(0).Item(0).ToString() 
      txtCustomerId.Text = ds.Tables("TICKET_RESERVATION").Rows(0).Item(1).ToString() 
      txtFlightId.Text = ds.Tables("TICKET_RESERVATION").Rows(0).Item(2).ToString() 
      txtAmount.Text = ds.Tables("FLIGHT_DETAILS").Rows(0).Item(3).ToString() 

     End If 
+0

Почему 'ВНУТРЕННИЙ JOIN', а не' Left Outer Join'? Если ваш запрос возвращает значение NULL, это вызовет ошибку при попытке использовать '.ToString()'. –

+0

Первое, что вам нужно прочитать, а это общая практика, а не просто VB, - это избежать атак SQL-инъекций. Читайте об объектах Command. Спросите себя, что произойдет, если я приеду и наберу «A», «Drop table Ticket-Reservation»; в текстовое поле txtTicketNo ... –

+0

Не возвращайте свои вопросы. – LarsTech

ответ

1

Проекция часть вашего запроса, которую ссылается таблица псевдонимов, которые дон «т существуют в другом месте в запросе - такие, как касса, клиент и полет ...

Попробуйте этот запрос вместо (вы можете исправить SQL Injection самостоятельно ...):

SELECT TICKET.TICKET_NO,CUSTOMER.CUSTOMER_ID,FLIGHT.FLIGHT_ID,FLIGHT.FLIGHT_CHARGES FROM TICKET_RESERVATION AS TICKET INNER JOIN FLIGHT_DETAILS AS FLIGHT ON TICKET_RESERVATION.FLIGHT_ID = FLIGHT_DETAILS.FLIGHT_ID WHERE [TICKET_NO]= '" & txtTicketNo.Text & "'", con) 

Это будет по-прежнему авария из-за CUSTOME R, что я не вижу ничего в вашем запросе, но я исправил два других ... Возможно, вы могли бы взять Customer_If из таблицы Ticket_Reservation - я подозреваю, что он будет там ...

на самом деле, я разберусь с этим для вас ... Попробуйте это:

SELECT TICKET.TICKET_NO,TICKET.CUSTOMER_ID,FLIGHT.FLIGHT_ID,FLIGHT.FLIGHT_CHARGES FROM TICKET_RESERVATION AS TICKET INNER JOIN FLIGHT_DETAILS AS FLIGHT ON TICKET.FLIGHT_ID = FLIGHT.FLIGHT_ID WHERE [TICKET.TICKET_NO]= '" & txtTicketNo.Text & "'", con) 
+0

, когда я использую код ur, я получаю (синтаксическая ошибка в операции соединения). SELECT TICKET.TICKET_NO, CUSTOMER.CUSTOMER_ID, FLIGHT.FLIGHT_ID, FLIGHT.FLIGHT_CHARGES FROM TICKET_RESERVATION AS TICKET INNER JOIN FLIGHT_DETAILS AS FLIGHT ON TICKET_RESERVATION.FLIGHT_ID = FLIGHT_DETAILS.FLIGHT_ID WHERE [TICKET_NO] = '"& txtTicketNo.Text &"' ", con) –

+0

Вы по-прежнему ссылаетесь на таблицу Customer в части выбора запроса, но не указываете ее в части From из запроса ... –

+0

Я добавил еще к myanswer –

Смежные вопросы