現在オフラインです。再接続するためにインターネットの接続を待っています

方法: Visual Basic を使用して Access データベースへのレコードの挿入時に、Id の値を取得します。NET

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB:815629
マイクロソフト ビジュアルを C#。このバージョン記事は、 816112.

このタスクで

概要
この資料でを取得する方法について説明します、id 列の値は、Access データベースから。

取得、Jet データベース id の値は異なる SQL Server からは、Jet データベースは複数ステートメントのバッチ コマンドをサポートしていないため。Jet は、OLE DB プロバイダー サポートするバージョン 4.0、 SELECT @ @identity クエリは、自動インクリメントの値を取得することができます。上の接続を生成するフィールドです。実行するのには SELECT @ @identity クエリは、別を使用することをお勧め OleDbCommand オブジェクトです。秒を使用する方法についてを説明します OleDbCommand Id 列の値を取得します。

注: この機能は、Microsoft Jet OLEDB 4.0 データベースでのみ動作します。以前のバージョンの Microsoft Jet の ole DB をサポートしていません機能です。

には、トップ
詳細

Access データベースへの接続します。

Access データベースへの接続し、テーブルを作成するのにはId 列は、次の手順を実行します。
  1. Microsoft Visual Studio を起動します。NET 2002。
  2. で、 ファイル メニューのポイント新しい、し プロジェクト.
  3. 下にあります。 [プロジェクトの種類をクリックして ビジュアル基本プロジェクト.下にあります。 テンプレート セクションをクリックしてくださいコンソール アプリケーション.デフォルトで、Module1.vb のです。作成します。
  4. プロジェクト名を入力します。 MyJetApplication[OK].
  5. 既存のコードを次のコードに置き換えます。
    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. 接続文字列でデータ ソース名を変更します。Access データベースをポイントします。


には、トップ

Id 列の値をトラップします。

の手順を要約すると、 RowUpdated DataAdapter のイベントは、id 列の値をトラップできます。Access データベース内のテーブルの列が生成されます。で、 RowUpdated イベントは、実行されます、 SELECT @ @IDENTITY クエリを別の使用 コマンド オブジェクトと、返される値が割り当てられますId 列をクエリします。最後に、呼び出しが AcceptChanges メソッドは、 DataRow 列の値を使用するオブジェクト。

トラップは、id 列の値、次の手順を実行します。
  1. 前に、次のコードを追加、 メイン 2 番目を作成する方法 OleDbCommand オブジェクトは、 SELECT @ @IDENTITY クエリ:
       ' Create OleDbCommand for SELECT @@IDENTITY statement   Private cmdGetIdentity As OleDbCommand
  2. 次のコードを追加、 メイン 新しいインスタンスを作成する方法 OleDbCommand クラス:
          ' Create another command to get IDENTITY value.      cmdGetIdentity = New OleDbCommand()      cmdGetIdentity.CommandText = "SELECT @@IDENTITY"      cmdGetIdentity.Connection = cnJetDB
  3. 次のコードを追加、 メイン メソッドの処理のために RowUpdated イベント:
          ' Delegate for handling RowUpdated event.      AddHandler oleDa.RowUpdated, AddressOf HandleRowUpdated
  4. 次のコードを追加、 メイン データを更新する方法。は、 RowUpdated イベントが呼び出すと発生、 更新プログラム メソッドです。
          ' Update the Data      oleDa.Update(dtTest)
  5. 次のコードを追加、 メイン メソッドを削除するのには AutoIncrementTest テーブルし、リソースを解放します。
          ' 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. 次を追加します。 RowUpdated イベント ハンドラーのコード Module1 にします。
       ' 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. で、 デバッグ メニューをクリックして開始 アプリケーションを実行します。Id 列の値が[出力] ウィンドウに表示します。
には、トップ

完全なコード リスト

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
関連情報
詳細については、Visual Basic 6.0 では、関連するトピックを表示するのには、次の資料番号をクリックしてください。資料は、マイクロソフト サポート技術。
232144情報: Jet OLE DB プロバイダーのバージョン4.0 のサポートで @ @identity を選択します。
詳細については、次の MSDN Web を参照してください。サイト:には、トップ

警告: この記事は自動翻訳されています

プロパティ

文書番号:815629 - 最終更新日: 07/28/2011 13:55:00 - リビジョン: 5.0

  • kbhowtomaster kbsystemdata kbtsql kbprogramming kbjet kbmt KB815629 KbMtja
フィードバック