Pole typu Automatické číslo není vynulován po kompresi databáze aplikace Access

Střední: Vyžaduje základní maker, kódování a interoperability dovedností.

Tento článek platí pro databáze aplikace Microsoft Access (MDB nebo ACCDB) a projektu Microsoft Access (ADP).

Příznaky

Při odstranění poslední záznam nebo záznamy v tabulce nebo ve formuláři, který má pole typu Automatické číslo a potom komprimace databáze, pole typu Automatické číslo při přidání nových záznamů nelze spustit na vyšší číslo.

Příčina

Jste nainstalovali aktualizaci Microsoft Jet 4.0 Service Pack 4 (Msjet40.dll verze 4.00.2927.4) nebo novější.

Řešení

Chcete-li tento problém vyřešit, použijte jednu z následujících dvou metod.

Metoda 1

Vytvořit novou tabulku a připojit existující záznamy do nové tabulky. Nové záznamy, které jsou přidány do této tabulky se spustí s hodnotou typu Automatické číslo jedna, pokud programově nastavit hodnotu přírůstek.

Poznámka: Pokud již nepotřebujete záznamy, můžete obnovit pole Automatické číslo také odstraňuje všechny záznamy z tabulky a potom komprimace databáze. Však použití této metody nelze získat odstraněné záznamy zpět.

Chcete-li vytvořit novou tabulku a připojit existující záznamy do nové tabulky v databázi aplikace Microsoft Access (.mdb), postupujte takto:
  1. Klepněte na tabulku v okně databáze.
  2. Stisknutím kláves CTRL + C.
  3. Stiskněte klávesy CTRL + V.
  4. V dialogovém okně Vložit tabulku jako klepněte na přepínač Jen struktura, zadejte název tblNewTablea potom klepněte na tlačítko
    OK.
  5. V aplikaci Microsoft Office Access 2003 nebo v aplikaci Microsoft Access 2002 v nabídce Zobrazit přejděte na příkaz Databázové objekty , klepněte na položku dotazya potom poklepejte na položku vytvořit dotaz v návrhovém zobrazení.

    V aplikaci Microsoft Office Access 2007 klepněte na kartu vytvořit a potom klepněte na tlačítko Návrh dotazu v ostatní skupiny.
  6. V dialogovém okně Zobrazit tabulku klepněte staré tabulky, klepněte na tlačítko Přidata potom klepněte na tlačítko Zavřít.
  7. V aplikaci Access 2003 nebo Access 2002 klepněte v nabídce dotaz na Přidávací dotaz .

    V aplikaci Access 2007 klepněte na kartě Návrh ve skupině Typ dotazu na přidávací.
  8. V dialogovém okně Připojit klepněte tblNewTable v poli Název tabulky a potom klepněte na tlačítko OK.
  9. Přidáním všech polí do návrhové mřížky dotazu s výjimkou polí typu Automatické číslo.
  10. V aplikaci Access 2003 nebo Access 2002 v nabídce dotaz klepněte na tlačítko Spustit Chcete-li přidat záznamy do nové tabulky.

    V aplikaci Access 2007 klepněte na tlačítko Spustit ve skupině výsledků na kartě Návrh připojit záznamy do nové tabulky.
  11. Otevřete tabulku tblNewTable a pak přidejte záznam.

    Všimněte si, že typu Automatické číslo další vyšší číslo.

Metoda 2

Můžete tyto funkce programově obnovit počáteční hodnotu pole Automatické číslo v databázi aplikace Microsoft Access (MDB). Můžete přidat funkce do modulu a potom jej spustit v ladicím okně. Nebo můžete volat funkce z příkazové tlačítko nebo makro.

Poznámka: Pro tento kód spustit správně musí odkazovat obě Microsoft ActiveX Data objekty 2.x a Ext Microsoft ADO 2.x pro DDL a zabezpečení knihovny (kde 2.x je 2.1 nebo vyšší.) Chcete-li to provést, klepněte na tlačítko
Odkazy v nabídce Nástroje v editoru jazyka Visual Basic. Ujistěte se, že Microsoft ActiveX Data Objects 2.x a rozšíření Microsoft ADO 2.x pro DDL a zabezpečení knihovny jsou zaškrtnuta políčka.
Function ChangeSeed(strTbl As String, strCol As String, lngSeed As Long) As Boolean'You must pass the following variables to this function.
'strTbl = Table containing autonumber field
'strCol = Name of the autonumber field
'lngSeed = Long integer value you want to use for next AutoNumber.

Dim cnn As ADODB.Connection
Dim cat As New ADOX.Catalog
Dim col As ADOX.Column

'Set connection and catalog to current database.
Set cnn = CurrentProject.Connection
cat.ActiveConnection = cnn

Set col = cat.Tables(strTbl).Columns(strCol)

col.Properties("Seed") = lngSeed
cat.Tables(strTbl).Columns.Refresh
If col.Properties("seed") = lngSeed Then
ChangeSeed = True
Else
ChangeSeed = False
End If
Set col = Nothing
Set cat = Nothing
Set cnn = Nothing

End Function

Stav

Společnost Microsoft potvrdila, že se jedná o problém v produktech společnosti Microsoft, které jsou uvedeny v části "Platí pro".

Další informace

Kroky pro reprodukci problému

  1. Nainstalujte aktualizaci Microsoft Jet 4.0 Service Pack 4 (SP4) nebo novější.
    Další informace o tom, jak získat nejnovější aktualizaci service pack pro Microsoft Jet klepněte na následující číslo článku databáze Microsoft Knowledge Base:

    239114 jak získat nejnovější aktualizaci service pack pro databázový stroj Microsoft Jet 4.0

  2. V aplikaci Access 2003 nebo Access 2002 můžete vytvořte novou databázi.
  3. Vytvořte následující tabulku:
       Table: tblExample
    ---------------------
    Field Name: ID
    Data Type: AutoNumber

    Field Name: MyText
    Data Type: Text

    Table Properties: tblExample
    ----------------------------
    PrimaryKey: ID

  4. Uložit tabulku jako
    tblExample.
  5. V nabídce Zobrazit klepněte na příkaz Zobrazení datového listu.
  6. Přidáte 10 záznamů do tabulky.
  7. Odstraníte poslední tři záznamy, které jste přidali do tabulky.
  8. Zavřete tabulku.
  9. V nabídce Nástroje přejděte na příkaz Správa databázea potom klepněte na příkaz Zkomprimovat a opravit databázi.
  10. Otevřete tabulku tblExample.
  11. Přidání nového záznamu do tabulky.

    Všimněte si, že typu Automatické číslo 11, spíše než 8, jak by se dalo očekávat.
Poznámka: Po kompresi projektu v projektu Microsoft Access (.adp), uvidíte číslo, které očekáváte v poli typu Automatické číslo při přidání záznamu. Však při uložení záznamu změní pole typu Automatické číslo. V tomto příkladu vidíte 8, dokud je záznam potvrzené. Poté se číslo změní na 11. Tato situace nastane, protože typu Automatické číslo je přiřazen na serveru po záznam je potvrzen.
Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:

202121 nelze změnit výchozí zdrojovou a přírůstkovou hodnotu v uživatelském rozhraní

Vlastnosti

ID článku: 287756 - Poslední kontrola: 23. 1. 2017 - Revize: 1

Váš názor