dポイントプレゼントキャンペーン実施中!

アクセスで住所録を作っています。
住所を編集するために、苗字を入力して検索できるようにしたのです。
検索したい名前を入力出来るようにテキストボックスを作り、『コントロールの移動→レコードの検索』のマクロを入れました。
作ったときはちゃんと検索してくれるのです。
でも、一度そのフォームを閉じ、また開くとそこが入力できない状態のなっているのです。
でも『IME入力モード』などを変更すると、再び入力できるようになるのです。
なぜでしょうか?
よろしくお願いします。

A 回答 (5件)

>設定は、オブジェクトのマクロから設定は出来ないのでしょうか?


すいません。マクロほとんど使わないので不明です。
クリアするのはボタンのイベントにあるクリック時にコピーすれば出来ます。
フォームをデザインビューで開きツールからボタンを選んでフォーム上に配置するとウィザードが開きます。
フォームを閉じるボタンを作ります。
そのボタンのイベントのクリック時にイベントプロシージャが出来ていますので右側にある...のボタンをクリックするとVBが開きフォームを閉じる記述にカーソルがあります。下記の記述になっているはずです。
Private Sub ボタン名_Click()
On Error GoTo Err_ボタン名_Click

DoCmd.Close

Exit_ボタン名_Click:
Exit Sub
Err_ボタン名_Click:
MsgBox Err.Description
Resume Exit_ボタン名_Click
End Sub
この記述のDoCmd.Closeの前に下記を追加(コピーで可能)します。
DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70

Private Sub ボタン名_Click()
On Error GoTo Err_ボタン名_Click
DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70 '←ここに

DoCmd.Close

Exit_ボタン名_Click:
Exit Sub
Err_ボタン名_Click:
MsgBox Err.Description
Resume Exit_ボタン名_Click
End Sub
これでVBを閉じてフォームを保存すれば出来ます。

>そのフォームを閉じ住所の検索フォームをもう一度開きたかったのです
上記の記述に
stDocName = "検索フォーム名"
DoCmd.OpenForm stDocName, , , stLinkCriteria
を追加します。
Private Sub ボタン名_Click()
On Error GoTo Err_ボタン名_Click
stDocName = "検索フォーム名"  '←ここに
DoCmd.OpenForm stDocName, , , stLinkCriteria
DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70

DoCmd.Close

Exit_ボタン名_Click:
Exit Sub
Err_ボタン名_Click:
MsgBox Err.Description
Resume Exit_ボタン名_Click
End Sub
上記をボタンのイベントのクリック時にコピーしてください。
    • good
    • 0
この回答へのお礼

有難うございました。
とても丁寧に教えていただき、とても助かりました。
無事、出来ました。

お礼日時:2005/09/21 21:54

>検索フォームに戻ろうとしたら


戻るとはフォームを閉じるのでしょうか?
フォームをどのように戻る?閉じている?のか不明ですが・・
閉じるボタンを作ってエラーなく閉じれないでしょうか?
閉じれない場合フォーム上で代入されたレコードをクリアさせてから閉じればエラーは出ないはずです。
例えばフォーム上をクリアするボタンを作りクリックした後閉じるようにすればエラーはでないと思います。

クリアするボタンをCmd1として
Private Sub Cmd1_Click()
On Error GoTo Err_Cmd1_Click

DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70

Exit_Cmd1_Click:
Exit Sub
Err_Cmd1_Click:
MsgBox Err.Description
Resume Exit_Cmd1_Click
End Sub
もしくはクリアしてフォームを閉じるボタンを作る
Private Sub Cmd1_Click()
On Error GoTo Err_Cmd1_Click

DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
DoCmd.Close
Exit_Cmd1_Click:
Exit Sub
Err_Cmd1_Click:
MsgBox Err.Description
Resume Exit_Cmd1_Click
End Sub
この記述をボタンのクリック時のイベントにコピーすればいけると思います。

