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-13T08:07:29+00:00

    I expect you have an issue with attempting to append a record that duplicates a unique value in your target table. It might also be an issue where a related record is expected in a lookup table.

    You need to look at the data in your source and target tables as well as primary and foreign key fields. We can't see them ;-)

    0 comments No comments
  2. Anonymous
    2017-06-13T08:33:42+00:00

    considering your answer i notice that when the new record is generated in Temporary table ID is duplicating as original record.I have 2 form like this one work fine , in that that temporary table take ID as new Record and then add it in core table. i did the same thing in second form also but it's not taking as new record, can you tell me about it.I did same thing in both table one work fine but other doesn't , any solution?

    0 comments No comments
  3. Duane Hookom 26,575 Reputation points Volunteer Moderator
    2017-06-13T09:09:27+00:00

    Do both tables have an ID autonumber primary key field? If so, you should not be attempting to append the ID from the source to the target.

    0 comments No comments
  4. Anonymous
    2017-06-13T09:18:24+00:00

    Hello Wsm93,

    I think these could be the reason of this error:

    • If there is a value in the foreign key field that does not match any value in the parent tables primary key.
    • If your table has a primary key field and you did not supply a unique value for the field in each record
    • A field with an index that is unique that is not be supplied with unique values for each record.
    0 comments No comments