テーブル名=MDGTBL
フィールド(CODE,MSGTEXT,BUTTON,ICON,POSITION)
を作り、ここのMSGTEXTフィールドにメッセージを書いています!
それぞれメッセージが必要なときはこのテーブルを参照してメッセージを出したいのですがどうすればいいのですか?
例えば、
検索したときに該当するレコードがない場合、
CODE:1
MSGTEXT:該当するレコードがありません!
というメッセージを出したいのです!
普通にコードをこう書けばいいのですが、
Msgbox "該当するレコードがありません!"
としたいのではありません!
どうかお願いします!
No.7ベストアンサー
- 回答日時:
>私のテーブルでは
>CODE:数値型
>MSGTEXT:テキスト型
>です!
>このテーブルは変えてはいけないみたいなのです!
では、No.6 の方のおっしゃる通り、
'を省いて、
StrSQL = "SELECT * FROM MDGTBL WHERE (CODE=" & code & ")"
として下さい。
あと、
Public Function sub_msg(code As String) as String
を
Public Function sub_msg(code As Integer) as Integer
に変更して下さい。
# ) as String は、私が間違ってました。。。
特にエラーにはなりませんが、気持ち悪いので(^^;
前提条件によって微妙に変わってきますが、
そんなに大変ではありませんよー。
頑張って下さい。(^^)/
本当にわかりやすく書いていただきありがとうございます!
また、質問した際にはよろしくお願いします!
これからはいっぱい質問も出てくると思いますので…
No.6
- 回答日時:
No.5の方の回答で
StrSQL = "SELECT * FROM MDGTBL WHERE (CODE='" & code & "')"
を
StrSQL = "SELECT * FROM MDGTBL WHERE (CODE=" & CODE & ")"
としてできませんか?
(要は’’を省くだけですけど)
No.5
- 回答日時:
色々方法があるかと思います。
ADOを使う方法で考えてみました。
以下の手順でやってみて下さい。(^^)
>テーブル名=MDGTBL
>フィールド(CODE,MSGTEXT,BUTTON,ICON,POSITION)
CODE MSGTEXTは文字型、
BUTTON ICON POSITION は数値型とします。
登録内容は以下とします。
CODE MSGTEXT BUTTON ICON POSITION
1 メッセージ1 0 16 0
2 メッセージ2 1 32 0
3 メッセージ3 2 48 256
4 メッセージ4 3 64 512
モジュールを新規作成します。
以下を書きます。
Public Function sub_msg(code As String) as string
Dim Conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim StrSQL As String
Dim MsgText As String
Set Conn = CurrentProject.Connection
StrSQL = "SELECT * FROM MDGTBL WHERE (CODE='" & code & "')"
rs.Open (StrSQL), Conn
MsgText = "CODE: " & code & Chr(13)
MsgText = MsgText & "MSGTEXT:" & rs!MsgText
sub_msg = MsgBox(MsgText, rs!Button + rs!ICON + rs!POSITION)
rs.Close
End Function
ここまで。
で、普通の関数のように使います。
Dim ret As Integer
ret = sub_msg("1")
という記述して実行すれば、
CODE が "1" のメッセージがでます。
CODE: 1
MSGTEXT: メッセージ1
試してみて下さい。
こんな風に書くと、どのボタンが押されたか判断できます。
ご参考まで。。
Sub test_msg()
Select Case sub_msg("1")
Case 1: MsgBox ("OK")
Case 2: MsgBox ("キャンセル")
Case 3: MsgBox ("中止")
Case 4: MsgBox ("再試行")
Case 5: MsgBox ("無視")
Case 6: MsgBox ("はい")
Case 7: MsgBox ("いいえ")
End Select
End Sub
ここまで。
ADODB.Connection が使えない(エラーになる)場合は、
Visual Basic Editorのメニューから「ツール」→「参照設定」を押してダイアログを表示させ、「Microsoft ActiveX Data Objects 2.1 Library」をチェックして「OK」を押します。
頑張って下さい。
この回答への補足
私のテーブルでは
CODE:数値型
MSGTEXT:テキスト型
です!
このテーブルは変えてはいけないみたいなのです!
そこでゆわれた通りにしてみると
抽出条件でデータ型が一致しませんでしたとエラーが出るのですが…初心者なもんでどこをかえるとうまくいくのかわかりません!色々試したのですがわかりません…
私の場合このコードのどこを変更するとうまくいくのでしょうか?勝手なことばかりゆってすみません!
どうか教えのほどよろしくお願いします!!
No.4
- 回答日時:
再びmaruru01です。
じゃあ、以下のような関数を標準モジュールにでも作成しておいて、
メッセージをだしたい場面で、CODE = xのメッセージを出したいなら
ret = myMsgBox(x)
と、呼ぶという方法はどうですか。
Public Function myMsgBox(code As Integer) As Long
Dim tempMsg As String
Dim tempButton As Integer
Dim tempIcon As Integer
tempMsg = DLookUp("MSGTEXT", "MDGTBL", "CODE = " & code)
tempButton = DLookUp("BUTTON", "MDGTBL", "CODE = " & code)
tempIcon = DLookUp("ICON", "MDGTBL", "CODE = " & code)
myMsgBox = MsgBox(tempMsg, tempButton + tempIcon)
End Function
ちなみにエラートラップはしてないので、自分で付けて下さい。
maruruさんありがとうございました!
このやり方でうまくいけました!
しかしこれは課題でしていろいろ条件がありまして…
どうしてもSQL文を使ってコードを書かなければなりません!
どうしたらいいのですか?
本当にお世話かけてすみません!
No.3
- 回答日時:
>検索したときに該当するレコードがない場合、
>CODE:1
>MSGTEXT:該当するレコードがありません!
>というメッセージを出したいのです!
>
>普通にコードをこう書けばいいのですが、
>Msgbox "該当するレコードがありません!"
やりたいことは、メッセージボックスにCODEとMSGTEXTを
つなげて改行して表示したいということですか?
それならば、アクセスのマクロで下記のように記述すれ
ばできますよ。
MsgBox "CODE:" & rec.Fields("CODE") & vbCrLf & "MSGTEXT:" & rec.Fields("MSGTEXT")
No.2
- 回答日時:
こんにちは。
maruru01です。いまいちよく分かりませんが、MsgBox関数の引数をいろいろな条件ごとに表(テーブル)にしてあるということでしょうか。
フィールド名が、引数の項目で。(つまりBUTTONやICONのフィールドは、数値が入っているということでしょうか。POSITIONは分かりませんが。)
で、ある場面(検索して該当レコードが無かった場合など)でCODE(例えば1)を指定して、そのCODEの内容(メッセージやBUTTONやICON)でMsgBox関数を表示したいということでしょうか。
一応そうだと仮定して書くと、
(検索して該当レコードがない)
tempCode = 1
tempMsg = DLookUp("MSGTEXT", "MDGTBL", "CODE = " & tempCode)
tempButton = DLookUp("BUTTON", "MDGTBL", "CODE = " & tempCode)
tempIcon = DLookUp("ICON", "MDGTBL", "CODE = " & tempCode)
ret = MsgBox(tempMsg, tempButton + tempIcon)
この回答への補足
仮定の通りであります!初心者なもので説明がうまくできませんでした…すみません!
SQL文の条件でCODE=1の場合、CODE=2の場合、…のようにレコードを抽出して、CODE=1の場合MSGTBLのCODE=1のエラーメッセージである”該当するレコードがありません!”を表示したいのです!
エラーメッセージが100件以上あるためそれぞれにあてはまるエラーをだしたいのですが…
No.1
- 回答日時:
検索用のテキストボックスを検索用CODEと仮定して、
検索したときに該当するレコードがない場合のメッセージで、
Msgbox "CODE:" & Me.検索用CODE & " に該当するレコードがありません!"
とするのはいかがですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- その他(データベース) IT用語について質問です。 以前ITパスポートの試験を受けた際にデータベースが何の集まりかについての 2 2022/12/10 12:29
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Access(アクセス) アクセス IDが空白の時、メッセージボックスがでるようにするには 1 2022/08/04 11:06
- Excel(エクセル) 指定文字列が該当するA列をアクティブセルにするには 3 2022/08/17 13:18
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データベースファイル(.db)を開...
-
Accessを開きなおすとテキスト...
-
エクセルのフィルタ抽出が固まる
-
警察はスマホに保存した動画や...
-
最新の日付とその金額をクエリ...
-
ACCESSのSQLで、NULLかNULLでな...
-
Excelフィルタ抽出で「検索して...
-
Accessのリンクテーブルについて
-
android版のMs accessはありま...
-
リスト形式の表とデータベース...
-
更新クエリをリンクデータベー...
-
googleフォームでインストール...
-
CSVファイルでテキストの改行の...
-
c言語の問題です。これを踏まえ...
-
20万行あるデータを動かしたい
-
accessでのフォームの連携について
-
カラム上の重複を削除するクエ...
-
sql update で 抽出条件データ...
-
Accessフォームで平均値の出し...
-
データベースとウェブ(WWW)の共...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データベースファイル(.db)を開...
-
警察はスマホに保存した動画や...
-
Accessを開きなおすとテキスト...
-
ACCESSのSQLで、NULLかNULLでな...
-
エクセルのフィルタ抽出が固まる
-
CSVファイルでテキストの改行の...
-
Accessフォームからパラメータ...
-
旧filemakerで和暦(令和など)...
-
ファイルが壊れて読み取れませ...
-
Accessのリンクテーブルについて
-
更新クエリをリンクデータベー...
-
リスト形式の表とデータベース...
-
縦書きテキストボックスの表示"...
-
Notion@リレーション値の取得...
-
汎用カード型のデータベースソ...
-
「1004:アプリケーション定義...
-
構文エラー:演算子がありませ...
-
c言語の問題です。これを踏まえ...
-
20万行あるデータを動かしたい
-
accessでの請求管理について
おすすめ情報