Quantcast
Channel: ฟอรัม Getting started with SQL Server
Viewing all articles
Browse latest Browse all 8428

Automatic key assignment not working....

$
0
0

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

 

Viewing all articles
Browse latest Browse all 8428

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>