• ベストアンサー

ACCESS-VBAでフィールド名の取得

はじめまして。みかと申します。 フィールド数、フィールド名の可変長のテーブルを作成し、それにINSERT/UPDATEをかけたいと思っているのですが、可変長なものでフィールド名も変化し、フィールド数も変化します。 INSET/UPDATEする際には、フィールド名が必要ですよね? ですので、フォールド名を取得しないといけないのですが、調べてみたのですが、 よく分かりません。 どのように取得したらよいのでしょうか? どうぞ、よろしくお願いします。 環境はXP-PRo,ACCESS2003です。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

質問の意図と多分違うような気がするが、参考になれば。 下記なら判っていることかもしれないが、 ADOでフィールド名は下記で表示できます。 例として、db2.mdbの「生徒」テーブルのフィールド名取得です。 Sub test01() Dim cnn As New ADODB.Connection Dim objRs As Object Dim objCol As Object Set objRs = CreateObject("ADODB.Recordset") '対象のファイル名を設定する dbName = "db2.mdb" 'MDBのPathを設定する dbPath = "C:\Documents and Settings\xxxx\My Documents\" 'MDBと接続 lstrPath = dbPath & dbName cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & lstrPath & ";" lstrSQL = "SELECT * FROM 生徒" objRs.Open lstrSQL, cnn, adOpenForwardOnly, adLockPessimistic ' テーブルフィールド名一覧の取得 Set objCol = objRs.Fields ' A1からA行にフィールド名をセットする For k = 1 To objCol.Count MsgBox objCol(k - 1).Name Next End Sub ーーーーー 内容的に上記のようなことで判るとしても、これらのフィールド名と >INSET/UPDATEする際には、・・ をどのように、つなぐつもりか(SQL文入力操作の時使うのか、プログラムでSQL文を自動的に作ったりするのか)、質問表現では明確でないのでは?

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

