Teď jste offline a čekáte, až se znova připojí internet.

JAK: Načtení hodnoty Identity při vkládání záznamů do databáze aplikace Access pomocí programu Visual Basic.NET

Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.

Projděte si také anglickou verzi článku:815629
Pro aplikace Microsoft Visual C#.NET verze tohoto článek naleznete v tématu 816112.

V TOMTO ÚKOLU

Souhrn
Tento podrobný článek popisuje, jak lze získat hodnotu sloupce identity z databáze aplikace Access.

Načítání Hodnoty identity z databáze Jet se liší od serveru SQL Server protože databáze stroje Jet, nepodporuje s dávkové příkazy. Jet Podporuje zprostředkovatel OLE DB verze 4.0 SELECT @@ Identity dotaz, který umožňuje načíst hodnotu Automatický přírůstek pole generovaný připojení. Spustit SELECT @@ Identity dotaz, je doporučeno použít jiné OleDbCommand objekt. Tento článek popisuje, jak použít druhý OleDbCommand načíst hodnotu sloupce Identity.

Poznámka: Tato funkce pracuje pouze s databází Microsoft Jet OLEDB 4.0. V dřívějších verzích Microsoft Jet OLEDB nepodporují tuto funkce.

zpět začátek
Další informace

Připojení k databázi aplikace Access

Připojení k databázi aplikace Access a vytvořit tabulku s Sloupec identity, postupujte takto:
  1. Spusťte aplikaci Visual Studio.NET 2002.
  2. V Soubor příkazNovýa klepněte na tlačítko Projekt.
  3. Ve skupinovém rámečku Typy projektů, klepněte na tlačítko Vizuální Základní projekty. Ve skupinovém rámečku Šablony Klepněte na položkuAplikace konzoly. Ve výchozím nastavení je Module1.vb vytvořen.
  4. Název projektu MyJetApplication a potom klepněte na tlačítko OK.
  5. Nahraďte existující kód následující kód:
    Imports SystemImports System.DataImports System.Data.OleDbModule Module1   Sub Main()      ' Open Connection       Dim cnJetDB As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=YourAccessDatabase")      cnJetDB.Open()      ' If the test table does not exist, create the Table.      Dim strSQL As String      strSQL = "CREATE TABLE AutoIncrementTest " & _               "(ID int identity, Description varchar(40), " & _               "CONSTRAINT AutoIncrementTest_PrimaryKey PRIMARY KEY (ID))"      ' Command for creating Table.      Dim cmdJetDB As New OleDbCommand(strSQL, cnJetDB)      cmdJetDB.ExecuteNonQuery()      ' Create a DataAdaptor With Insert Command For inserting records      Dim oleDa As New OleDbDataAdapter("Select * from AutoIncrementTest", cnJetDB)      ' Command to Insert Records.      Dim cmdInsert As New OleDbCommand()      cmdInsert.CommandText = "INSERT INTO AutoIncrementTest (Description) VALUES (?)"      cmdInsert.Connection = cnJetDB      cmdInsert.Parameters.Add(New OleDbParameter("Description", OleDbType.VarChar, 40, "Description"))      oleDa.InsertCommand = cmdInsert      ' Create a DataTable      Dim dtTest As New DataTable()      oleDa.Fill(dtTest)      Dim drTest As DataRow      ' Add Rows to the Table      drTest = dtTest.NewRow      drTest("Description") = "This is a Test Row 1"      dtTest.Rows.Add(drTest)      drTest = dtTest.NewRow      drTest("Description") = "This is a Test Row 2"      dtTest.Rows.Add(drTest)         End SubEnd Module
  6. Změnit název zdroje dat do připojovacího řetězce přejděte do databáze aplikace Access.


zpět začátek

Soutisk na hodnotu sloupce Identity

Shrnout takto, v RowUpdated metody Update událostní vlastnost DataAdapter, můžete provést soutisk na hodnotu sloupce identity která je vytvořena ve sloupci tabulky v databázi aplikace Access. V RowUpdated metody Update událost, bude spuštěna SELECT @@ IDENTITY dotaz pomocí jiného Příkaz objekt a potom přiřadí hodnotu vrácenou dotaz na sloupec Identity. Konečně, zavolejte AcceptChanges Metoda Objekt DataRow objekt přijmout hodnotu sloupce.

Pasti sloupec identity hodnotu, postupujte takto:
  1. Přidejte následující kód před Hlavní Metoda vytvořit druhý OleDbCommand objekt pro SELECT @@ IDENTITY Dotaz:
       ' Create OleDbCommand for SELECT @@IDENTITY statement   Private cmdGetIdentity As OleDbCommand
  2. Následující kód, který chcete přidat Hlavní způsob vytvoření nové instance OleDbCommand Třída:
          ' Create another command to get IDENTITY value.      cmdGetIdentity = New OleDbCommand()      cmdGetIdentity.CommandText = "SELECT @@IDENTITY"      cmdGetIdentity.Connection = cnJetDB
  3. Následující kód, který chcete přidat Hlavní Metoda pro manipulaci RowUpdated metody Update událost:
          ' Delegate for handling RowUpdated event.      AddHandler oleDa.RowUpdated, AddressOf HandleRowUpdated
  4. Následující kód, který chcete přidat Hlavní způsob aktualizace dat. Na RowUpdated metody Update událost je aktivována po volání Aktualizace Metoda.
          ' Update the Data      oleDa.Update(dtTest)
  5. Následující kód, který chcete přidat Hlavní Metoda přetažení AutoIncrementTest Tabulka a uvolnit prostředky:
          ' Drop the table      cmdJetDB.CommandText = "DROP TABLE AutoIncrementTest"      cmdJetDB.ExecuteNonQuery()      ' Release the resources.      cmdGetIdentity.Dispose()      cmdGetIdentity = Nothing      cmdInsert.Dispose()      cmdInsert = Nothing      cmdJetDB.Dispose()      cmdJetDB = Nothing      cnJetDB.Close()      cnJetDB.Dispose()      cnJetDB = Nothing
  6. Přidejte následující RowUpdated metody Update kód obslužnou rutinu události pro modul 1:
       ' Event handler for RowUpdated event.   Private Sub HandleRowUpdated(ByVal sender As Object, ByVal e As OleDbRowUpdatedEventArgs)      If e.Status = UpdateStatus.Continue AndAlso e.StatementType = StatementType.Insert Then         ' Get the Identity column value         e.Row("ID") = Int32.Parse(cmdGetIdentity.ExecuteScalar().ToString())         Debug.WriteLine(e.Row("ID"))         e.Row.AcceptChanges()      End If   End Sub
  7. V Ladění nabídky, klepněte na tlačítkoSpustit Spusťte aplikaci. Jsou hodnoty sloupce identity Zobrazí se v okně výstupu.
