Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1820 / 2272 ツリー ←次へ | 前へ→

【5112】続 フォーム作成 バリュー 05/5/26(木) 13:17 発言[未読]
【5119】Re:続 フォーム作成 小僧 05/5/26(木) 14:32 回答[未読]

【5112】続 フォーム作成
発言  バリュー  - 05/5/26(木) 13:17 -

引用なし
パスワード
   ▼バリュー さん:
おはようございます。

▼小僧 さん:
返信ありがとうございます。

ご提示された内容ですが、漠然としすぎていて回答がつきにくいと思われます。

▼:
すみません。
以下自分の説明を補いました。
よろしくお願いします。


1.現在のフォームはどうなっているのか。
  テキストボックスやコンボボックスなどのコントロールの配置
  単票フォーム・帳票フォーム

▼:
単票フォームになるかと思います。
「フォームウィザード」画面の
「フォームのレイアウトを指定してください。」の
単票形式(C)で作成しました。


2.検索したいテーブル構成
  フィールドの名前、データ型など

▼:
データ型はほとんどがテキスト型です。
ただ、DBの中にあるユニークとなる項目のデータ型は
数値型になっています。


3.検索するタイミング
  「実行ボタンを押したら」「コンボボックスで選んだら」など

▼:
検索するタイミングは、
「DBの中でユニークとなる項目を入力したら」です。


4.検索した結果の表示
  同じフォームに
  サブフォームに
  別の独立したフォームに など

▼:
検索した結果の表示は、
「同じフォームに」です。


5.修正のタイミング
  「修正したらすぐ」「実行ボタンを押したら」 など

▼:
修正のタイミングは、
「検索した結果の表示をさせたらすぐ」です。


具体的な内容をもう少しご提示して頂くと、回答がつき易くなるかと思われます。

▼:
すみません。誠にありがとうございます。

ACCESSがどんな言語からできているのか?
VBもしくはVBAからできているのか?
その点からわからず、

参考書を見てそこに書いてある作業をしたら
自分が行いたい動きをする開発になるのか?、、
不確かながらも手探りで進めている状況です。

また、自分からの説明不足の点がございましたら、
ご意見くださいませ。
よろしくお願いします。

【5119】Re:続 フォーム作成
回答  小僧  - 05/5/26(木) 14:32 -

引用なし
パスワード
   ▼バリュー さん:
こんにちは。

T_千葉ロッテ
背番号 名前    ポジション
 1  小坂 誠   内野手
 2  バレンタイン 監督
 9  福浦 和也  内野手
14  小宮山 悟  投手
18  清水 直行  投手
30  小林 雅英  投手

こんなテーブルがあったとします。
(主キー:背番号)

1.非連結フォームの例

F_非連結(フォーム)
  背番号コンボ:コンボボックス
         値集合タイプ:テーブル/クエリ
         値集合ソース:SELECT T_千葉ロッテ.背番号 FROM T_千葉ロッテ;

  名前ボックス:テキストボックス

  ポジションボックス:テキストボックス

  以上、フォーム上に3つのコントロールを配置します。

  背番号コンボの更新後処理の右にある「...」をクリックして、
  「コードビルダ」を選択してクリック。

Private Sub 背番号コンボ_AfterUpdate()
  Me.名前ボックス = DLookup _
       ("名前", "T_千葉ロッテ", "背番号 = " & Me.背番号コンボ.value)
  Me.ポジションボックス = DLookup _
       ("ポジション", "T_千葉ロッテ", "背番号 = " & Me.背番号コンボ.value)
  
End Sub

 これでフォームに名前と背番号が表示されると思います。
 フォーム「F_非連結」とテーブル「T_千葉ロッテ」は連結されていないため、
 修正を加えた時にテーブルに書き込む処理を加えます。
 まぁ、改名はあまり行わないとして、ポジションが変わったときの例です。

 上記と同じように操作してポジションボックスの更新後処理に

Private Sub ポジションボックス_AfterUpdate()
  Dim SQLCode As String
  SQLCode = "UPDATE T_千葉ロッテ " _
      & "SET ポジション = '" & Me.ポジションボックス.value _
      & "' WHERE 背番号 = " & Me.背番号コンボ.value

  DoCmd.RunSQL SQLCode
End Sub

 これでポジションが修正されると思います。


2.連結フォームの例
フォームの「新規作成」⇒「オートフォーム単票形式」で
基になるテーブルまたはクエリの選択に「T_千葉ロッテ」を選択。

作成されたフォームをデザインビューで開きなおし、
検索コンボ:コンボボックス
         値集合タイプ:テーブル/クエリ
         値集合ソース:SELECT T_千葉ロッテ.背番号 FROM T_千葉ロッテ;

を追加。(フォームヘッダに配置するとそれらしくなります。)

現在はレコードセレクタによって全ての選手が参照できてしまうので、
検索コンボの値によってフィルタを掛けて絞り込みます。

上記と同じように検索コンボの更新後処理に

Private Sub 検索コンボ_AfterUpdate()
  Me.Filter = "背番号 = " & Me.検索コンボ
  Me.FilterOn = True
End Sub

これで絞り込まれたはずです。
今回は連結フォームなので、フォームに修正を加えるとそのままテーブルに反映されます。

>
>ACCESSがどんな言語からできているのか?
>VBもしくはVBAからできているのか?
>その点からわからず、
>参考書を見てそこに書いてある作業をしたら
>自分が行いたい動きをする開発になるのか?、、
>不確かながらも手探りで進めている状況です。

ACCESSでDB更新等を行う場合、VBAで処理を行うか
ACCESSの機能にある「マクロ」で処理を行うかになります。
この掲示板は「VBA質問箱」ということでマクロ処理は割愛させて頂きましたが、
「コードビルダ」でなく「マクロビルダ」を使用してマクロでも同じ事ができるかも
(すいません、確かめていないです…)です。

1820 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078256
(SS)C-BOARD v3.8 is Free