はじめてaccess2000でファイルを作成する初心者です。
名前(ID)を入力すると、
その方の情報(メインフォーム)と、
情報の変更履歴(サブフォーム)が表示される、
フォームを作成しています。
最初、別のフォームにテキストボックスを作成し、
そこにIDを入力後、ボタンをクリックすると、
クエリ(テーブル)に存在するIDは表示されますが、
存在しない場合は、「存在するIDはありません」
というメッセージを表示し、
メイン・サブフォームの画面には移動しないように
したいのです。
※現在は空のメイン・サブフォームが表示されます。
ちなみに、IDに重複はありませんので、
情報(メインフォーム)は1件しか表示しませんが、
変更履歴(サブフォーム)はIDによって
複数のレコードが存在する場合があります。
説明がわかりにくくて申し訳ありませんが、
回答をお願いいたします。
accessに関する知識がほとんどありませんので、
簡単にできる方法を教えていただけるとうれしいです。
No.5ベストアンサー
- 回答日時:
tab1:
ID______fld_1
A001__AAAA
A002__BBBB
tab2:
ID______tab1_ID____fld_1
1_______A001_______1111
2_______A001_______2222
フォーム:
ID:______[A001________]
fld_1:___[AAAA______]
tab2:
___ID__tb1_ID_fld_1
[1____][A001][1111______]
[2____][A001][2222______]
tab1、tab2のテーブルからフォームを生成するとメインとサブフォームが生成されます。
あるフォームに [テキスト_ID]を配置し、それをテストして合致した場合にメイン・サブを開く。
そのサンプルコードは次のようです。
Private Sub コマンド0_Click()
Dim strID As String
If Len(Me.テキスト_ID & "") Then
strID = Me.テキスト_ID
If Nz(DLookup("ID", "tab1", "ID='" & strID & "'")) = "" Then
MsgBox "該当する[ID]はありません!", vbExclamation, " 警告"
Else
DoCmd.OpenForm "tab1", , , "ID='" & strID & "'"
End If
Else
MsgBox "先に、[ID]欄の入力を完了して下さい!", vbInformation, " お知らせ"
End If
End Sub
Private Sub コマンド0_Click()
Dim strID As String
If Len(Me.テキスト_ID & "") Then
strID = Me.テキスト_ID
If DCount("*", "tab1", "ID='" & strID & "'") = 0 Then
MsgBox "該当する[ID]はありません!", vbExclamation, " 警告"
Else
DoCmd.OpenForm "tab1", , , "ID='" & strID & "'"
End If
Else
MsgBox "先に、[ID]欄の入力を完了して下さい!", vbInformation, " お知らせ"
End If
End Sub
先ずは、このように至極簡単なテーブル構造とデータでテストされたら宜しいと思います。
何度もアドバイスありがとうございます。
見よう見まねですが、やっとできました!
期日がせまっておりましたので、とても助かりました。
中身の意味はまだまだ理解できないところがありますが、
次回は、少しでもわかるように勉強したいと思います。
No.4
- 回答日時:
tab1:
ID__fld_1
1___aaa
2___bbb
Private Sub コマンド_IDのチェック_Click()
Dim lngID As Long
lngID = Nz(Me.テキスト_ID, 0)
If lngID > 0 Then
lngID = Nz(DLookup("ID", "tab1", "ID=" & lngID), 0)
If lngID = 0 Then
MsgBox "該当する[ID]はありません!", vbExclamation, " 警告"
End If
Else
MsgBox "先に、[ID]欄の入力を完了して下さい!", vbInformation, " お知らせ"
End If
End Sub
とあるフォームに[テキスト_ID]を配置し[コマンド_IDのチェック]をクリックして[ID]がテーブルにあるかないかチェック。
課題1、変数宣言。
課題2、変数へのテキストボックスからの代入するコード。
課題3、If Then Else 文を使った条件分岐。
課題4、DLookup関数を使って既存[ID]を取得するコード。
課題5、MsgBox 関数を使っての告知要領。
ここでは、[ID]の型を長整数と仮定しています。
仮に、[ID]の型がテキスト型であれば、課題1、2、3、4に相当するコードの修正が必要です。
先ずは、質問をこの範囲に限定することですね。
そして、一歩、一歩です。
ご回答ありがとうございます。
IDはテキスト型です。
Dim lngID As Longの部分を
どのように変更すればよいのでしょうか。
私の知識が全くおいついていないようで
まだ、うまく動いてくれません。
せっかく回答いただいたのに、なんだか申し訳ないです。
No.3
- 回答日時:
>Excelもマクロまでの知識ぐらいしかありません。
ExcelのマクロはVBAですよ
>削除・追加をしないように設定したら、
どこでどのようにやっているのかの情報が何もないので回答できません
No.2
- 回答日時:
回答ではありませんが
「存在しないデータを入力した時メッセージを表示」は、私ならば基本的にやりません。不親切だからです。「有るデータから選ばせる」ように作ります。対象が多過ぎるならば、絞り込んで選べるような補助手段と組み合わせます。
No.1
- 回答日時:
簡単に出来る方法はありません
VBAが必要です
Accessは初めてでも、Excel等でVBAの経験があるのならできますよ
この回答への補足
Excelもマクロまでの知識ぐらいしかありません。
VBAの経験がなければ、無理なのでしょうか。。。
あれから情報(メインフォーム)の追加は
別の画面(テーブル)でおこなうため、
削除・追加をしないように設定したら、
「指定したレコードに移動できません。
レコードセットの最後のレコードよりも後に
移動することはできません。」と表示され、
[OK]ボタンをクリックすると、
「アプリケーションの実行エラー
マクロ名:(例:検索)
条件:True
アクション名:レコードの移動
引数:-1,,新しいレコード,」
のメッセージ後、何も表示されなくなりました。
※IDが存在する場合は、問題なく表示されます。
この回避もVBAが必要なのでしょうか。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Access(アクセス) Accessの参照フィールドの列がずれてしまいます 1 2023/07/19 15:00
- gooメール クーポンコードは存在しません 1 2022/06/09 10:54
- Access(アクセス) Dlookupにエラーがでてしまう 1 2022/10/31 14:35
- Chrome(クローム) 入力フォームの履歴を消したい 2 2023/06/29 13:02
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- その他(データベース) accessでのフォームの連携について 2 2022/06/14 00:45
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessフォームのテキストボッ...
-
ACCESSのフォームからデータの...
-
アクセスのフォームのビューが...
-
選択したチェックボックスのみ...
-
アクセス 0以外をカウントす...
-
accessの自動更新処理をできな...
-
ADOでRecordsetオブジェクトを...
-
Accessのフォーム上にレコード...
-
Access2002 フォームを閉じるた...
-
Accessのフォームで作業領域を...
-
アクセスでテーブルの変更内容...
-
Access2000で起動時にフォーム...
-
帳票フォームに全レコードを表...
-
ACCESSでのテキストボックスの...
-
アクセスのフォームで連結コン...
-
ACCESSフォームでのレコード数...
-
アクセスのチェックボックス
-
テキストボックスの値をテーブ...
-
「メソッドまたはデータメンバ...
-
ACCESSの表形式で、レコードを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSのフォームからデータの...
-
Accessのフォーム上にレコード...
-
アクセスのフォームのビューが...
-
Accessフォームのテキストボッ...
-
ACCESSで入力フォームをHTMLフ...
-
選択したチェックボックスのみ...
-
アクセスでテーブルの変更内容...
-
「メソッドまたはデータメンバ...
-
Access 別フォームへの再クエ...
-
accessの自動更新処理をできな...
-
アクセスでの項目追加について...
-
Access2002 フォームを閉じるた...
-
入力途中の入力した値をすべて...
-
テキストボックス(アクセス)内...
-
Access フォーム上でコンボボッ...
-
Accessのハイパーリンクのパス...
-
アクセス 0以外をカウントす...
-
ACCESSで、フォームのレコード...
-
帳票フォームに全レコードを表...
-
ADOでRecordsetオブジェクトを...
おすすめ情報