- ベストアンサー
オートナンバー型を変換したい
いつもお世話になります。 QNo.2611889 関連質問です。 VB.NET2003+Access2000環境で作成したMDBのテーブルのうち、 オートナンバー型で作成されているフィールドのデータを数値型かテキスト型に変換できる関数はないでしょうか? たとえば Value とか Cstr みたいな。 ご存じの方よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ちとどんな場面で使いたいのかが分からないのですが、Access のオートナンバー型はそもそも VB 6.0 世代の Long 型だと思いますので、VB.NET からは Int32 や Integer で取得できませんか? Dim con As System.Data.OleDb.OleDbConnection con = New System.Data.OleDb.OleDbConnection con.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\testDb.mdb" Dim cmd As System.Data.OleDb.OleDbCommand = Nothing cmd = New System.Data.OleDb.OleDbCommand("SELECT id, name from tbl01", con) cmd.Connection.Open() Dim reader As System.Data.OleDb.OleDbDataReader = Nothing reader = cmd.ExecuteReader() While reader.Read() Dim id As Integer = reader.GetInt32(0) Console.WriteLine(CType(id, String)) End While cmd.Connection.Close() cmd.Dispose() con.Dispose()
お礼
いろいろやってみましたが時間切れでギブアップ。 アプローチの仕方を変えてコーディングし直して自己解決しました。 ありがとうございました。
補足
temtecomai2さん、いつもご教示ありがとうございます。 >ちとどんな場面で使いたいのかが分からないのですが 二つのテーブルを結合させて出力させるときのキーが、テーブルAではオートナンバー型、 テーブルBではこれもオートナンバー型にするわけにはいかないので数値型もしくはテキスト型にして手入力 させています。 抽出条件に テーブルA.キー = テーブルB.キー としたいのですが、 そのままでは「型が一致しません」というエラーがでるため、どちらかを 加工してやる必要があるようです。 残念ながらいまいちいいアイデアが浮かばず苦労しているわけです。 Accessを2003にしたら解決する?といった問題でもないのでしょうね。 やはりオートナンバー型を使わずに組むべきなのでしょうか。 DataSetに両テーブルを読み込んでくるときに使うSQL文でエラーが起こります。 両テーブルともDataGridで入力させているので自動採番のロジックが思いつかないための 苦肉の策なんです。 DataGridでなければ全く問題なく書けているのですが・・・。 引き続きよろしくお願いいたします。