'OleDbInsertCommand1
'
Me.OleDbInsertCommand1.CommandText = "INSERT INTO Доступ(Группа, Логин, Пароль) VALUES (?, ?, ?)"
Me.OleDbInsertCommand1.Connection = Me.OleDbConnection1
Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Группа", System.Data.OleDb.OleDbType.VarWChar, 50, "Группа"))
Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Логин", System.Data.OleDb.OleDbType.VarWChar, 50, "Логин"))
Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Пароль", System.Data.OleDb.OleDbType.VarWChar, 50, "Пароль"))
'
'OleDbDeleteCommand1
'
Me.OleDbDeleteCommand1.CommandText = "DELETE FROM Доступ WHERE (Код = ?) AND (Группа = ? OR ? IS NULL AND Группа IS NUL" & _
"L) AND (Логин = ? OR ? IS NULL AND Логин IS NULL) AND (Пароль = ? OR ? IS NULL A" & _
"ND Пароль IS NULL)"
Me.OleDbDeleteCommand1.Connection = Me.OleDbConnection1
Me.OleDbDeleteCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_Код", System.Data.OleDb.OleDbType.Integer, 0, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "Код", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbDeleteCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_Группа", System.Data.OleDb.OleDbType.VarWChar, 50, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "Группа", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbDeleteCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_Группа1", System.Data.OleDb.OleDbType.VarWChar, 50, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "Группа", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbDeleteCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_Логин", System.Data.OleDb.OleDbType.VarWChar, 50, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "Логин", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbDeleteCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_Логин1", System.Data.OleDb.OleDbType.VarWChar, 50, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "Логин", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbDeleteCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_Пароль", System.Data.OleDb.OleDbType.VarWChar, 50, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "Пароль", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbDeleteCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_Пароль1", System.Data.OleDb.OleDbType.VarWChar, 50, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "Пароль", System.Data.DataRowVersion.Original, Nothing))
'
'OleDbUpdateCommand1
'
Me.OleDbUpdateCommand1.CommandText = "UPDATE Доступ SET Группа = ?, Логин = ?, Пароль = ? WHERE (Код = ?) AND (Группа =" & _
" ? OR ? IS NULL AND Группа IS NULL) AND (Логин = ? OR ? IS NULL AND Логин IS NUL" & _
"L) AND (Пароль = ? OR ? IS NULL AND Пароль IS NULL)"
Me.OleDbUpdateCommand1.Connection = Me.OleDbConnection1
Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Группа", System.Data.OleDb.OleDbType.VarWChar, 50, "Группа"))
Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Логин", System.Data.OleDb.OleDbType.VarWChar, 50, "Логин"))
Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Пароль", System.Data.OleDb.OleDbType.VarWChar, 50, "Пароль"))
Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_Код", System.Data.OleDb.OleDbType.Integer, 0, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "Код", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_Группа", System.Data.OleDb.OleDbType.VarWChar, 50, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "Группа", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_Группа1", System.Data.OleDb.OleDbType.VarWChar, 50, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "Группа", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_Логин", System.Data.OleDb.OleDbType.VarWChar, 50, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "Логин", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_Логин1", System.Data.OleDb.OleDbType.VarWChar, 50, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "Логин", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_Пароль", System.Data.OleDb.OleDbType.VarWChar, 50, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "Пароль", System.Data.DataRowVersion.Original, Nothing))
Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_Пароль1", System.Data.OleDb.OleDbType.VarWChar, 50, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "Пароль", System.Data.DataRowVersion.Original, Nothing))
'
Dim cRow As DataRow = frm3.DataSet11.Доступ.NewRow()
cRow.BeginEdit()
cRow("Логин") = TextLogin.Text
cRow("Группа") = "Без группы"
cRow.EndEdit()
frm3.DataSet11.Доступ.Rows.Add(cRow)
Dim myRow As DataRow
For Each myRow In frm3.DataSet11.Доступ.Rows
If Not myRow.RowState = DataRowState.Deleted Then
If myRow("Логин") = frm6.DataGrid1.Item(frm6.DataGrid1.CurrentRowIndex, 2) Then
myRow.Delete()
Exit For
End If
End If
Next
If Not frm3.DataSet11.HasChanges() Then
Exit Sub
End If
frm3.OleDbDataAdapter1.Update(frm3.DataSet11)
frm3.OleDbDataAdapter1.Update(frm3.DataSet11)
Dim cRow As DataRow = frm3.DataSet11.Доступ.NewRow()
cRow.BeginEdit()
cRow("Логин") = TextLogin.Text
cRow("Группа") = "Без группы"
cRow("Пароль") = " "
cRow.EndEdit()
frm3.DataSet11.Доступ.Rows.Add(cRow)
Dim sqlSB As OleDb.OleDbCommandBuilder
sqlSB = New OleDb.OleDbCommandBuilder(frm3.OleDbDataAdapter1)
frm3.OleDbDataAdapter1.InsertCommand = sqlSB.GetInsertCommand
frm3.OleDbDataAdapter1.Update(frm3.DataSet11, frm3.DataSet11.Tables("Доступ").TableName)
frm3.DataSet11.AcceptChanges()
myRow.Delete()
Dim sqlSB As OleDb.OleDbCommandBuilder
sqlSB = New OleDb.OleDbCommandBuilder(frm3.OleDbDataAdapter1)
frm3.OleDbDataAdapter1.DeleteCommand = sqlSB.GetDeleteCommand
frm3.OleDbDataAdapter1.Update(frm3.DataSet11, frm3.DataSet11.Tables("Доступ").TableName)
frm3.DataSet11.AcceptChanges()
AddHandler da.RowUpdated, New OleDbRowUpdatedEventHandler(AddressOf OnRowUpdated)
Private Sub OnRowUpdated(ByVal sender As Object, ByVal args As OleDbRowUpdatedEventArgs)
Dim newID As Integer = 0
Dim idCMD As OleDbCommand = New OleDbCommand("SELECT @@IDENTITY", conn)
If args.StatementType = StatementType.Insert Then
newID = CInt(idCMD.ExecuteScalar())
args.Row("id") = newID
End If
End Sub
Dim cRow As DataRow = frm3.DataSet11.Access.NewRow()
cRow.BeginEdit()
cRow("Login") = TextLogin.Text
cRow("Group") = "Без группы"
cRow("Pass") = " "
cRow.EndEdit()
frm3.DataSet11.Access.Rows.Add(cRow)
Dim sqlSB As OleDb.OleDbCommandBuilder = New OleDb.OleDbCommandBuilder(frm3.OleDbDataAdapter1)
frm3.OleDbDataAdapter1.Update(frm3.DataSet11, frm3.DataSet11.Tables("Access").TableName)
frm3.DataSet11.AcceptChanges()
myRow.Delete()
Dim sqlSB As OleDb.OleDbCommandBuilder = New OleDb.OleDbCommandBuilder(frm3.OleDbDataAdapter1)
frm3.OleDbDataAdapter1.Update(frm3.DataSet11, frm3.DataSet11.Tables("Access").TableName)
frm3.DataSet11.AcceptChanges()
Такс, проверяю ваши предположения
....
Результат...выдает ту же самую ошибку на той же строчке
И еще я заметила, что при добавлении новой строки в базу в Access-е первичный ключ имеет одно значение, а в самом DataSet11 другое.
Не вижу AddHandler... В этом же вся соль была.
Какое оно в DataSet11? У меня оно оставалось Null, пока я не прикрутила обработчик OnRowUpdate
Не вижу AddHandler... В этом же вся соль была.
Какое оно в DataSet11? У меня оно оставалось Null, пока я не прикрутила обработчик OnRowUpdate
У меня адаптер сгенерен мастером. Где нужно прописать эту строку.
Хотя, для других событий я никогда не добавляла ничего. Они всегда работали без AddHandler.
Например, в базе строке присваевается значение 24, а в датасете 1 (если это первая добавленная строка после загрузки приложения)...
Loiste писал(а):System.Data.OleDB должно быть в референсах? У меня его там нет. Когда открываю окно для добавления - там тоже нет. У меня только System.Data есть.
System.Data.OleDB должно быть в референсах? У меня его там нет. Когда открываю окно для добавления - там тоже нет. У меня только System.Data есть
Private Sub OleDBDataAdapter1_OnRowUpdated(ByVal sender As Object, ByVal args As System.Data.OleDb.OleDbRowUpdatedEventArgs) Handles OleDbDataAdapter1.RowUpdated
Dim newID As Integer = 0
Dim idCMD As OleDb.OleDbCommand = New OleDb.OleDbCommand("SELECT @@IDENTITY", OleDbConnection1)
If args.StatementType = StatementType.Insert Then
newID = CInt(idCMD.ExecuteScalar())
args.Row("ID") = newID
End If
End Sub
Loiste писал(а):System.Data.OleDB должно быть в референсах? У меня его там нет. Когда открываю окно для добавления - там тоже нет. У меня только System.Data есть.
Private Sub OleDBDataAdapter1_OnRowUpdated(ByVal sender As Object, ByVal args As System.Data.OleDb.OleDbRowUpdatedEventArgs) Handles OleDbDataAdapter1.RowUpdated
Dim newID As Integer = 0
Dim idCMD As OleDb.OleDbCommand = New OleDb.OleDbCommand("SELECT @@IDENTITY", OleDbConnection1)
If args.StatementType = StatementType.Insert Then
newID = CInt(idCMD.ExecuteScalar())
args.Row("ID") = newID
End If
End Sub
Сейчас этот форум просматривают: Yandex-бот и гости: 4