できれば質問は1つにしてください。(^_^;

この回答への補足

すみません。
色々触っていたら、分かった気がします。
何とか閉じれたのですが、そのフォームを閉じ、住所の検索フォームをもう一度開きたかったのです。
すみませんが、その方法だけ教えていただけますか?

補足日時:2005/09/20 20:46
    • good
    • 0
この回答へのお礼

ありがとうございます。

>できれば質問は1つにしてください。(^_^;
そうですよね。本当にすみません。

本当に申し訳ないのですが、この質問だけ教えていただけますか?

>戻るとはフォームを閉じるのでしょうか?
そうです。閉じようとするとエラーが発生します。
『保存できません』と。
フォーム上で代入されたレコードを全てクリアさせてから閉じたいのですが、それが分からなくて。
上記の記述どこに入力したらいいのでしょうか?
すみません、初心者なもので、そう言う言語??使ったこと無くて。
ページやモジュールとかは使い方知りません。
上記の設定は、オブジェクトのマクロから設定は出来ないのでしょうか?

何度も何度も申し訳ありません。

お礼日時:2005/09/20 20:25

>検索したい名前を入れた後、その名前の人が数人・・


>戻れるようなマクロの中のアクションは何かあるの・・
マクロでもレコードの移動で前のレコードを指定できます。
しかし色々マクロを実装してレコードを前後していくより抽出フォームのテキストボックスを抽出条件にし検索するクエリを作りマクロで開きそのクエリを元にした一覧フォームで表示する方が検索されたレコードを全て見れるし、そのレコードをクリックすると住所等の詳細が見れるフォームを表示するように作った方がシステムっぽいと思います。まァこれはその人個人の好みですが・・。
もしそのようにしてみようと思ったら試してみてください。一覧フォームは帳票フォームで作ればフォームを開くボタンの作成など簡単です。
    • good
    • 0
この回答へのお礼

有難うございます。
レコードの移動で出来ました。
本当に助かりました。
帳票フォームで以前作ったのですが、色々考えた結果今のやり方のほうが私自身やりやすいと思い作っています。

すみませんが、もう一つ聞いてもいいですか?
住所を検索してその人について詳しく書くフォーム(詳細フォーム)を別に作っています。
値の代入で、住所のNo.をその詳細フォームの住所No.に代入する形でマクロを組んでいます。
ちゃんと代入してくれるのですが、「間違えた!」と思い、検索フォームに戻ろうとしたら
『フィールド’種類ID’キーが一致しているレコードをテーブルT_種類’で探すことが出来ません』
と出てきます。多分これは何も入力してなくて、Nullを受け入れてもらえないのかと思います。
出来たらこのエラーを出てこないようにして戻りたいのですがどうしたらいいのでしょうか?
よろしくお願いします。

お礼日時:2005/09/17 23:42

マクロで検索フォームを開くとき


Function マクロ1()
On Error GoTo マクロ1_Err

DoCmd.OpenForm "検索フォーム名", acNormal, "", "", , acNormal

マクロ1_Exit:
Exit Function
マクロ1_Err:
MsgBox Error$
Resume マクロ1_Exit
End Function
上記で単純に検索フォームを開きます。

メインフォームから検索フォームを開くマクロを確認してみてください。どの様に開いているのか。
    • good
    • 0
この回答へのお礼

有難うございます。
出来ました。
メインフォームから検索フォームを開くときのマクロのデーターモードが『読み取り専用』になっていました。
それで文字がメインフォームか検索フォームを開いたとき出来なかった様です。

後、もう一つお聞きしたい事があります。
検索したい名前を入れた後、その名前の人が数人いたとします。
苗字だけで検索し、次を検索すると出てくるように、マクロのアクションで『次を検索』を選んでしますが、それだと次へは検索できますが、行き過ぎたと思っても戻ることが出来ません。
戻れるようなマクロの中のアクションは何かあるのでしょうか?

お礼日時:2005/09/17 18:08

フォームをどのように開いているのか不明ですが・・。



そのテキストボックスのプロパティを開らいた時、データにある使用可能は「はい」になっていますか?「いいえ」になっていますか?
フォームのコントロールの使用できるかできないかの制御の設定はそこなんですが。

この回答への補足

有難うございます。
使用可能は「はい」になっているのですが・・・。

>フォームをどのように開いているのか不明ですが・・。

そう言えば、直接住所登録のフォームを開いたときは入力出来るみたいです。
でもメインフォームから住所登録のフォームが開くようにし、開くと入力できないことが分かりました。
メインフォームに組み込んだマクロが何か影響しているのでしょうか?

補足日時:2005/09/17 11:59
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!