プロが教える店舗&オフィスのセキュリティ対策術

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

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

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

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

A 回答 (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でなければ全く問題なく書けているのですが・・・。

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

補足日時:2006/12/20 09:02
    • good
    • 0
この回答へのお礼

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

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

お礼日時:2006/12/20 13:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!