• 締切済み

Access2000でフォーム上の複数フィールドからのデータ取得について

フォーム上の合計01~合計10のフィールドからデータ取得しようとして以下のように考えましたがうまくいきません。どのようにすればいいでしょうか?よろしくお願いします。 DO UNTIL I = 10 CCC = "Forms![フォーム名]!" & "合計" & Format(I, "00") I = I + 1 LOOP

みんなの回答

  • PAPA0427
  • ベストアンサー率22% (559/2488)
回答No.2

すみません。もうすこし情報を下さい。 フォーム上に配置されているフィールドは、テキストボックスですか?それとも連結フォームですか?サブフォームですか? テキストボックスなら、さきほどの回答で取れるはず、何ですが…。 連結フォームなら、DBから直接取得する方法もあります。サブフォームならDBから直接とる形になります。 さて、どれでしょうか?

takku984
質問者

補足

テキストボックスです。フォームは連結、サブフォームではありません。通常のフォームです。

  • PAPA0427
  • ベストアンサー率22% (559/2488)
回答No.1

はじめまして。 つまり、フォーム上に「合計01」から「合計10」のフィールド?があると言うことですね。テキストボックスではないんでしょうか? Dim frm As String Dim fm As String Dim i As Long Dim CCC As Double frm = "Forms![フォーム名]!合計" CCC = 0 For i = 1 to 10 fm = frm & Format(I, "00") CCC = CCC + fm.Value Next i お試しください。検証してませんのでアドバイスにさせてください。

takku984
質問者

補足

ご回答ありがとうございます。fm.Valueは修飾子不正のエラーメッセージが出てます。fm内にはForms![フォーム名]!合計01となっていますが肝心のデータを引き出すことができません。もしわかればアドバイスお願いします。

