• 締切済み

レコード数分テキストボックスなどを表示したい

今、売上管理のDBを設計しています。 商品テーブルのマスターメンテをするためのフォームを作ろうと思っているんですが、VBAを使って表示or編集用のテキストボックスをレコード数分表示する方法がわからず困っています。 表示しようと思っているタイミングは、フォームを開いた時、レコード数に変化があったときです。 CreateControlというメソッドはデザインビュー状態でないとできないとエラーを吐かれてしまいうまくできません。。。 どうかご教授お願いしますm( _ _ )m

みんなの回答

  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.3

VB6では、コントロール配列の数の変更ができましたが、ちょっとソースが見つかりません。 事情が良くわかりませんが、他の方法で解決できないなら コントロール配列をある程度用意しておいて、表示をon/offすることによって、数だけあるように見せることはできますが、とってもめんどくさいことになると思います。 私が作るなら、検索部分と編集部分は別に作ると思います。 (検索部分で編集したいレコードを特定し、編集部分には1レコードのみ表示させる)No1の方がおっしゃっていることと同じかな。

  • kurodai2
  • ベストアンサー率38% (77/202)
回答No.2

何をされようとしているのか ちょっと理解しかねますが 商品マスターのメンテナンス画面を作りたいと言うのは もしかして、表形式のフォームの事を目的とされているのではないですか? テキストボックスをレコード数分と言っても、フォームにおける数には制限がありますので、書かれているまま捉えると 無謀な気がします。 一度、フォームウィザードで、表形式を選んで作成してみてください。 これで事足りるのではないですか?

  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.1

レコード数が何件になるか不明ですが、1000件あったら、1000個のテキストボックスを出したいのですか? 考え方を変えて、キーとなるコードを設定するエリアと、 1レコード分のテキストボックスで間に合うのではないですか? あとは、”追加”・”変更”・”削除”のコマンド用ボタンで対応 できると思いますが。

