• ベストアンサー

ACCESSでフィールドに-(ハイフン)がついている場いい

ACCESSのVBAでプログラム構築をしています。 大変初歩的な質問で申し訳ありません。 rs![フィールド名]でデータを取得する場合に フィールド名に-(ハイフン)がついているとコンパイルエラーに なってしまいます。 なにかよい方法はありませんでしょうか?

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

  • ベストアンサー
  • neko_noko
  • ベストアンサー率45% (146/319)
回答No.1

手元にAccessがないので未検証なのですが… rs.Fields("フィールド名")だとどうでしょうか? これならできたような気がします。 これでだめなら、rs.Fields(フィールドの番号)で取得するしかないかもしれません。 ※「フィールドの番号」は、テーブルの定義順に0,1,2…とint型で指定します。 該当するフィールドが3番目なら、rs.Fields(2)となります。

7_11shop
質問者

お礼

ありがとうございます。 そのとおりでした。助かりました。

その他の回答 (1)

noname#140971
noname#140971
回答No.2

tab1: ID__fld-1__fld-2 1___AAA____111 2___BBB____222 Private Sub コマンド0_Click()    Dim N    Dim strSQL As String    Dim rst  As ADODB.Recordset    Set rst = New ADODB.Recordset    With rst      .Open "SELECT * FROM tab1 WHERE ID=1", _         CurrentProject.Connection, _         adOpenStatic, _         adLockReadOnly      If Not .BOF Then        .MoveFirst        Debug.Print .Fields(0).Name        Debug.Print .Fields(1).Name        Debug.Print .Fields(2).Name        Debug.Print "------------------------"        Debug.Print .Fields("ID")        Debug.Print .Fields("fld-1")        Debug.Print .Fields("fld-2")        Debug.Print "------------------------"        Debug.Print !ID        Debug.Print ![fld-1]        Debug.Print ![fld-2]      End If    End With End Sub [イミディエイト] ID fld-1 fld-2 ------------------------ 1 AAA 111 ------------------------ 1 AAA 111 このテストで判るように![XXX-X]と括弧([])を付けるとエラーは回避されます。