関連するQ&A

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

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

  • 【Access】複数フィールドを対象とする検索

    Access上で「検索ボタン」をクリックすると、 「データ」フォームのフィールド1、フィールド2、フィールド3のいずれかに「検索条件1」の語を含み、かつ、フィールド4、フィールド5、フィールド6のいずれかに「検索条件2」の語を含むレコードを抽出できるようにしたいと思います。 検索条件はテキストボックスに入力するようにしており、テキストボックス名は「検索条件1」、「検索条件2」となっています。 以下のコードでやってみたのですが、「実行時エラー13、型が一致しません」というエラーが出てうまく抽出できません。 Private Sub 検索ボタン_Click() Dim filter1 As String filter1 = "フィールド1 like '*" & Me!検索条件1 & "*' or フィールド2 like '*" & Me!検索条件1 & "*' orフィールド3 like '*" & Me!検索条件1 & "*'" And " フィールド4 like '*" & Me!検索条件2 & "*' or フィールド5 like '*" & Me!検索条件2 & "*' orフィールド6 like '*" & Me!検索条件2 & "*'" DoCmd.OpenForm "データ", acNormal Forms!データ!.filter = filter1 Forms!データ!.FilterOn = True End Sub 「検索条件1,2」のテキストボックスがあるフォーム上の「検索ボタン」をクリックすると、 「データ」フォームが開き、検索をかけるという流れをイメージして作成 しています。 どなたか正しい記述を教えていただけませんでしょうか。 よろしくお願いいたします。

  • MS-ACCESSのフォーム切り替え表示について

    フォームA(少量データ)からフォームB(大容量データ)を呼び出して表示させる方法について 教えてください。 まず、フォームAは複数の個人名のボタンとサブフォームで全員の最新情報が表示される ものを作っています。 この個人名のボタンをクリックするとフォームBにその個人の全情報を表示させる仕組みなのですが、フォームBは情報量が多い為、表示させるのに時間がかかります。 そこで下記のようなVBAを記述し、Do~LoopでフォームBが開くまでの時間を稼ごうと思っても 次の処理が行なわれてしまい、エラーになってしまいます。 Private Sub ボタン_Click() DoCmd.OpenForm "フォームB" Do Until SysCmd(acSysCmdGetObjectState, acForm, "フォームB") = acObjStateOpen DoEvents Loop Application.Forms![フォームB].Controls![担当者名] = "担当A" Me.フォームB.Requery End Sub これでフォームBが開くまで待ってから次のステップのフォームB内の条件設定や Requery処理を行なうと思っているのですがうまくいきません。 DoEvents処理が入っているせいかと思い、はずしたのですがそれでもうまくいきません。 もともとはフォームBだけで運用していたのですがデータ量が増えて表示に時間がかかり すぎるので新たに項目は同じで件数の少ない最新情報のみのテーブルを作成し、 それをもとにフォームAを作成しています。 ですのでフォームA,Bともに同じようなサブフォームになっており、またそれぞれの サブフォームを構成するテーブルが異なる為に1つのフォームでの処理ができません。 拙い説明ですがどなたかご教授願います。

  • インプットフィールドが増えたり、名前が変わったりしてもPOSTされたデータを取得できるような書き方

    現在POSTデータを受け取る際、$_POST['インプットフィールド名']のように記述しているのですが、 フォームから送信されてきた全てのデータをもっと簡単に取得する事ってできませんか? 例えば ページ1にフォームAがあり、A1、A2、A3というインプットフィールドがあります。 ページ2にフォームBがあり、B1、B2、B3というインプットフィールドがあります。 どちらのフォームもページ3にPOSTされます。 現在だと、ページ3にこんな感じで書いています↓ if (フォームAのsubmitボタン名){  $data[] = $_POST[A1];  $data[] = $_POST[A2];  $data[] = $_POST[A3]; } else {  $data[] = $_POST[B1];  $data[] = $_POST[B2];  $data[] = $_POST[B3]; } しかしこれだと、フォームA、BからPOSTされるデータの数や名前が変わるとページ3も修正しないといけないですよね。 インプットフィールドが増えたり、名前が変わったりしてもPOSTされたデータを取得できるような書き方ってないのでしょうか。 可能か不可能か、可能であればどのように書けばいいのか、アドバイスをお願いします。

    • ベストアンサー
    • PHP
  • {アクセス}全てのフォームの名前を取得したい

    ひとつのMDBファイルに入っている全てのフォームの名前を取得したいのですが Sub 全てのフォームの名前を取得() Dim i As Integer For i = 1 To Forms.Count Debug.Print Forms.Name Next End Sub このコードだと オブジェクトは、このプロパティまたはメソッドをサポートしていません。(Error 438) となってしまいます。 どうすればいいでしょうか よろしくお願い致します。

  • ACCESS2000の複数検索条件からのデータ抽出

    こんにちわ。前回質問内容自体どう説明してよいかわからず、途中で終わってしまったので、再度、詳しく質問してみました。 今、Accessで受注管理を作成しているんですが、複数の検索について教えて下さい。 ■テーブル テーブル名:受注管理 フィールド名:受注ID・日付・商品種別・顧客名・仕入種別・状況種別 ■クエリ クエリ名:受注クエリ(フィルタ) フィールド名:受注ID(表示チェックあり)・日付・商品種別・顧客名・仕入種別・状況種別 と式1[Forms]![検索フォーム名]![日付text]・式2[Forms]![検索フォーム名]![商品種別combo]・式3[Forms]![検索フォーム名]![顧客名text]・式4[Forms]![検索フォーム名]![仕入種別list]・式5 [Forms]![検索フォーム名]![状況種別combo]の計11列です。 抽出条件:検索名フィールド: 受注IDを除く各フィールド名の下に Like "*" & [Forms]![検索フォーム]![日付text] & "*" Like [Forms]![ 検索フォーム名]![商品種別combo] Like "*" & [Forms]![ 検索フォーム名]![顧客名text] & "*" Like [Forms]![ 検索フォーム名]![仕入種別list] Like [Forms]![ 検索フォーム名]![状況種別combo] 各式の下に Like "" Like "(なし)"      Like "" Like "(なし)" Like "(なし)" を検索パターンに応じて入力しました。 マクロにより、フィルタの実行をしていますが、この方法だと4つまでなら、検索可能なのですが、5つ以上になると、「フィルタが長すぎます」というダイアログボックスがでて検索ができません。VBAやSQLはいまいちわからないので、何か簡単に、5つ以上の検索条件で検索できないでしょうか。お願いします。

  • AccessのDAOでフィールド名を配列に格納して・・・

    Access2000のDAOで下記のようなコードで複写元テーブルから複写先テーブルにデータを追加するとします。 Set Rs1 = Db.OpenRecordset("複写元", dbOpenTable) Set Rs2 = Db.OpenRecordset("複写先", dbOpenTable) Do Until Rs1.EOF Rs2.AddNew Rs2!FL1 = Rs1!名前 Rs2!FL2= Rs1!性別 Rs2!FL3= Rs1!郵便番号 Rs2!FL4= Rs1!住所    ・    ・ Rs2! FL50= Rs1! 50番目 Rs2.Update Rs1.MoveNext Loop 複写元のフィールドが50フィールドもあると、いちいちRs1!名前とかRs1!性別とか記述するのが大変ですし、ものすごく長いコードになります。そこで、配列にしてやったらどうだろうかとこんなことをしてみましたがだめでした。 Dim I Dim FieldsName FieldsName=Array("名前","性別",・・・"50番目")            ・            ・ Do Until Rs1.EOF Rs2.AddNew For I=0 To 49 Rs2!フィールド(I) = Rs1!FieldsName(I) Next Rs2.Update Rs1.MoveNext Loop じゃあTebleDifのTd.Fields().Nameを使って・・・・やっぱり失敗しました。 For I=0 To 49 Rs2!フィールド(I) = Rs1!Td.Fields(I).Name Next やりたいこと分かっていただけますでしょうか?要するにフィールド名を配列の様なもので格納しておいて、レコードの追加時に50回ループさせてRS2のフィールドにいれたいのです。何か良い方法は無いでしょうか。

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

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

  • Accessにてデータの更新

    Accessにて、フォームにボタンを作成し、クリックすると フォームのテキストボックスのデータを取得し、 テーブルのデータを更新するVBAを作りたいのですが、 mySQL = "UPDATE テーブル名 SET フィールド名 = '1234'" このようにすると、フィールドが1234のデータに更新されるのですが、 これを namae =Me!テキストボックス名 mySQL = "UPDATE テーブル名 SET フィールド名 = namae" とするとうまくいきません。 正しい書き方をお願いします。

  • Access2003にてあるフィールドのデータ型を

    Access2003にてあるフィールドのデータ型を 『数値型:単精度浮動小数点型』にして書式を『固定(0.00)』 にしてデータ格納しているのですがExcelVBAでSQL(SELECT文)を使って抽出すると すごい桁数(小数点以下)で出てきます どのようにすれば小数点以下2桁でデータ取得できますか?