関連するQ&A

  • Access MDB の フィールド プロパティー取得

    テーブル(Access2000)のフィールドサイズ、フィールドタイプ等、フィールドの設計情報を取得したいのですが、どのようにすれば取得できるのでしょうか? フィールド名は取得できるのですが、他のが取れませんでした。 Access2000のモジュール、若しくはVB6で回答して頂けるとうれしいです。 よろしくお願いします。

  • フィールド名について

    一般論というか基本的な考え方として, データベースの中にいくつかテーブルがあって,それぞれリレーション張られていなません。 このときに同じフィールド名を使用することは好ましくないでしょうか? 少し具体的に書くと 例えばアクセスで DB1.MDBというデータベースの中に Aテーブル,Bテーブル,Cテーブルとあったとして Aテーブルの中でNameIDというフィールドを作ったとします。 次にBテーブルを作成していて,またNameIDというフィールド名を使うということです。 このようなデータベースは, どんなデメリットメリットが予想されるか教えてください。 よろしくお願いします。

  • DLookup Excel→Access

    エクセルVBAからアクセスのデータベースへ接続し テーブルの値を取得したいのですが エクセルVBAで mystr = DLookup("[フィールド]", "Tテーブル", "[名前] = '検索文字'") と言うコードでアクセスのデータを取得することはできませすか? テーブル名とフィールド名は指定できたのですが ファイル名の指定はどうすればいいのでしょうか? オフィス2010です。

  • VBAでその月の数の一番多い値を取得したいのですが

    フィールド1 フィールド2 2016/08/07 52.6 2016/08/06 52.2 2016/08/05 52.2 2016/08/04 52.9 2016/08/03 53.6 2016/08/02 53.3 2016/08/01 53.1 と言うデータがテーブルには入っています。 アクセスのVBAでその月の数の一番多い値を取得したいのですが strMAX = DMax("[フィールド2]", "テーブル1", "[フィールド1] = '" & ??? & "'") 上記の???の部分はどうすればいいでしょうか? 日付をフィルタするのではなく 「8月の中で一番多い値」を指定するにはどうすればいいでしょうか? 結果としては、53.6を取得したいです。

  • Oracle9i フィールドのデータ型の取得方法

    Windows版のOracle9iで、テーブル名とフィールド名を指定して、フィールドのデータ型を取得する方法を教えてください。 ちなみに DESC テーブル名 では複数フィールドのデータ型が取得されますが、あくまでも特定のフィールドのデータ型を取得したいです。

  • Microsoft Access:クエリのフィールドが消える

    仕事でWindows XP Professional、Microsoft Access 2003を使用しています。 Accessの知識は低いです(本を見ながらVBAを組んだりする程度)。 データベースは、5年ほど前にAccess 2000で作ったもので、ネットワークドライブにあり、現在、改良等はAccess 2003で行っていますが、データベースを使用するクライアントは、Windows 2000(Access 2000)とWindows XP Pro(Access 2003)の複数環境です。 データベースは、1つのテーブルに、1つの抽出クエリ、レポートはそのクエリから呼び出して表示すると考えてください。 レポートを表示させるときに、クエリからデータを引っ張ってくるのですが、数ヶ月前から、突然必要のない「パラメータの入力」ウィンドウが複数回表示されるようになりました。 直接の原因は、クエリに存在しているはずのフィールドが、数個消滅していて、再度クエリにフィールドを追加すれば直ります。 直してしばらく使えるのですが、4~5日経つと、また壊れるという状況です。 また、データベースには、1年以上大きな変更を加えていません。 レポートのラベル(単なる文字)や位置を変更するのみのメンテナンスしか行っていません。 ちなみに、このデータベースファイルのテーブルへは、別のデータベースファイルからも「テーブルのリンク」としてリンクされていますが、クエリやレポートは単独です。 個人情報を扱うファイルのため、外部に持ち出せず、職場でOK Waveにアクセスしづらい状況で、知識も乏しいことから、あまり詳しく提示できないのですが、勝手にクエリ内のフィールドが消えてしまう原因は、どういうことが考えられますか? 参考程度でも結構ですので、アドバイスをお願いします。 (この程度のレベルの人が、重要なデータベースを管理していることに一番の問題があるのは分かっているのですが…)

  • ACCESSでのフィールド名

    ACCESS2000を使っています。 テーブルに「時間:」というフィールドがあるのですが、 If IsNull(!時間:) Then  :  : というふうに使うとコンパイルエラーになります。 ”:”がまずいと思うのですが。 フィールド名を変更せずにNULLかどうか調べたいのです。 何かいい方法は無いでしょうか。

  • SQL文でフィールド名を変動的にできますか?

    VB.NETにてアクセスのMDBへSQLを使って直に書き込むコーディングについて疑問があります。 例えば、 cmnd.CommandText = "UPDATE 野菜テーブル SET 野菜カゴ1 = '" & 野菜名 & _ '" WHERE 条件文・・・" このように野菜テーブルのフィールド「野菜カゴ1」へある野菜をアップデートするSQLコマンド文があるとします。 しかし、アップデートする際、野菜カゴも都度変動する場合(例えばカゴが1~5ある等)はどのようなSQL文となるのでしょうか?フィールド名に変数を使用できるのでしょうか?方法をお知りの方がいましたらご教授願います。

  • フィールド数の多すぎる・フィールド数が一定でないテーブルのデータ結合の仕方?

    私は、accessについてあまり詳しくないものなのですが、仕事上50近くあるデータを一つにまとめたいんです。 データは2つありまして、 1.それぞれのテーブルが微妙にフィールド数が異なる場合の結合  例)・Aのテーブルのフィールド名     名前 クラス名 出身県 出身コード 血液型 性別        ・Bのテーブルのフィールド名    名前 出身県 血液型 性別    ・Cのテーブルのフィールド名    名前 クラス名 出身コード 血液型    ⇒このように微妙に異なる。しかもレコード数がかなり多いのです。これは、ユニオンクエリは使えないですよね?何かいい方法はないでしょうか? 2.テーブルの構造は同じなのですが、フィールド数が多くてユニオンクエリを使おうとすると、『フィールド数が多すぎる』とエラーメッセージがでてしまう。この場合の対処方法でいいのはないでしょうか? なにぶん、私はaccessをあまり使わないのでわかりにくい質問だと思いますが、どなたかすみませんが教えてください。お願いします。

  • ファイル名の取得(エクセルVBA)

     エクセル97を使用しています。 過去ログを見て、ファイル名の取得にDir関数が使えることは、判ったのですが、不特定数のファイル名に対応する方法が思いつきません。  特定のフォルダ内の、数が可変するファイルのファイル名を、検索した時点で、全部セル(または変数でも可)上に取得する方法って、ありますでしょうか?  よろしくお願いします。