• 締切済み

ACCESSVBA非連結フォームからレコード検索

お世話になっております。 ACCESS VBAに関してです。 SEQ(通し番号)、項目a,項目bの三つのフィールドを持つテーブルがあったとします。 それに対し、SEQ、項目a,項目bというラベルを張ったテキストボックスがそれぞれひとつずつ、テキストボックス計三つのフォームがあります。 SEQのテキストボックスに番号を入れコマンドボタンを押すと、テーブルのSEQに対応したレコード情報がそれぞれ項目aと項目bに入るようなイベントプロシージャを作りたいです。 ちなみにこれはとある課題として作成しているので、テキストボックスは全て非連結、ボタンのマクロは無し、プロパティからのソース設定も不可です。 テキストボックスに入力されたSEQをどうレコードセットに結びつけるのか。 引っ張ってきたレコードセットを、それぞれのテキストボックスにどうやって連携させるのか。 等がわかりません。 稚拙な質問ですが困っております。 どなたか具体的なコードとともにお教え願えないでしょうか。。

みんなの回答

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.2

こんにちは ボタンを右クリックでイベントのビルドでコードビルダー表示して、 Private Sub コマンド6_Click()   Dim DB As Database   Dim RS As Recordset     If IsNull(Me.テキスト0) Then     MsgBox "SEQ入力なし"     Exit Sub   End If     Set DB = CurrentDb   Set RS = DB.OpenRecordset("レコード検索テスト", dbOpenSnapshot)     RS.FindFirst "SEQ=" & Me.テキスト0     If RS.NoMatch = False Then     Me.テキスト2 = RS!項目a     Me.テキスト4 = RS!項目b     Me.テキスト0.SetFocus   Else     MsgBox "データ無し"   End If     RS.Close   Set RS = Nothing End Sub こんな感じですか? ボタン名とかテキストボックス名は適宜変更して下さい。

回答No.1

【質問の主旨が今一つ】 >SEQ、項目a,項目bというラベルを張ったテキストボックスがそれぞれひとつずつ、テキストボックス計三つのフォームがあります。  ↓ >SEQ、項目a,項目bのテキストボックスを持つフォームがあります。 ということなのかな?? >テキストボックスに入力されたSEQをどうレコードセットに結びつけるのか。  ↓ >SEQに対応するレコードの情報をテキストボックスに表示するには? ということなのかな?? 結局は、SEQの更新イベントに書くコードに関して質問しているのかな?だとすれば、かなり初歩的なそれ。だとすると、課題は、DLookup()などを利用しないでADOコードにて実現せよということなのだろうか?

