Добавить строку в DataTable, которая является продуктом SQL JOIN - PullRequest
0 голосов
/ 30 ноября 2011

У меня есть строго типизированная DataTable в моем приложении, которая генерируется с помощью пары соединений SQL. Я использую его для отображения данных в удобочитаемом виде. Вот SQL, который делает это:

SELECT     tblEvents.EventName, vwAllMembers.LASTNAME AS LastName, vwAllMembers.FIRSTNAME AS FirstName, tblEventOccurences.EventOccurenceDate, 
                  tblAttendance.AttendanceID, tblAttendanceTypes.Description AS AttendanceType, tblAttendanceTypes.Abbreviation AS AttendanceTypeAbbrv, 
                  tblAttendance.EventOccurenceID, tblAttendance.StudentID, tblAttendance.AttendanceTypeID
FROM         tblAttendance INNER JOIN
                  tblEventOccurences ON tblAttendance.EventOccurenceID = tblEventOccurences.EventOccurenceID INNER JOIN
                  tblEvents ON tblEventOccurences.EventID = tblEvents.EventID INNER JOIN
                  vwAllMembers ON vwAllMembers.Id = tblAttendance.StudentID INNER JOIN
                  tblAttendanceTypes ON tblAttendance.AttendanceTypeID = tblAttendanceTypes.AttendanceTypeID

WHERE tblAttendance.EventOccurenceID=@EventOccurenceID

Я хочу добавить новую строку в эту таблицу данных в VB. Если бы я вставлял напрямую в БД в SQL, я бы просто добавил поля EventOccurenceID, StudentID и AttendanceTypeID в таблицу tblAttendance. Когда я пытаюсь добавить только эти значения в VB, я получаю сообщение об ошибке из моего DataTable, что столбец EvenName не может быть нулевым (и я также предполагаю, что все остальные столбцы).

Вот мой VB:

            Dim AttendanceTable As DAL.Attendance.AttendanceDataTable = AttendanceAdapter.ByEventOccurenceID(EventOccurenceID)
            Dim NewAttendanceRecord As AttendanceRow = AttendanceTable.NewAttendanceRow()
            NewAttendanceRecord.EventOccurenceID = EventOccurenceID
            NewAttendanceRecord.StudentID = StudentID
            NewAttendanceRecord.AttendanceTypeID = AttendanceTypeID

            AttendanceTable.Rows.Add(NewAttendanceRecord)

1 Ответ

2 голосов
/ 30 ноября 2011

Когда вы объединяете две таблицы, подобные этой, это как VIEW, а не как настоящая таблица.Вы не можете добавлять строки в представление.

Создайте другой адаптер, который возвращает только таблицу, которую вы хотите изменить, и используйте ее для добавления строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...