• ベストアンサー

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

いつもお世話になります。 QNo.2611889 関連質問です。 VB.NET2003+Access2000環境で作成したMDBのテーブルのうち、 オートナンバー型で作成されているフィールドのデータを数値型かテキスト型に変換できる関数はないでしょうか? たとえば Value とか Cstr みたいな。 ご存じの方よろしくお願いいたします。

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

  • ベストアンサー
回答No.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()

danchor
質問者

お礼

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

danchor
質問者

補足

temtecomai2さん、いつもご教示ありがとうございます。 >ちとどんな場面で使いたいのかが分からないのですが 二つのテーブルを結合させて出力させるときのキーが、テーブルAではオートナンバー型、 テーブルBではこれもオートナンバー型にするわけにはいかないので数値型もしくはテキスト型にして手入力 させています。 抽出条件に テーブルA.キー = テーブルB.キー としたいのですが、 そのままでは「型が一致しません」というエラーがでるため、どちらかを 加工してやる必要があるようです。 残念ながらいまいちいいアイデアが浮かばず苦労しているわけです。 Accessを2003にしたら解決する?といった問題でもないのでしょうね。 やはりオートナンバー型を使わずに組むべきなのでしょうか。 DataSetに両テーブルを読み込んでくるときに使うSQL文でエラーが起こります。 両テーブルともDataGridで入力させているので自動採番のロジックが思いつかないための 苦肉の策なんです。 DataGridでなければ全く問題なく書けているのですが・・・。 引き続きよろしくお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • オートナンバー型を抽出条件にするとき

    いつもお世話になります。 VB.NET2003+Access2000環境です。 あるテーブルにはオートナンバー型を使って新規発生データの管理番号を振っていますが、別のテーブルでその番号を見て手入力しているフィールドがあります。 SQLの抽出条件でこのオートナンバーと手入力したデータと一致したデータを抽出しようとやっているのですがうまくいきません。 オートナンバーのデータを参照して入力するほうのフィールドを数値型にしてもテキストにしてもいずれも「型が一致しない」というエラーが起こります。 こういう場合はどういう風な処理をするのが一般的なのでしょうか? よろしくお願いいたします。

  • ACCESS2000でオートナンバーを1から付けたいのですが

    ACCESS2000のテーブルで新規に作ったときはオートナンバーフィールドが1からになるんですが、何度かレコードの試験入力や削除を繰り返しているうちに、頭の番号が増えていきます。テーブルのデザインで、オートナンバーをテキスト型にして、新しいオートナンバー型行を挿入しても1からになりません。なにかよい方法はないでしょうか?

  • access2007のオートナンバーについて

    access2007のオートナンバーについて こんにちは、さっそくですが質問させていただきます。 accessの勉強を始めた者ですが、 オートナンバーを指定したフィールドと、その他の必要な項目の フィールドから成るテーブルを作成して、 オートナンバー1~3までのレコードを入力して、 オートナンバー3のレコードを削除した時、 そのあとで、レコードを追加すると、 オートナンバー4のレコードが作成されるのですが、 このレコードをオートナンバー3のレコードとして、 作成することはできるのでしょうか? そのような設定ができろのかどうか、もしできるのであれば、 その方法や、参考になるサイトなど、なにぶん初心者ですので 教えていただけないでしょうか。 よろしくお願いします。

  • mdbのオートナンバー型

    こんにちわ。 いまmdbでテーブル定義をしています。 ところでmdbのデータ型には"オートナンバー型"というのがありますが,これはORACLEで言うところの"ROWID"のようなものなのでしょうか? "オートナンバー型"を使用する意味,あるいはメリット/デメリットなど教えてください。お願いします。

  • オートナンバー型はフィルタはかけられないのですか?

    ●テーブル1 フィールド1/テキスト型(主キー) フィールド1 20130128ダイエー ●テーブル2 ID/オートナンバー型(主キー) テーブル1の主キー/テキスト型 内容/テキスト型 ID   テーブル1の主キー   内容 1   20130128ダイエー   牛乳 2   20130128ダイエー   鶏肉 ●クエリ1 SELECT テーブル1.*, テーブル2.* FROM テーブル1 INNER JOIN テーブル2 ON テーブル1.フィールド1 = テーブル2.テーブル1の主キー; ●フォーム1 そのなかにクエリ1に紐づいたサブフォームを設置(データシートビュー) フォーム1にコンボボックスを設置して、 Private Sub コンボ1_AfterUpdate() With Me.Controls("クエリ1").Form .Filter = "ID = '" & Me.コンボ1.Value & "'" .FilterOn = True End With End Sub このような構成なのですが フィルタを掛けようとすると、 実行時エラーで 抽出条件でデータ型が一致しません。(エラー 3464) となってしまいます。 これはフィルタを掛けようとしているデータ型がオートナンバー型だからでしょうか?

  • アクセス2007でオートナンバーを任意の番号から始めるには

    テーブルを開いて、作成のリボン中の「クエリデザイン」→オートナンバーを任意の番号から始めたいテーブルを選んで「追加」→オートナンバー型の当該フィールド(以下、受付番号という。)を選択→デザインのリボン中の「更新」→「レコードの更新」で「100+[受付番号]」と入力→実行 すると 「フィールド「受付番号」は更新できません。フィールドが更新可能ではありません。」とのエラーメッセージが出るのですが、どうしたらオートナンバー型のフィールドである受付番号を101から始められるのでしょうか?

  • Accessのオートナンバーについて

    いつもお世話になります。 Access2002を勉強中の初心者です。 オートナンバーのフィールドを持つテーブルを使用していますが、オートナンバーの最大値はいくつなんでしょうか? また、レコードがその最大値を超えた場合はどうなるのでしょうか? (1に戻るのでしょうか? それともエラーになるのでしょうか?) よろしくお願いします。

  • 【ACCESS】オートナンバー振り直し時、実行時エラー"-2147467259"が出ます

    宜しければお知恵をお貸し下さい。 日本語版XP・ACCESS2000でつくったMDBファイルを、日本語版XP・ACCESS2003でテーブルのフィールドやVBAを修正しました。 いままで英語版XP・ACCESS2000と日本語版XP・ACCESS2000のパソコン両方で問題なく動いていたのですが、修正後、急に英語版XP・2000の方だけ、実行時エラー"-2147467259"が出るようになってしまいました。エラー内容は「Invalid field data type」となっています。 エラーが出ている場所は、オートナンバーを振り直す記述の所です。 Order=テーブル名 Number=フィールド名 下記にそのまま記載します。 CurrentProject.Connection.Execute CommandText:="Alter Table [Order] " & "Alter Column [Number] Identity(1, 1);" 今まで、英語版XPでも日本語版XPでも問題なく、オートナンバーの振り直しが出来ていたので、まったく原因が分かりません。日本語版XP・ACCESS2000では問題なく動いています。 Orderテーブルには、フィールド名やデータ型などの変更は一切加えていません。参照設定も2000も2003、日本語版XP・英語版XPで違いはありません。 自分ひとりでは解決出来そうにありません。どんな小さなこともよいので、何かこのエラーの原因がおわかりになる方、アドバイスをお願い致します。

  • Access2003オートナンバーを任意の値に

    Access2003で、オートナンバーでID番号の管理(主キー)をしています。 このID番号の他に、10桁の数値でプロジェクト管理したいと思っております。 オートナンバーを基に、別IDを作成する方法を教えてください。 なお、この10桁の数値は、先頭の4桁がプロジェクト番号として使用し、 後ろの6桁はオートナンバーのIDと同じ数値となります。 ======================================== (例)  [ID]     [ID2]   1    1001000001   2    1001000002   3    1001000003   〃       〃 ======================================== 下記のURLを参考にしてやってみたのですが、追加クエリを実行しても、 なぜか、オートナンバーフィールドへ追加することができませんでした。 ※追加クエリ実行エラーで、「型変換エラーのためnullに設定しました」となります。 http://www.accessclub.jp/samplefile/samplefile_145.htm お手数お掛けしますが、宜しくお願い致します。

  • オートナンバー型を1から始める方法はありますか?

    アクセスのVBAで mySQL = "DELETE Tテーブル.* FROM Tテーブル;" DoCmd.RunSQL mySQL を実行して テーブルのデータをすべて削除してから、 データを追加するコードを実行しているのですが オートナンバー型のフィールドが前回の続きの値から始まります。 運用上問題ないのですが 途中の数字から始まってスッキリしません。 削除クエリを実行しても オートナンバー型を1から始める方法はありますか?