こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

オートナンバー型を変換したい

いつもお世話になります。
QNo.2611889 関連質問です。

VB.NET2003+Access2000環境で作成したMDBのテーブルのうち、
オートナンバー型で作成されているフィールドのデータを数値型かテキスト型に変換できる関数はないでしょうか?

たとえば Value とか Cstr みたいな。

ご存じの方よろしくお願いいたします。

投稿日時 - 2006-12-19 12:24:29

QNo.2612088

すぐに回答ほしいです

質問者が選んだベストアンサー

ちとどんな場面で使いたいのかが分からないのですが、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()

投稿日時 - 2006-12-19 17:24:06

補足

temtecomai2さん、いつもご教示ありがとうございます。

>ちとどんな場面で使いたいのかが分からないのですが

二つのテーブルを結合させて出力させるときのキーが、テーブルAではオートナンバー型、
テーブルBではこれもオートナンバー型にするわけにはいかないので数値型もしくはテキスト型にして手入力
させています。

抽出条件に テーブルA.キー = テーブルB.キー としたいのですが、
そのままでは「型が一致しません」というエラーがでるため、どちらかを
加工してやる必要があるようです。

残念ながらいまいちいいアイデアが浮かばず苦労しているわけです。

Accessを2003にしたら解決する?といった問題でもないのでしょうね。
やはりオートナンバー型を使わずに組むべきなのでしょうか。

DataSetに両テーブルを読み込んでくるときに使うSQL文でエラーが起こります。
両テーブルともDataGridで入力させているので自動採番のロジックが思いつかないための
苦肉の策なんです。
DataGridでなければ全く問題なく書けているのですが・・・。

引き続きよろしくお願いいたします。

投稿日時 - 2006-12-20 09:02:41

お礼

いろいろやってみましたが時間切れでギブアップ。
アプローチの仕方を変えてコーディングし直して自己解決しました。

ありがとうございました。

投稿日時 - 2006-12-20 13:54:24

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問