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. Anonymous
    2017-06-13T11:24:50+00:00

    In the target table there is one Primary Key the ID.

    A table can have only one primary key (hence the name), but it can have multiple candidate keys.  As with a primary key a candidate key can comprise one or more columns.  Have you checked to see if firstly, any columns other than ID are indexed uniquely in the properties sheet, and secondly, via Indexes on the Design ribbon, whether there are any other unique indexes?

    0 comments No comments
  2. Anonymous
    2017-06-13T11:38:44+00:00

    Other then Primary Key no Field is Indexed uniquely in the target table. I checked in the Design Ribbon also , no key other than Primary Key is index. It's just Primary Key (ID) which is index uniquely.

    0 comments No comments
  3. Duane Hookom 26,575 Reputation points Volunteer Moderator
    2017-06-13T11:56:10+00:00

    Are you positive the source record has been saved prior to the append?

    Can you view the query and hard-code some values for some of the fields until you determine which field is giving you the issue?

    I agree with Ken that this is not the typical method for appending records to a table. I assume you have your reasons.

    0 comments No comments
  4. Anonymous
    2017-06-14T06:06:09+00:00

    @dhookom, Yes, the record is saved in the Temporary table before append.Before append i check in the temporary table and the record is there that's confirm. It's was ID field that was giving me the issue, As that ID was already there in the target table. I remove ID from temporary table but still the error remains the same.

    I agree that's not the typical method but it's done according to some requirement by the organization.

    ....

    0 comments No comments