zpět začátek

Úplný výpis kódu

Imports SystemImports System.DataImports System.Data.OleDbModule Module1   ' Create OleDbCommand for SELECT @@IDENTITY statement   Private cmdGetIdentity As OleDbCommand   Sub Main()      ' Open Connection       Dim cnJetDB As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=YourAccessDatabase")      cnJetDB.Open()      ' If the test table does not exist then create the Table      Dim strSQL As String      strSQL = "CREATE TABLE AutoIncrementTest " & _               "(ID int identity, Description varchar(40), " & _               "CONSTRAINT AutoIncrementTest_PrimaryKey PRIMARY KEY (ID))"      ' Command for Creating Table      Dim cmdJetDB As New OleDbCommand(strSQL, cnJetDB)      cmdJetDB.ExecuteNonQuery()      ' Create a DataAdaptor With Insert Command For inserting records      Dim oleDa As New OleDbDataAdapter("Select * from AutoIncrementTest", cnJetDB)      ' Command to Insert Records      Dim cmdInsert As New OleDbCommand()      cmdInsert.CommandText = "INSERT INTO AutoIncrementTest (Description) VALUES (?)"      cmdInsert.Connection = cnJetDB      cmdInsert.Parameters.Add(New OleDbParameter("Description", OleDbType.VarChar, 40, "Description"))      oleDa.InsertCommand = cmdInsert      ' Create a DataTable      Dim dtTest As New DataTable()      oleDa.Fill(dtTest)      Dim drTest As DataRow      ' Add Rows to the Table      drTest = dtTest.NewRow      drTest("Description") = "This is a Test Row 1"      dtTest.Rows.Add(drTest)      drTest = dtTest.NewRow      drTest("Description") = "This is a Test Row 2"      dtTest.Rows.Add(drTest)      ' Create another Command to get IDENTITY Value      cmdGetIdentity = New OleDbCommand()      cmdGetIdentity.CommandText = "SELECT @@IDENTITY"      cmdGetIdentity.Connection = cnJetDB      ' Delegate for Handling RowUpdated event      AddHandler oleDa.RowUpdated, AddressOf HandleRowUpdated      ' Update the Data      oleDa.Update(dtTest)      ' Drop the table      cmdJetDB.CommandText = "DROP TABLE AutoIncrementTest"      cmdJetDB.ExecuteNonQuery()      ' Release the Resources      cmdGetIdentity.Dispose()      cmdGetIdentity = Nothing      cmdInsert.Dispose()      cmdInsert = Nothing      cmdJetDB.Dispose()      cmdJetDB = Nothing      cnJetDB.Close()      cnJetDB.Dispose()      cnJetDB = Nothing   End Sub   ' Event Handler for RowUpdated Event   Private Sub HandleRowUpdated(ByVal sender As Object, ByVal e As OleDbRowUpdatedEventArgs)      If e.Status = UpdateStatus.Continue AndAlso e.StatementType = StatementType.Insert Then         ' Get the Identity column value         e.Row("ID") = Int32.Parse(cmdGetIdentity.ExecuteScalar().ToString())         Debug.WriteLine(e.Row("ID"))         e.Row.AcceptChanges()      End If   End SubEnd Module
Odkazy
Další informace týkající Příbuzné téma v jazyce Visual Basic 6.0 klepněte následujícím článku znalostní báze v článku znalostní báze Microsoft Knowledge Base:
232144INFO: Jet OLE DB Provider verze 4.0 Vyberte podporuje @@ Identity
Další informace naleznete na následujícím webu MSDN Server:zpět začátek

Upozornění: Tento článek je přeložený automaticky

Vlastnosti

ID článku: 815629 - Poslední kontrola: 05/20/2011 12:51:00 - Revize: 5.0

Microsoft ADO.NET 1.1, Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft Visual Basic .NET 2003 Standard Edition

  • kbjet kbprogramming kbtsql kbsystemdata kbhowtomaster kbmt KB815629 KbMtcs
Váš názor
" src="https://c1.microsoft.com/c.gif?DI=4050&did=1&t=">>/html>ck by $index" class="col-sm-6 col-xs-24 ng-scope"> España - Español
Paraguay - Español
Venezuela - Español
id=1&t=">50&did=1&t=">ker.init(); l) + "//c.microsoft.com/ms.js'><\/script>"); &t=">>