Ms Access Form - Error - MS access can't append all the records in the append query

Anonymous
2017-06-13T06:42:41+00:00

Hello,

I have created a form in which when the user enter data that record is stored in temporary table and when the Run Query button is press that record should be append with the main table and delete from temporary table. When i press the Run Query button it gives error which i am not able to sort out , i check my form properties and related things but i don't understand why it is so.

Can any one help me in this. Thank you in advance for your efforts and time.

Error further details : Microsoft Access can't append all the records in the append query.

Microsoft Access set 0 fields to Null due to type conversion failure, and it didn't add 1 records to the table due to key violation, 0 records due to lock violation, and 0 records due to validation rule violation. 

Do you want to run the query anyway?

Microsoft 365 and Office | Access | For home | Windows

Locked Question. This question was migrated from the Microsoft Support Community. You can vote on whether it's helpful, but you can't add comments or replies or follow the question.

0 comments No comments
{count} votes
Answer accepted by question author
  1. Anonymous
    2017-06-18T06:49:05+00:00

    This is the solution to my Problem:

    ...

    The autonumber seed may be corrupted.  You will be able to tell if this is the case by opening the table in datasheet view.  Sort the table by autonumberID.  Go to the end of the data and start typing in the empty row.  If the generated autonumber is less than the highest existing number, the seed is corrupted.  Here is the code to fix it.  You will need to add a reference to the ADO library.  Open any code module.  Then Tools/References and choose the  newest ADO library you have installed.

    To reset the seed, 

    Call ResetSeed("yourtablename")

    Function ResetSeed(strTable As String) As String

        'Purpose:   Reset the Seed of the AutoNumber, using ADOX.

        Dim strAutoNum As String    'Name of the autonumber column.

        Dim lngSeed As Long         'Current value of the Seed.

        Dim lngNext As Long         'Next unused value.

        Dim strSql As String

        Dim strResult As String

        lngSeed = GetSeedADOX(strTable, strAutoNum)

        If strAutoNum = vbNullString Then

            strResult = "AutoNumber not found."

        Else

            lngNext = Nz(DMax(strAutoNum, strTable), 0) + 1

            If lngSeed = lngNext Then

                strResult = strAutoNum & " already correctly set to " & lngSeed & "."

            Else

                Debug.Print lngNext, lngSeed

                strSql = "ALTER TABLE [" & strTable & "] ALTER COLUMN [" & strAutoNum & "] COUNTER(" & lngNext & ", 1);"

                Debug.Print strSql

                CurrentProject.Connection.Execute strSql

                strResult = strAutoNum & " reset from " & lngSeed & " to " & lngNext

            End If

        End If

        ResetSeed = strResult

    End Function

    ''--------------------------------------------------------------------------------

    Function GetSeedADOX(strTable As String, Optional ByRef strCol As String) As Long

        'Purpose:   Read the Seed of the AutoNumber of a table.

        'Arguments: strTable the table to examine.

        '           strCol = the name of the field. If omited, the code finds it.

        'Return:    The seed value.

        Dim cat As New ADOX.Catalog 'Root object of ADOX.

        Dim tbl As ADOX.Table       'Each Table in Tables.

        Dim col As ADOX.Column      'Each Column in the Table.

        'Point the catalog to the current project's connection.

        Set cat.ActiveConnection = CurrentProject.Connection

        Set tbl = cat.Tables(strTable)

        'Loop through the columns to find the AutoNumber.

        For Each col In tbl.Columns

            If col.Properties("Autoincrement") Then

                strCol = "[" & col.Name & "]"

                GetSeedADOX = col.Properties("Seed")

                Exit For    'There can be only one AutoNum.

            End If

        Next

        'Clean up

        Set col = Nothing

        Set tbl = Nothing

        Set cat = Nothing

    End Function

    ''--------------------------------------------------------------------------------

    3 people found this answer helpful.
    0 comments No comments

22 additional answers

Sort by: Most helpful
  1. Duane Hookom 26,575 Reputation points Volunteer Moderator
    2017-06-14T12:56:01+00:00

    Did you try replacing all fields with real hard-coded values? If that doesn't work then there is a serious issue with your process. If all fields are hard-coped and it works, you can simply "un"hard-code one field at a time until it fails. Then you know your issue.

    0 comments No comments
  2. Anonymous
    2017-06-24T13:45:01+00:00

    Wsm93,

    I experienced this same issue recently.  I did not utilize your code above as my database is still in development mode.  I simply imported the table from a previous version, however, I am curious to understand what may cause this issue.  Do you have any idea what causes this to occur?

    Also, where do you place your code above in a database experiencing this issue and do you leave it there permanently?  

    Margaret

    0 comments No comments