Hi,
The automatic key assignment is trying to assign a null value to the primary key(AccountID) on saving the record causing an error. Line is bold.
Regards, Bob
CREATE TABLE [dbo].[AppGlobal]( [AccountID] [int] Identity (1,1) NOT NULL, [AppID] [varchar](50) NOT NULL, [AppPassword] [varchar](50) NOT NULL, [AppNickName] [varchar](50) NOT NULL, [AppCreateDate] [datetime] NOT NULL ) ON [PRIMARY]
Public Shared Function AddLogin(thisADB As AppDB, ByRef AuditHdr As auditHdr) As List(Of AuditLineItem) Dim LineItemList As New List(Of AuditLineItem) Dim LineItemSeq As Integer = 0 Dim connection As SqlConnection = BTDB.GetConnection Dim insertStatement As String ="INSERT AppGlobal " &"(AppID, AppPassword, AppNickName, AppCreateDate) " &"VALUES (@AppID, @AppPassword, @AppNickName, @AppCreateDate)" Dim insertCommand As New SqlCommand(insertStatement, connection) AuditHdr = New auditHdr 'AuditHdr.AuditID = 0 AuditHdr.AccountID = 999999 'Dim auditHdr As auditHdr AuditHdr.CreateDate = Now AuditHdr.TableName = "AppGlobal" AuditHdr.Action = "A" AuditHdr.ScreenID = gm_ScrID Dim auditLineItem As AuditLineItem insertCommand.Parameters.AddWithValue("@AppID", thisADB.AppID) auditLineItem = New AuditLineItem auditLineItem.AuditID = AuditHdr.AuditID LineItemSeq = LineItemSeq + 1 auditLineItem.AuditSequence = LineItemSeq auditLineItem.FieldName = "E-mail" auditLineItem.BeforeValue = "" auditLineItem.AfterValue = thisADB.AppID LineItemList.Add(auditLineItem) insertCommand.Parameters.AddWithValue("@AppPassword", thisADB.AppPassword) auditLineItem = New AuditLineItem auditLineItem.AuditID = AuditHdr.AuditID LineItemSeq = LineItemSeq + 1 auditLineItem.AuditSequence = LineItemSeq auditLineItem.FieldName = "Password" auditLineItem.BeforeValue = "" auditLineItem.AfterValue = thisADB.AppPassword LineItemList.Add(auditLineItem) insertCommand.Parameters.AddWithValue("@AppNickName", thisADB.AppNickName) auditLineItem = New AuditLineItem auditLineItem.AuditID = AuditHdr.AuditID LineItemSeq = LineItemSeq + 1 auditLineItem.AuditSequence = LineItemSeq auditLineItem.FieldName = "NickName" auditLineItem.BeforeValue = "" auditLineItem.AfterValue = thisADB.AppNickName LineItemList.Add(auditLineItem) insertCommand.Parameters.AddWithValue("@AppCreateDate", thisADB.AppCreateDate) auditLineItem = New AuditLineItem auditLineItem.AuditID = AuditHdr.AuditID LineItemSeq = LineItemSeq + 1 auditLineItem.AuditSequence = LineItemSeq auditLineItem.FieldName = "CreateDate" auditLineItem.BeforeValue = "" auditLineItem.AfterValue = CStr(thisADB.AppCreateDate) LineItemList.Add(auditLineItem) Try connection.Open() Dim insertCount As Integer = insertCommand.ExecuteNonQuery Dim selectStatement As String = "SELECT IDENT_CURRENT('AppGlobal') FROM AppGlobal" Dim selectCommand As New SqlCommand(selectStatement, connection) Dim AccountID As Integer = CInt(selectCommand.ExecuteScalar) gm_AccountID = AccountID If insertCount < 1 Then LineItemList = Nothing End If Catch ex As SqlException MessageBox.Show("SQL Server error #4 " & ex.Number & ": " & ex.Message, ex.GetType.ToString) Finally connection.Close() End Try Return LineItemList End Function