関連するQ&A

  • Accessのフィールド名に半角括弧を使ってしまった

    Accessで簡単なVBAを書いています。 以下のコードでレコードを追加しようとしています。 rs.AddNew rs!ほげ = "ほげほげ" rs!ふう = "ふうふう" rs!hoge(ほげ) = "げほげほ" rs!foo(ふう) = "うふうふ" rs.Update 結果: 実行時エラー'3265': 要求された名前、または序数に対応する項目がコレクションで見つかりません。 rs!hoge(ほげ)の行で起こります。フィールド名に ( や ) を使わないようにするとうまくいきます。 CSVからのインポートの問題もあってフィールド名は変更できません。 このフィールド名のままうまくいく方法はありませんか? 宜しくお願いします。

  • ACCESSでのフィールド名

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

  • Accessの電話番号フィールド

    Access2000以降について質問です。 顧客記録の電話番号フィールドについてお尋ねします。 異なるデータソース(テキスト形式)から各々に電話番号フィールドを含む2つのテーブルを作成したのですが、電話番号のフィールドがテーブル1では「ハイフンつき」の電話番号、テーブル2のほうでは「ハイフンなし」の電話番号になっています。また、いずれのフィールドもデータ型は「テキスト型」になっています。 やりたいことはテーブル1の電話番号にはないテーブル2の電話番号を含むレコードを不一致クエリを用いて抽出したいのですが、ハイフンがあるために全て不一致になってしまいます。 ハイフンを入れるのは地方の電話番号が多いため市外局番が3桁や4桁などで不揃いのためLEFT、RIGHT関数を用いて入れるのは不可能です。 そこでテーブル1のハイフンつき電話番号フィールドからハイフンを取り除きたいのですが、なにか方法はありませんか?VBAは分からないのでそれ以外でやる方法があれば教えて下さい。お願いします。

  • ACCESS VBA レコードセットの参照方法について

    ACCESS2000でシステムを作っています。 ADOを使って、SELECT句に"*" を使用した内部結合でデータを 抽出したときの結果の参照方法がわかりません。 SQL="SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id" rsはレコードセット,ACはアクティブコネクションとして rs.Open SQL, AC, adOpenKeyset, adLockOptimistic にて結果を取得し、変数aにtable1のフィールド名の値を代入 しようとしています。 a = rs!table1.フィールド名 では「コンパイルエラー メソッドまたはデータメンバが 見つかりません」となり、値の参照ができません。 "*" でなく、フィールド名を明示して それぞれのフィールドに "as 別名"をつければ 参照できますが、フィールドが多いので "*"を使用したいのです。 大変初歩的な質問かと思いますが、どうかよろしくお願いします。m(_ _)m

  • Accessフィールド名でひらがな、カタカナの区別

    Accessのクエリは、フィールド名のひらがな、カタカナを区別しないのでしょうか? こんなことがありました。 VBAのプログラム(クエリ)側ではフィールド名[ひらがな]を指定している箇所で、実際のフィールド名は[ヒラガナ]であり、異なっていることに気づきました。 しかしエラーを出力せずに動作していました。テーブルを見ると、希望通りにデータは格納されていました。 問題個所のクエリと対象のフィールド名は統一する予定ですが、 この動作がMicrosoftの仕様なのか、たまたま動作しているのか、そんなことは無いのか、 ちょっと気になったので質問させて頂きました。 宜しくお願い致します。

  • AccessのVBAでの日付の計算の記述のしかた

    AccessのVBAで日付の計算をしようとしています。 DateAdd("m",6,Date()) と入力するとコンパイルエラーになります。 どこが間違っているでしょうか。 マクロウィンドウで値の代入とかやっていたときは、これでできていた気がします。 VBAだと記述の仕方が変わるんでしょうか。 実際は、「6」とか「Date()」のところに フィールド名を入れたいのですが、それって可能でしょうか。 ものすごく初歩的な質問だとおもいますが、 回答よろしくお願いします。

  • Access2002のフィールド

    Excell2002のデータシートをAccess2002にインポートした際に「インポートエラー」らしのですが、その中で一つのフィールド(数値型)で「小数点以下の表示」がまちまちに表示されてます。 ⇒小数点以下1桁表示に統一したいのです。 ⇒フィールドのプロパティで該当フィールドの「小数点以下表示桁数」で「1」を選択しても、改善されません・・・? 初歩的な質問ですがよろしくお願いします。

  • ACCESS サブフォームのフィールドにカーソルをあてる

    ACCESS2003で、VBAで簡単なプログラムを作っています。 <やっていること> ・フォームAからフォームBを開きます。 ・そのときにフォームAの番号と一致するデータをフォームBに表示します。 ・フォームBにはサブフォームCが埋め込んでいます。 このサブフォームCの中のフィールドDにカーソルが入っているようにしたいのですが、 Forms!サブフォームC!フィールドD.setfocus としたら、「カレントレコードには、フィールドDという名前のフィールドはありません」というエラーがでます。 フィールドDというフィールドは存在しています。 このような場合、どのように記述するのがよろしいのでしょうか。 よろしくお願いします。

  • Access VBA 添付型フィールド

    Access VBAで添付型フィールドからファイル名を取りだしたいのですが、どのようにすればいいでしょうか? Private Sub Sample() Dim DB As DAO.Database Dim RS As DAO.Recordset Dim SQL As String   Set DB = CurrentDb SQL_1 = "SELECT * FROM ボランティア情報 ORDER BY 分野 & 団体名読み;" Set RS = DB.OpenRecordset(SQL_1, dbOpenDynaset) With RS   Do While Not .EOF   MsgBox (!写真.FileName)  ←ここでエラーが出ます。 .   MoveNext   Loop End With RS.Close Set RS = Nothing Set MDB = Nothing End Sub

  • データベース(PostgreSQL)のフィールドとpg_field_num()について

    現在私は、あるシステムを構築しています。 開発言語にPHP、データベースにPostgreSQLを使用しています。 そのシステムの中で、データベース(テーブル)にアクセスし、指定したカラムの保持しているデータを更新する処理をしているところがあります。 各カラム名は、システム使用者のIDとなっています。 実際のスクリプトとしては、 ************************************************ $id = (使用ユーザのID); $rs = (テーブルをセレクトした際のリソース); $row = pg_fetch_row($rs); $new_data = $row[pg_field_num($rs, $id)] + 1; // 該当する値をインクリメント ************************************************ という感じになります(問題箇所のみ)。 IDには大きく分けて二種類あり、  ・数字だけのもの  ・数字が英字混ざったもの があります。 上記のスクリプトで、数字だけのIDでは正常に動作するのですが、数字と英字が混ざったものは正常に動作しません。 pg_field_num($rs, $id)の値を出力してみると、-1 が出ます。 しかし、指定しているカラムはしっかり存在しています。 念のため、pg_field_name($rs, (該当するカラム番号))を出力してみても、出力されたカラム名は正しいです。 即ち、 ************************************************ $new_id = pg_field_name($rs, (該当するカラム番号)); $test = pg_field_num($rs, $new_id); ************************************************ としても、$testの値は -1 となります。 -1 が出力されると言う事はエラーが出力されているという事なので、pg_result_error等でエラーを出力してみても、エラーはありません。。。(もしかしたら、正しくないやり方をしてるのかもしれませんが) 現状では手の施しようがありません。 どなたか、ご教授お願いします。

    • 締切済み
    • PHP