
宜しくお願いします。
仕様環境:WinXP access2002
フォーム上にコマンドボタンで空白のレコードを
追加したいのですが、一行だけなら「値の代入」マクロで
追加できるのですが、複数行だとやり方がわかりません。
「追加クエリ」を作ってコマンドボタンにマクロで乗せてみたのですが、
テーブル上では複数の空白レコードが追加されてますが、
フォーム上には反映してくれません。
「値の代入」マクロを使って、複数行のレコードをフォーム上に追加するか、
「追加クエリ」を使って、複数行のレコードをフォーム上に反映させるか
したいのですが教えてください。
※ ちなみにこのフォームはサブフォームです。
また5行追加しようとしています。
この方法では無理でしたらご指導お願いします。
宜しくお願いします。
No.4ベストアンサー
- 回答日時:
No.2です。
> サブフォームにその機能をつけると空白行が表示されない
まず念のための確認ですが、この「空白行が表示されない」
となった状態で一旦フォームを閉じてから再度開いた場合に、
サブフォームには空白行は表示されますか?
メイン-サブの表示形式では、多くの場合、メイン-サブ間で、
あるフィールドが一致するものに絞り込むと思うのですが、
その絞り込みの結果、「空白行」が対象外になってしまって
いたりしないか、確認してみてください。
(開き直しでも表示されないなら、空白行を追加するクエリで、
対応するフィールドへの値の代入が必要、ということ)
その上で、開き直せば表示されるということだったとすると・・・
通常は、コントロール名にサブフォームの名前を指定した
「再クエリ」でいけるのですが、「コマンドの実行」アクションの
「追加貼り付け」などと組み合わせると挙動がおかしくなった、
という経験があるので、そのとき採った対処法を踏襲してみます。
「再クエリ」の代わりに、以下のいずれか1パターンの対応を追加
してみてください。
【パターンa】サブフォームの『ソースオブジェクト』の更新
アクション : 値の代入
式 : [Forms]![フォーム1]![サブ1].[SourceObject]
アイテム : [Forms]![フォーム1]![サブ1].[SourceObject]
【パターンb】サブフォームの『レコードソース』の更新
アクション : 値の代入
式 : [Forms]![フォーム1]![サブ1].[Form].[RecordSource]
アイテム : [Forms]![フォーム1]![サブ1].[Form].[RecordSource]
※メインフォームが「フォーム1」、コントロールとしての
サブフォームの名前が「サブ1」の場合。
(サブフォームとして使用しているフォームの名前とは
異なる場合があります(ウィザードを使用してサブフォーム
を設置した場合は、通常では同一になりますが))
注意:
式・アイテムの先頭では「Forms」と「s」が入りますが、
パターンbの中間では「Form」と「s」が入りません。
また、「!」と「.」も混在しているので注意して下さい。
できました!
メイン-サブ間での追加クエリを使った、
フォーム上への複数行表示が!
仰るとおり、絞り込む時のクエリがおかしかったようです。
試しに作った簡単なデータベースだと
追加クエリのフィールド名に
「商品名」、「数量」、「親ID(これがメインのもの)」
で「親ID」のところに式ビルダで絞り込む式を作ってOKでした。
[Forms]![親F]![親ID]
で、実際のはもっと混み合っていて「メイン - サブ1 - サブ2」でしたので、
上記の「メイン」の代わりに「サブ1」のIDを入れて式ビルダで絞り込みをしたら、
無事、サブ2に複数行空白が表示されるようになりました。
これで思うように行くようになりました。
助かりました!
有難うございます。m(_ _)m
No.3
- 回答日時:
> まずテーブルにはコマンドボタンで追加クエリを実行するようにして
> 複数行増やせるようになったのです。
申し訳ございません。
この時点で認識のずれが大きかったと思います。
私が示したやり方は、本質的なテーブルのレコードは増やしません。
入力されたものだけがテーブルに格納されていく方法です。
(やり方自体が正式なものかわかりません)
ご質問者様が、今考えているものとは異なものになると思います。
※ 空白行追加して、そこに有効なデータが埋め込まれなかったら?とか、
そのフォームを閉じる時、無効なレコードを消しまくる?とか
ちょっとその辺が気になったもので。
※※ ごめんなさい。
私のレベル超えちゃいましたので私の回答はスルーしてください。
※※※ > 横レス失礼致します。(#2様)
どんどん入れてください。
その方が私も安心です。
いえいえ、あなた様の方がはるかにレベル高いと思います。
私はVBAとか書けないもので・・(苦笑)。
こちらが伝えたいことを理解して頂きありがとうございます。
空白行をその後、どうするかも確かに考えていまして、
それは削除用のボタンを作ってあります。
(削除クエリでテーブル内の空白行を一括削除するボタンです。)
フォームを閉じる時に空白行を削除するのも良い手ですね。
意識せずに無駄なものがなくなります。
今度、やってみます。
あなた様ぐらいのことができれば、動作を減らして、
もっとツールも便利になると思うのですが・・。
有難うございましたm(_ _)m
No.2
- 回答日時:
【回答要旨】
「再クエリ」アクションの実行前に、「コントロールの移動」アクションを
追加します。
【詳細】
横レス失礼致します。
> テーブル上では複数の空白レコードが追加されてます
> 「再クエリ(おそらくRequery?)」というコマンドを入力したのですが、
> 表示されているレコードの先頭にカーソルがくるだけで、
> フォーム上に空白行を追加する(もどき操作)が出来ないのです。
レコードの追加ができているのでしたら、あとは再クエリの仕方だけの
問題かと思います。
文面からするとVBAではなくマクロ(マクロオブジェクト)を使用されて
いるものと思います。
この場合、サブフォームを更新(再クエリ)するには、前処理が必要に
なります。
現在のマクロに対して、「クエリを開く」アクション(→追加クエリの実行)と
「再クエリ」アクションの間に、以下のアクションを追加してみてください。
アクション : コントロールの移動
コントロール名 : (サブフォーム名)
なお、このアクションにより、フォーカスがコマンドボタンからサブフォームに
移動しますので、必要であれば「再クエリ」の後にもう一度「コントロール
の移動」アクションを追加してください(引数にはコマンドボタン名を指定)。
※とりあえず、上記の内容だけなら大丈夫だと思いますが、サブ
フォームへの移動~コマンドボタンにフォーカスを戻すまでに間に
行う処理の内容によっては、「コントロールが見つからない」旨の
エラーが表示される場合があります。
(「コントロールの移動」アクションは、マクロの起動時ではなく、
アクションを行う瞬間にカーソルがあるフォーム内で、指定された
コントロールを探すため、別のフォームなどに一旦フォーカスが
移動されていたりすると、指定したコントロールが見つからない、
ということになるため)
上記のようになった場合は、コマンドボタンへの「コントロールの移動」
の直前に、「オブジェクトの選択」アクションを追加して下さい。
(引数には、上から「フォーム」、「(フォーム名)」、「いいえ」を指定)
この回答への補足
回答ありがとうございます!
試してみましたが、駄目でした・・。
どのサイトや本を見ても再クエリでいけるらしいのですが、
なぜかいけないのです。
で、試しに”そもそも”のやり方が間違えてないか、
簡単なデータベースを作って、複数の空白行を追加(表示)
する方法をやってみたのですが、
(フィールドは主キー(オートナンバー)と商品名と数量だけとか)
まず、フォームが一つ(帳票型)だけなら
追加クエリと再クエリのマクロでいけました。
無事、フォーム上に複数の空白行が追加(表示)されました。
※ ちなみに10行単位で追加しました。
しかしフォームを二つ、つまりメインフォーム(単票型)と
サブフォーム(帳票型)にしてサブフォームにその機能を
つけると空白行が表示されないのです。
※ テーブルにはしっかり追加されていますが。
リレーションシップはしてもしなくても同じ結果でした。
ちなみに試した時のメインフォームは主キー(オートナンバー)と顧客名だけです。
まったくわかりません・・。
No.1
- 回答日時:
ご提示された情報だけでは詳細な回答はできません。
(切羽詰まっているのでしょうか、似た質問を見かけました)
(こちらの方がやり取りができるので、ここにて)
雰囲気だけでも。
表示しているテーブルのフィールド構成が以下だと仮定します。
テーブル:T_売上詳細
フィールド:売上番号、細番、商品名、数量、単価、金額
表示は、売上番号で絞り込みされ、細番順に表示されていたとします。
http://oshiete1.goo.ne.jp/qa4759213.html
ここをベースとした変形として考えてみます。
社員選択用コンボボックス「cbx01」が、売上番号
T_月日が、細番用テーブル
(フィールドは、細番号で1~必要分)
必要分は、DCountなり、DMAX("[細番]","T_売上詳細","[売上番号]=" & Me.cbx01)とか
空白行を追加する(もどき操作)は、細番用テーブルに細番号を必要分追加し、Me.Requery すれば可能かと。
フォーム上の表示では、細番号テーブルの細番号は非表示としておきます。
この方法での難点)
上から連続してデータを埋めていかないと、細番が連続しない。
もう少し、環境なり、構成なり詳しく書いてみてはいかがでしょう。
※※ 今回実際に検証して書いているわけではないので、かも、というレベルです。
※※ という私は回答できないレベルなのかも
※※ その時にはごめんなさい。
この回答への補足
回答ありがとうございます!
すごい検討違いなことをいっていたら申し訳ないのですが、
まずテーブルにはコマンドボタンで追加クエリを実行するようにして
複数行増やせるようになったのです。
その後の
>空白行を追加する(もどき操作)は、細番用テーブルに細番号を必要分追加し、
Me.Requery すれば可能かと。
これがたぶん自分の中でわからないのです。
その「追加クエリを実行するコマンドボタン」でクエリを実行した後に
「再クエリ(おそらくRequery?)」というコマンドを入力したのですが、
表示されているレコードの先頭にカーソルがくるだけで、
フォーム上に空白行を追加する(もどき操作)が出来ないのです。
一応、そのフォーム自体(前に貼ってあった画像)にも再クエリをしてみたのですが、
(おそらくMe.Requeryですね)
それも何ともならず・・。
ちなみに画像が消えていますが、
これはテーブルがどんな感じになっているか新たに画像を貼り付けようとして、
削除したら再度画像を貼り付けられないことが判明しました(汗)。
申し訳ないです。
あ、あと似た質問と言えば、他の質問サイトでも同じ質問を出しました。
こちらで中々返信がなかったので、初挑戦してみました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VB.net フォーム 親子 1 2022/07/04 19:00
- Access(アクセス) accessについて(超初心者です) 1 2023/02/11 11:18
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- Access(アクセス) Accessにインポートした複数のテーブルを表示させる方法が分かりません。 1 2023/01/30 20:22
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- JavaScript ソースコードは下の共有コードサイト「張り紙」にあります。 入力フォームの javascript で 1 2022/05/11 11:01
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
このQ&Aを見た人はこんなQ&Aも見ています
-
ACCESS 入力フォームでテーブルへデータを複数追加する
Access(アクセス)
-
Access 同じデータをたくさんのレコード(同一列)に一度に入力するには
Access(アクセス)
-
アクセスで複数行の一括入力する方法
その他(Microsoft Office)
-
-
4
AccessでIDを入力したら他の項目も自動で表示
Access(アクセス)
-
5
[Access]帳票フォームにて連続する非連結コントロールに個々の値を入れるには
Access(アクセス)
-
6
Accessでコードを入れると名前がでるようにしたい
Access(アクセス)
-
7
ACCESS(アクセス):一度の入力で複数レコード追加をする方法
その他(データベース)
-
8
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
9
ACCESSのフォームからデータの追加ができない
その他(データベース)
-
10
Accessのテーブルデータを一気にVBAで追加したい・・
その他(データベース)
-
11
ACCESSでテーブルにあるチェックボックスを一括でYesにする方法を教えてください
Access(アクセス)
-
12
前のレコードの値を自動で入れたい
PowerPoint(パワーポイント)
-
13
ACCESSのフォームで複数レコード同時表示
Visual Basic(VBA)
-
14
Access サブフォームでの選択行の取得
その他(データベース)
-
15
ACCESS フォームからサブフォームのデータを更新・入力したい
Access(アクセス)
-
16
ACCESS VBA でのエラー解決の根拠がわかりません エラー「イベントプロパティに指定した式・・
Access(アクセス)
-
17
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
18
アクセスでテーブルの変更内容をフォームに反映させるには?
その他(データベース)
-
19
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
20
アクセスのレポートのヘッダーを2ページ以降にもつけるには?
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Microsoft 365 Basic サブスク...
-
Accessのクエリの結果を、既存...
-
access2021 強制終了してしまう
-
access2021 VBA メソッドまたは...
-
Access Error3061 パラメータが...
-
Access VBA [リモートサーバー...
-
アクセスの更新クエリでカレン...
-
ACCESS VBA でのエラー解決の根...
-
AccessVBAで任意の複数リンクテ...
-
Microsoft365にAccessってあり...
-
Accessのクエリで、replace関数...
-
Excelを開く時と閉じる時に一度...
-
列が255以上のCSVファイルをAcc...
-
Accessのフォーム上のテキスト...
-
エクセルのVBAについて教えてく...
-
Access で半角スペースと全角ス...
-
MS.Access でサブフォーム付の...
-
Accessのレポートについて
-
access2019の起動が遅い
-
access2021 メッセージボックス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Microsoft 365 Basic サブスク...
-
Accessのクエリで、replace関数...
-
access2021 強制終了してしまう
-
ACCESS VBA でのエラー解決の根...
-
Access VBA [リモートサーバー...
-
Accessのスプレッドシートエク...
-
Accessのレポートについて
-
access2021 VBA メソッドまたは...
-
Access Error3061 パラメータが...
-
access2019 チェックボックスと...
-
Accessのクエリの結果を、既存...
-
accessでlaccdbファイルが削除...
-
Access VBA を利用して、フォル...
-
accessデータを指定したExcel、...
-
Accessのリンクテーブルのパス...
-
列が255以上のCSVファイルをAcc...
-
Accessのクエリの印刷設定
-
Accessでレポートを印刷する時...
-
Accessフォームの配色テーマを...
-
Accessデータベースに含まれる...
おすすめ情報