VB6,Access2000のMDBでのデータ型指定

このQ&Aのポイント
  • VB6でAccess2000のMDBを使用しています。データ交換のために一時的なレコードセットを作成したいのですが、データ型(DataTypeEnum)の指定がわかりません。
  • MDBテーブルから作成したレコードセットとのデータ交換を行いたいですが、RS(0)側のフィールドのデータ型(DataTypeEnum)の設定方法がわかりません。
  • RS(0)において、数値としてあるフィールドとデータ交換をする際、フィールドのデータ型(DataTypeEnum)の設定方法が分かりません。
回答を見る
  • ベストアンサー

VB6,Access2000のMDBでのデータ型指定

VB6でAccess2000のMDBを使用しています。 次のような形で一時的なレコードセットRS(0)を作成しようと思うのですが、このときの DataTypeEnum に相当するデータ形式がわかりません。 目的はMDBテーブルから作成したレコードセットRS(1)とのデータ交換です。そのMDBテーブルで数値としてあるフィールドとやりとりするRS(0)側のフィールドのデータ型(DataTypeEnum)を何に設定していいのかわかりません。 選択肢は次のページにあります。 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpado260/htm/mdcstdatatypeenum.asp Set RS(0) = New ADODB.Recordset RS(0).Fields.Append "LinNo", adDouble ← この adDouble の位置で 何を指定するか。。。 RS(0).Fields.Append "JobID", adDouble RS(0).Fields.Append "JobName", adVarChar, 200 RS(0).Open よろしくお願いします。

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 Accessのデータ型のヘルプと、質問欄のmsdnのページを照らし合わせると、数値型の場合は、 バイト型:adUnsignedTinyInt 整数型:adSmallInt 長整数型:adInteger 単精度浮動小数点型:adSingle 倍精度浮動小数点型:adDouble 10進型:adDecimal あたりだと思います。 いろいろ試して確認して下さい。

wakaranai_kun
質問者

補足

長整数型:adInteger が いわゆる Long って感じなんでしょうか?

その他の回答 (1)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

>長整数型:adInteger >が いわゆる Long って感じなんでしょうか? 「4バイトの符号付きの整数」 という説明からすると、そうなんでしょうね。

wakaranai_kun
質問者

お礼

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