関連するQ&A

  • FindFirstでレコードに移動できない

    テーブルを基にフォームをデータシートビューで表示しています。 フォームを開くと、デフォルトで1レコード目がアクティブになります。 vbaで2014/07/02のレコードをアクティブにしたいので 標準モジュールに Forms("フォーム").Recordset.FindFirst "取引日 = 2014/07/02" としても、アクティブになりません。 エラーにもなりません。 Forms("フォーム").Recordset.FindFirst "取引日 = " & #7/2/2014# もダメでした。 FindFirstメソッドは 「条件と一致する最初のレコードを検索する」するのではないのでしょうか? 2行目のレコードをアクティブ(選択状態)にさせたいです。

  • フォーム上でレコードの非表示

    どなたか教えて下さい。テーブルからフォームを作成したのですが、下のレコードの表示を非表示にする方法を教えて下さい。フォームヘッダー等を色々調べましたが、どうしても一番下にレコード(レコードの数、次に進むボタン等)が表示されてしまいます。よろしくお願い致します。

  • フォーム内のテキストボックスに複数レコードを表示

    いつも大変お世話なっております。Accessを始めて3週間の初心者です。 今、社員の在籍中の職級推移を残すための社員明細フォームを作成しています。 社員数数百名。 フォーム名:社員明細 テーブル名:TBL_職級期間一覧 テーブルには 以下のようなレコードが並んでいます。 IDはオートナンバー型を振っています。 年度が替わって、職級が変化すればレコードが追加されます。 (ID 586のように001234 さんのレコードが追加)  ID  社員No    開始     終了    職級名  1  001234  2004/04/01 2008/03/31   S3  2  001234  2008/04/01 2012/03/31   S2  3  001234  2012/04/01 2015/03/31   S1  4  005678  1998/04/01 2003/03/31   T6  5  005678  2003/04/01 2005/03/31   T5  6  005678  2005/04/01 2013/03/31   T4  7  005678  2013/04/01 2016/03/31   T3  ・  ・  ・ 586  001234  2015/04/01 2016/03/31   K5 これらを添付写真のようにフォームに表示させる方法がわかりません。 IDを振ったのは社員Noで絞り込み、昇順・降順で表示させる順番を 推移の新しい順、古い順に可変させられるのでは・・?と思ったので IDフィールドを付けました。 いろいろ検索し=DLOOKUPを使ったりと試してみましたが、よくわかり ませんでした。 何卒お力添えをお願い致します。

  • 前レコードのテキストボックスと同じ値を表示させる

    環境:XP,ACCESS2003 帳票形式のフォームがあります。 次のレコードの入力に移った時、前のレコードのあるテキストボックスは、同じ内容を表示させる方法がわかりません。なお、同じ内容を表示させたいテキストボックスは連結でテーブルのフィールドをコントロールソースにしています。

  • テーブル内のレコードを別のテーブルに移す良い方法を教えてください

    SQLサーバー7.0(ADO)とAccess97のVBAでアプリケーションの開発を行っております。SQLサーバー7.0(サーバー側)にあるテーブルの中身(レコード全件)をAccess97(ローカル)にあるテーブル(テーブル名とその中のフィールド名は全く同じだが中身はからっぽ)にまとめて移しかえる良い方法があれば教えてください。いま私はフォームオープンイベントでフィールドとレコードをループでまわして移しかえているのですが、テーブル数も多いため記述も長くなりますし、何よりもパフォーマンスが良くありません。テーブル単位で中身を別のテーブルに移す方法などがあれば是非教えてください。 (例) SQLサーバー(ホスト側)---テーブル名「T_社員マスター」フィールド数100項目、レコード数500件 ↓ ↓ フォームオープン時にそのまま移しかえたい ↓ ↓ Access97(端末側)-------テーブル名「T_社員マスター」フィールド数100項目、レコード数0件 よろしくお願いします。

  • フィルタ後のテーブルのレコード数を取得したい

    アクセスvbaです。 フィルタ後のテーブルのレコード数を取得したいのですが Debug.Print DCount("[フィールド1]", "テーブル1") だと、フィルタ前の数が取得されてしまいます。 フォーム1にテーブル1を紐付けて、 更にフィルタをしているのですが、 元のテーブル1のレコード数が10として、 フィルタ後が3なら、3を取得するVBAコードを教えてください。

  • テキストボックスとコンボボックス

    こんにちは、Accessのフォームにテキストボックスとコンボボックスを設置して、以下のような事ができないかと悩んでおります。 フォーム内には、テキストボックスとコンボボックスが設置してありまして、コンボボックス内にDB(会社名テーブル)から取得した全ての会社名が入っています。 しかし、そのレコード数が300件近くあるため、コンボボックス内から探し出すのに手間が掛かります。 そこで、コンボボックスの隣にテキストボックスを設置し、テキストボックス更新後に会社名テーブルの検索を行い、条件に合った会社名だけをコンボボックス内に入れることを考えているのですが、上手く行きません。 動作のイメージとしては下記のようになります。 (1)初期表示時はテキストボックス内に何も入力されていないので、全レコードがコンボボックス内に表示される。 (2)テキストボックスに「有限」と入力して、テキストボックスからフォーカスを移動させると、コンボボックス内に「有限」が会社名に含まれているレコードのみが入っている。 (3)テキストボックスを空白に戻すと、コンボボックス内には全レコードが表示 以上、どなたかご教授よろしくお願いします。

  • ACCESSのフォームで複数レコード同時表示

    今ACCESSで製作中のツールで、このようなテーブルから表を作らないといけないのですが、普通に帳票フォームとして作ると思うように出来なくて困っています。 ★テーブル★      ★希望の表★ [フィールド]          (1)日付        1 2 3 4 ~(略)  (2)曜日        月 火 水 木       (3)目標数   目標数   (4)売上げ ⇒ 売上げ  (5)家賃    家賃  (6)電話代   電話代   ~(略) 希望の表がずれてしまいましたが、とにかく日ごとに目標数、売上げ等の値が表示させたいんです。 帳票形式にすると、どんどん下にレコードが表示されていくわけですが、それを右にするという事はやっぱり出来ないのでしょうか。そうなると、日付の分*項目数のテクストボックスを作ってレコードソースで一つ一つ設定していくしかないのかなぁと途方に暮れている次第でございます・・・。 途方に暮れつつも、レコードソースにレコードを指定する方法も全く分からず思考回路が停止寸前です。 どんな事でもよろしいので、何か良い方法、ご指摘あればご教授下さい。質問すら上手くまとめられていませんが、本当に困っているのでよろしくお願い致します。

  • Access:フォームをクリック!該当レコードを開くには?

    Aテーブルを参照している2つのフォームがあります。 Bフォームは、Aテーブルの全内容を表示し、 Cフォームは、特定の項目のみを表示します。 そこで!Cフォームで、詳細を見たいレコードをクリックすると、 Bフォームの該当レコード(全内容)が開かれるようにしたいのですが、 可能なのでしょうか。 VBAは初心者ですが頑張りますので、ぜひ教えてください。

  • チェックボックスでレコードの全選択

    ACCESS2000をWin98で使用しています。 今回、とてもややこしいのですが・・・ マスタテーブルAのワークスペーステーブルBを作成しました。レコードの抽出はマスタAからクエリでワークスペースBに出しています。 フォームのサブフォームには、ワークスペースBをリストで表示しています。 そのリストにチェックボックスがあるのですが、そのチェックボックスをボタン1つで全選択・解除を行いたいと思っています。 現在は「チェック」フィールドがありません。というエラーがでています。 何がやり方を教えていただけないでしょうか?