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-13T10:58:24+00:00

    yes the Primary key in target table is autonumber.

    ....

    Sql View of Query: 

    INSERT INTO tblGeneration ( Country, Product, Years, [Values], Show, [Current], Source, Notes, PType, Entered_By, [Timestamp], Sector, Unit )

    SELECT tblGenProductTemp.Country, tblGenProductTemp.Product, tblGenProductTemp.Years, tblGenProductTemp.Values, tblGenProductTemp.Show, tblGenProductTemp.Current, tblGenProductTemp.Source, tblGenProductTemp.Notes, tblGenProductTemp.PType, tblGenProductTemp.Entered_By, tblGenProductTemp.Timestamp, tblGenProductTemp.Sector, tblGenProductTemp.Unit

    FROM tblGenProductTemp;

    ....

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

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

    What are the foreign keys in tblGeneration? Your table might require a matching Ptype, Product, Country, Sector, or Unit in a related table.

    0 comments No comments
  3. Anonymous
    2017-06-13T11:08:42+00:00

    Hello Ken,

    "I would question why you are going through this convoluted routine in the first place." The answer to this is that i am designing customized form for some specific requirement to my users. They require a form that hold a temporary value may be 1 record or 10 or 1000 records , in the temporary table the records will be entered and once it it assure that the data is correct then user will press save button which will run query to append all those records may be 1 or 10 or 100 records to main table, thats the logic behind it.I did till making temporary table and query but it's just one this error pop up which i can't figure out. I make a same form before also but in that form it was taking record ID from target or main table ( i don't know how that was taking) , i apply same in this form but it doesn't work. I understand the reason for error but i am not able to correct this.

    0 comments No comments
  4. Anonymous
    2017-06-13T11:11:12+00:00

    Yes ..  Ptype, Product, Country, Sector, and Unit are Foreign Keys, these records are must to enter with matching dataset. I enter the data every time in this but still the error pops up.

    0 comments No comments