関連するQ&A

  • Accessデータを違うmdbにコピーしたい

    VB2005で、mdbをデータベースにして開発しています。 aaa.mdbのテーブル1のデータをbbb.mdbのテーブル1に読み込ませたいと思っています。 bbb.mdbのテーブル1は、aaa.mdbのテーブル1よりフィールド数が多く、 該当する列にデータを読み込ませたいと思っています。 今まで、バックアップはaaa.mdbを丸ごとコピーして圧縮ファイルにしていました。復元の時は、解凍して上書きする、という手法をとっていました。 しかし、今回どうしてもテーブル1に列を追加しなくてはならず、aaa.mdbのバックアップデータをbbb.mdbに読み込ませて、VB2005のフォームに表示したいと考えております。 以上のような操作は可能でしょうか?可能でしたらその手法を是非教えてください。 また、データベースアプリを作成する上でアプリ完成後に、カスタマイズや計算方法の変更により列の追加が必要になる、いうことはまずいことでしょうか?前もって考えてフィールドを持っておくべきなのでしょうか?経験がないため、わかりません。この点についてもアドバイスがありましたら宜しくお願い致します。

  • レコードの位置を指定するがうまくいきません

    よろしくお願い致します。 Access2007で、DAOを使用して以下の事を行っていますが、うまく動作しません。  一、rs.AddNewを12回繰り返してテーブルにレコードのみ作成しておく。     12回の意味は、縦に12項目分、横に時間フィールドを用意し、例えばA項目の10:00に     予定データが入っているイメージです。  二、他のテーブルから必要なデータを抽出し、rs.AbsolutePositionにデータ毎に     決まった位置を渡し、rs.Editで抽出データをセットしていきます。  三、全てのデータをセットし終えたら、フォームを表示し、そこに組み込んでいる     サブフォームにデータが所定の位置にキレイ並んでいる状態です。 エラーなく処理はされるのですが、フォームが表示されると実際の抽出データを違う位置に 予定が入っています。時間を表すフィールドは合っているので、AbsolutePositionに正しく 値が渡されていないのかなと思うのですが、順にコードをなめていくと入っているように 思います。コードは以下の通りです。 Do rsYotei.EOF Set rs = db.OpenRecordset("12レコードあるテーブル") rs.MoveLast rs.AbsolutePosition="入れたいレコードの位置" rs.Edit rs.Fields("入れたい時間").Value="予定データ" rs.Update rs.Close:Set rs=Nothing rsYotei.MoveNext Loop 以上です。 どなたかお知恵を拝借できれば幸いです。 よろしくお願い致します。

  • vb2005でmdbを読み込みmdbに書き出したい

    よろしくお願いします。windowsxp,access2003,vb2005express エディションを使用して、現在、勉強中です。 早速質問ですが、ADO・NETを使ってA_MDBをvb2005に読み込んで,その内容をB_MDBに書き込みたいのですがその方法が分かりません 例えば、A_MDBのA_TABLEには単価と数量が有ります。仮に10レコードがあるとします、このA_TABLEを読み込んで、単価と数量を 掛けて金額を計算し、B_MDBのB_TABLEに単価、数量、金額の各項目を書き込むという感じです。A,B両MDBは作成済です。あまり上手く 表現できませんがよろしくお願いいたします。

  • ACCESS ADOのMovePreviousについて

    毎度お世話になっております。 ACCESS2003を使用しています。 ACCESS ADOにて、レコードセットがeofになった後、 MovePreviousをし、MoveNextをし、 さらにもう一度MovePreviousをすると、 最終レコードの一つ前に戻ってしまいます。 テーブル1 フィールド1 フィールド2    1     あ    2     い    3     う    4     え    5     お コード Sub test()   Dim cn As New ADODB.Connection   Dim rs As New ADODB.Recordset   Set cn = CurrentProject.Connection   rs.Open "select * from テーブル1 order by フィールド1", cn, adOpenDynamic, adLockReadOnly   Do Until rs.EOF    rs.MoveNext   Loop   rs.MovePrevious   Debug.Print rs.Fields("フィールド1").Value   rs.MoveNext   rs.MovePrevious   Debug.Print rs.Fields("フィールド1").Value   rs.Close: Set rs = Nothing   cn.Close: Set cn = Nothing End Sub 一度目のdebug.printは5に、 二度目のdebug.printは4になります。 このような仕組みなのでしょうか。 ご教授お願いいたします。

  • VB6 レコードセットの編集

    フォームにテキストボックスを配置してレコードセットを読み込ませて フォーム上でレコードを編集する物を作成しています。 例として For i = 0 To 10 Rs.Fields(i).Value = text(i).Text Next i Rs.Update のような感じなのですが、mdbに既に値が入っている場合の編集はできても Rs.Fields(i).Valueが空欄の場合に編集が反映されません。 どういった原因があるのでしょうか?

  • ExcelVBAでAccessのデータを検索する

    Excel  VBA で、ADOを用いてAccess のデータを検索するにはどうしたらいいですか。 やりたいこと 検索結果を、Excel のセルにコピーすること。 ソースコード 'MDBファイルに接続します Set db = New ADODB.Connection db.Provider = "Microsoft.Jet.OLEDB.4.0" db.Open "C:\Database\test.mdb" 'レコードセットを開きます Set rs = New ADODB.Recordset 'テーブルを開きます rs.Open "PT_MST", db, adOpenForwardOnly, adLockReadOnly findName = ws.Cells(i, 1) & ws.Cells(i, 2) Do ' rs.Find "[S_NUM]='" & findName & "'" rs.Find rs.Fields(1).name & " Like '20k%'"  ← ここで、サポートしていない旨のエラーが出る。 If Not (rs.EOF) Then Debug.Print rs.Fields(1).Value Else Exit Do End If rs.MoveNext Loop Until rs.EOF '閉じる rs.Close db.Close '終了処理 Set rs = Nothing Set db = Nothing どう直したら、検出結果を取得できますか。 ご教示下さい。

  • VB6で、抽出したデータのソートについて

    はじめまして。 どうしても分からないので、どなたかご教授頂けたらと思います。 VB6で、抽出したデータのソートを行いたいと思います。 大まかな流れは以下の通りです。 Dim objDb As Database Dim objTbl As Recordset   'mdbファイルからデータを抽出   Set objTbl = objDb.OpenRecordset(データ抽出条件式) (1)レコードセットした、objTblにフィールドを1つ追加したい。 (2)その追加したフィールドにデータを入れる。 (3)入れたデータで降順にソートしたい。 どうしても出来ないので、元のmdbから任意のフィールドを取得してきて、 そこに必要なデータを入れてソートしようとしたら、 .updateでmdb自体のデータを更新しないと出来ませんでした・・・ (mdbファイルは更新・変更等の操作を行ってはダメなファイルです。) この後の処理があるので、レコードセットしたobjTbl (もしくはそのコピーでもいいのですが・・・)を使った形で、出来ると良いのですが・・・ どうぞ、よろしくお願いいたします。

  • VBでAccessのMDBを参照する環境について

    VBからAccessのMDBを操作するアプリケーションを作り、Visual Studio Installerでインストーラを作成しました。 そのパッケージをWin98SEをインストールしたてのマシンにMDAC 2.7をインストールし、作ったパッケージからアプリケーションをインストールしたところ、実行時に 実行時エラー '429': ActiveXコンポーネントはオブジェクトを作成できません。 とエラーが出ます。 試しにテーブルを開き、1件目のデータを読み取るだけの簡単なプログラムを作り、対象のマシンで動作させてみても結果は同じです。 MDACのインストールだけではだめなんでしょうか。 作成したアプリケーションは配布したいので、コントロールパネルを変更するなどの手間はかけたくないのです。 アプリケーションのインストールだけで環境ができるのが理想ですが、何か言い方法はないでしょうか。 ちなみにためしで作った簡単なプログラムのコードを記述します。 ---------------------------- Private Sub Form_Load() Dim mydb As DAO.Database Dim rs As Recordset Set mydb = OpenDatabase(".\tellist.mdb") Set rs = mydb.OpenRecordset("SELECT Count_TBL.* FROM Count_TBL") Text1.Text = rs!telno rs.Close mydb.Close End Sub ---------------------------- よろしくお願いします。

  • Access 2000 の VB での テーブル作成について質問です。

    下記のようにAccess 2000のVBからDAOを使ってテーブルを作っておりますが、 作るフィールドに規定値の設定もVBからできないのでしょうか?DAOだと無理なのでしょぅか? 教えてください Dim db As DAO.Database Dim tbdef As DAO.TableDef Dim flID As DAO.Field Set db = CurrentDb Set tbdef = db.CreateTableDef("テーブル") Set flID = tbdef.CreateField("ID", dbInteger)   tbdef.Fields.Append flID   db.TableDefs.Append tbdef db.Close: Set db = Nothing

  • ACCESSのFieldの追加方法

    VB初心者です。ACCESSのMDBに下記の構文でFieldの追加はできたのですが 少数点以下2桁に設定する方法がわからなく困っています。 Fieldプロパティにも無く、どなたか教えて下さい。 Set field01 = tdfEmployees01.CreateField("Tanka", dbCurrency) tdfEmployees01.Fields.Append field01

専門家に質問してみよう