アクセスのフォームで、この様に、"品番"、"設備名"、"単価"、"担当者"のテーブル(1000レコードほどあります)のフォームがあります。
このフォームを開いた時には、1レコード目が表示されますが、下に一覧が全て表示(100以上は次のページ)され、検索フォームに品番、又は、設備名を入力すると、絞りこまれて表示される様にできますか?
又、下の一覧の担当者の右に"編集ボタン"を置きボタンを押すと、左のデータを編集できる様に(編集は上のフォームで行う)できますか?
説明がへたくそで申し訳ありませんが、誰か教えて頂けませんか?
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
検索フォームは、表示と別のフォームになりますか?
一覧表示しているフォームの、フォームヘッダ部に
検索条件入力とかがあるものと考えてみます(フォームは1つ)
抽出の仕方とかは以下が参考になると思います。
複数条件の抽出フォームの設計 その1
http://hatenachips.blog34.fc2.com/blog-entry-129 …
その3まであるようです。
> 編集は上のフォームで行う
が、イメージできていないので、何個か例を
≪編集ボタンが押されたら、横のデータをいじれるようにする≫には
編集ボタン名を「btn00」とした場合、
1)レコード移動時に詳細部分のテキストボックスに対して、編集ロックをかけます。
2)編集ボタンをクリックした時に、編集ロックを解除します。
解除後、他のレコードに移動すると 1) により編集ロックがかかります。
レコードを選択すると編集ロックがかかり、編集ボタンでそのレコードの編集が可能
Private Sub SetLocks(bOk As Boolean)
Dim ctl As Control
For Each ctl In Me.Section(acDetail).Controls
If (ctl.ControlType = acTextBox) Then
ctl.Locked = bOk
End If
Next
End Sub
Private Sub Form_Current()
Call SetLocks(True)
End Sub
Private Sub btn00_Click()
Call SetLocks(False)
' Me.品名.SetFocus
End Sub
※
編集ロックを解除した際に、"品名"にフォーカスを移動させるのなら、コメントを有効に
更新のタイミングは、他のレコードに移動した時になります。
以下の方がイメージに近いでしょうか。
≪編集ボタンが押されたら、上に内容を表示しデータをいじれるようにする≫には
上のフォームヘッダ部に配置するテキストボックス名を
"txt品番"、"txt設備名"、"txt単価"、"txt担当者" と仮定します。
編集ボタンがクリックされるまでは空欄になっています。
(いろいろ入力できますが、編集ボタンクリックで意味のないものになります)
編集ボタンがクリックされた時点で、上の"txtXXXX" のコントロールソースを設定します。
レコード移動時には、そのコントロールソースをクリアします。
Private Sub SetTextCtrl(bOk As Boolean)
If (bOk = True) Then
Me.txt品名.ControlSource = Me.品名.ControlSource
Me.txt設備名.ControlSource = Me.設備名.ControlSource
Me.txt単価.ControlSource = Me.単価.ControlSource
Me.txt担当者.ControlSource = Me.担当者.ControlSource
Else
Me.txt品名.ControlSource = ""
Me.txt設備名.ControlSource = ""
Me.txt単価.ControlSource = ""
Me.txt担当者.ControlSource = ""
End If
End Sub
Private Sub Form_Current()
Call SetLocks(True) ' ★
Call SetTextCtrl(False)
End Sub
Private Sub btn00_Click()
Call SetTextCtrl(True)
' Me.txt品名.SetFocus
End Sub
★部分では編集ロックをかけていますが、デザインで「編集ロック」を「はい」で設定すれば、実行時に変更する必要はありません。
上の部分で変更していくと、編集ボタンを押した横の表示も変わっていきます。
更新のタイミングは、他のレコードに移動した時になります。
≪編集ボタンが押されたら、上の内容を横のデータに単に反映する≫には
編集ボタンがクリックされた時点で、現レコードに値を代入します。
編集ロックがかかっていても、VBAでの代入は可能です。
Private Sub Form_Current()
Call SetLocks(True) ' ★ 同上
End Sub
Private Sub btn00_Click()
If (Not IsNull(Me.txt品名)) Then Me.品名 = Me.txt品名
If (Not IsNull(Me.txt設備名)) Then Me.設備名 = Me.txt設備名
If (Not IsNull(Me.txt単価)) Then Me.単価 = Me.txt単価
If (Not IsNull(Me.txt担当者)) Then Me.担当者 = Me.txt担当者
End Sub
更新のタイミングは、他のレコードに移動した時になります。
検索フォームが別フォームであったのなら、前述URLでのサンプルで
strFilter を作るまではその通りで、Me.Filter に設定する部分を書き換えます。
一覧を表示しているフォーム名を「F1」と仮定した場合、
まず、フォーム「F1」が起動されているか判別します。
起動されていれば「F1」の Filterを設定します。
If (CurrentProject.AllForms("F1").IsLoaded) Then
With Forms("F1")
.Filter = Mid(strFilter, 5)
If strFilter = "" Then
.FilterOn = False
Else
.FilterOn = True
End If
End With
End If
※ 内部で作成した関数
SetLocks / SetTextCtrl 名は適宜変更してください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
レコードを保存するコード ア...
-
新規レコード行を非表示にしたい
-
アクセス帳票フォームのループ...
-
アクセスの自動保存解除はでき...
-
アクセスでの警告について教え...
-
Accessでレコードの保存をせず...
-
レコード削除時に(サブ)フォー...
-
アクセスでフォームビューがみ...
-
Access 「このレコードを保存す...
-
Access2010、値を入力したら自...
-
Access 更新キャンセルするには?
-
Accessのデータで一問一答形式...
-
Access サブフォームにフィルタ...
-
accessのフォームを空にしたい
-
Accessでチェックボックスで抽...
-
Accessで一件の新規レコードの...
-
フィルタ後のフォームの件数の...
-
Accessで上の行を自動でコピー...
-
Accessで新しいレコードに規定...
-
レコードの移動
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコードを保存するコード ア...
-
アクセスでフォームビューがみ...
-
フィルタ後のフォームの件数の...
-
新規レコード行を非表示にしたい
-
アクセスの自動保存解除はでき...
-
ACCESSでフォームを使って、テ...
-
レコード削除時に(サブ)フォー...
-
Accessでレコードの保存をせず...
-
Access:フォームプロパティ「...
-
Accessでフォーム上に 直前の...
-
ACCESS起動時に所定フォームを...
-
AccessVBA RecordSourceのリセ...
-
アクセスでの警告について教え...
-
accessのクエリで、該当するデ...
-
アクセス データの競合を非表...
-
Access 「このレコードを保存す...
-
Accessで上の行を自動でコピー...
-
Access サブフォームにフィルタ...
-
Accessで新しいレコードに規定...
-
Access2010、値を入力したら自...
おすすめ情報