関連するQ&A

  • AccessVBAでサポートお願いします。

    こんばんわ。AccessVBA初心者です。 下記のような処理を作りたいのですがわかりません・・。 もしお分かりになる方がいらっしゃいましたらサポートをお願い致します。 「テーブルA」「テーブルB」があり、それぞれのテーブルに連結した「フォームA」「フォームB」(両方とも帳票フォーム)があります。 テーブルには幾つかのフィールドがあり、その中にチェックボックスに連結したフィールドがあります。 まず、「フォームA」を開き、任意のレコードのチェックボックスにチェックを入れ(複数選択あり)、あるコマンドボタンをクリックするとチェックの入ったレコードのみを「テーブルA」から「テーブルB」へ移動させる処理を作成したいのですがどうもうまく作れません。 「テーブルB」へ移動後は「テーブルA」から該当のレコードが削除されている必要があります。 また、テーブルBには随時データが蓄積されていく必要があります。 どなたかお分かりになる方がいらっしゃいましたらご教授願います。 その際、VBAのソースを記述頂けますと助かります。 どうぞ宜しくお願い致します。

  • なければInsert、あればUpdate …ってできますか?

    MySQL 3.23.49-nt を使用中です。 とあるテーブルを、3つのサーバで使用中で、このテーブルを一つのサーバで更新して、他のサーバへ レコードをコピーしたいのですが、「他のサーバ」に既に同じキーの レコードが存在する可能性があります。 こちらで更新したいサーバ(A)のテーブルの内容をこんな感じだとします。 キー番号 | SEQ | 項目A | 項目B ---------+-----+-------+------ 1001 | 1 | 11-AA | 11-BB 1001 | 2 | 12-AA | 12-BB 1002 | 1 | 21-AA | 21-BB 1002 | 2 | 22-AA | そして、コピー先のサーバ(B)のテーブルの内容をこんな感じだとします。 キー番号 | SEQ | 項目A | 項目B ---------+-----+-------+------ 1001 | 1 | 11-BA | 11-XX 1002 | 1 | 21-BA | 21-YY 1002 | 2 | | 22-YY 「キー番号」「SEQ」「項目A」だけを、サーバAと同一にしたいと考えています。 キー番号とSEQが同一のレコードが存在する場合、サーバBの「項目B」は変えたく ありません。 すなわち、サーバ(B)が キー番号 | SEQ | 項目A | 項目B ---------+-----+-------+------ 1001 | 1 | 11-AA | 11-XX ---- 項目Aを更新 1001 | 2 | 12-AA | ---- レコードをINSERT 1002 | 1 | 21-AA | 21-YY ---- 項目Aを更新 1002 | 2 | 22-AA | 22-YY ---- 項目Aを更新 のようになって欲しいのです。 そこで、 「キー番号="1001"、SEQ = "1" のレコードがあれば、そのレコードの項目Aに'11-AA'をセットしてUPDATE。 レコードがなければ、キー番号="1001"、SEQ = "1"、項目A='11-AA'のレコードをINSERT。」 というようなMySQLの命令文(?)を書けないかなぁ?と、一生懸命参考書をひっくり返してもがいています。 できるようなできないような... 無理でしょうか?

    • ベストアンサー
    • MySQL
  • 連結フォームでの非連結

    こんにちは。 Access2002を使用しています。 「T_実績」テーブルには、顧客名、売上金額、販売者の項目があります。 「T_実績」テーブルに入力するために、連結フォームの「F_実績入力」フォーム を作成しました。入力の際は、顧客名と売上金額を入力し、販売者は フォームヘッダーのテキストボックスに入力した販売者を、レコード移動時に 自動更新したいようにしたいのですが、どのようにすればよいでしょうか? よろしくご教授くださいますようお願いいたします。

  • ACCESS フォームの詳細セクションのコントロールを全て非連結で作ろ

    ACCESS フォームの詳細セクションのコントロールを全て非連結で作ろうとしています。 レコードセットに連結していれば、詳細セクションにはレコード件数分の行が自動的に生成され、データのセットも勝手に行われますが、非連結なので、自分で(VBAで)制御する方法を知りたいです。 行にはテキストボックスだけでなくコマンドボタンやチェックボックスも配置します。 ・VBAで行を作ってそこのテキストボックスに任意の値をセットする方法 ・VBAで行にあるオブジェクトの値等を参照する方法 以上を教えていただけませんでしょうか? (そのようなサイトがあれば、それも教えていただきたいです)

  • 「非連結」=「フォームのレコードソースがカラ」

    アクセスについて質問です。 フォームを新規で作成し、テキストボックスを設置すると 「非連結」となりますが、 これは、「フォームのレコードソースがカラ」 と言う意思表示なのでしょうか?

  • 非連結のテキストボックスにフォーム値を元に表示する

    ACCESS2013です。 単体テーブル:受注 でフォームを作成しております。 最初は、3つ以上のテーブルをクエリーで作成して、それでフォームを作成しようと考えて いましたが、3つ以上のテーブルクエリーでフォームを作成すると、項目の編集ができません。 ダイナセットから矛盾ありの設定にすると、編集ができるようになりますが、各フィールド間 の連携が無くなってしまいます。 受注画面に店コードを入力すると、その店の該当エリア名を非連結のテキストボックスに 表示したいです。 マスタテーブルとして、  M_店(店コード、店名、エリアコード)  M_エリア(エリアコード、エリア名)   受注テーブル(受注No.、店コード・・・・) フォーム上の非連結テキストボックスのコントロールソースに設定できれば一番いいのですが。 どうぞ、よろしくお願いします。

  • フォーム上のテキストボックスにテーブル値を改行代入

    Access2013を使用しています。 フォーム上のテキストボックスにテーブルAの項目Bを複数レコード分を改行しながら 代入したいのです。 Set CN = CurrentProject.Connection Set rs = New ADODB.Recordset rs.Open "テーブルA", CN, adOpenStatic, adLockOptimistic Do Until rs.EOF   If rs!項目B <> "" Then    Me!テキストボックス = rs!項目B & vbLf   End If   rs.MoveNext Loop 上記ですと、当たり前ですが最終レコードの項目Bのみがセットされます。 検索ワードがよくないのか、同様の問合せを見つけることができません。 よろしくお願いします。

  • ACCESSのフォームで次のレコードに移動しない方法を教えてください

    Windows2000&ACCESS2000の環境です。 テーブルから連結したフォームに、例えばA,B,C,Dと4つのテキストボックスがあります。 A,B,C,Dと入力していくと、最後のDの入力を入力した後「Enter」キーを押すと次のレコードのA,B,C,Dが表示されます。(次のレコードの入力になってしまいます) タブオーダー最後のDの入力のあとの「Enter」キーを押しても現在のレコードのAに戻る設定(やり方)を教えていただけると幸いです。

  • Access フォーム上でのテキストボックスとテーブルの連結

    フォームヴィザードからフォームを作成すると、 テキストボックスと指定したテーブルを連結させることができるのですが、デザインビューでそれをするときに、テキストボックスのプロパティのコントロールソースにテーブル名を入れれば連結できるのかと思いきや、うまく表示されません。どこを設定すればテキストボックスとテーブルを連結できるのでしょうか?

  • Access非連結フォームから複数レコード挿入

    お世話になっております。 Access2003を使用しております。 <テーブル ”商品マスターT”> code   shouhin =========================== 1    チョコ 2    ラムネ 3    ジュース 4    団子 5    ガム <フォーム "商品入力フォーム"(非連結・単票フォーム)>      商品コード       商品名 1行目 [非連結(テキスト0)] [=DLookUp("shouhin","商品マスターT","code=" & [テキスト0])] 2行目 [非連結(テキスト1)] [=DLookUp("shouhin","商品マスターT","code=" & [テキスト1])] 3行目 [非連結(テキスト2)] [=DLookUp("shouhin","商品マスターT","code=" & [テキスト2])] 4行目 [非連結(テキスト3)] [=DLookUp("shouhin","商品マスターT","code=" & [テキスト3])] 5行目 [非連結(テキスト4)] [=DLookUp("shouhin","商品マスターT","code=" & [テキスト4])]  商品コードを入力すると商品マスターTより商品名を引っ張ってきます。 <テーブル "履歴T"> code2   shouhin2 ==============================  データは空です 上記のものがあるときに商品入力フォームで入力した行数分だけ テーブル履歴Tにレコード追加したいのですが・・・ そういったことは可能でしょうか?非連結フォームから複数レコード追加は難しいでしょうか? 以上宜しくお願いします。

専門家に質問してみよう