アプリ版:「スタンプのみでお礼する」機能のリリースについて

テーブル名=MDGTBL
フィールド(CODE,MSGTEXT,BUTTON,ICON,POSITION)
を作り、ここのMSGTEXTフィールドにメッセージを書いています!
それぞれメッセージが必要なときはこのテーブルを参照してメッセージを出したいのですがどうすればいいのですか?
例えば、
検索したときに該当するレコードがない場合、
CODE:1
MSGTEXT:該当するレコードがありません!
というメッセージを出したいのです!

普通にコードをこう書けばいいのですが、
Msgbox "該当するレコードがありません!"
としたいのではありません!

どうかお願いします!

A 回答 (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 は、私が間違ってました。。。
 特にエラーにはなりませんが、気持ち悪いので(^^;

前提条件によって微妙に変わってきますが、
そんなに大変ではありませんよー。

頑張って下さい。(^^)/
    • good
    • 0
この回答へのお礼

本当にわかりやすく書いていただきありがとうございます!
また、質問した際にはよろしくお願いします!
これからはいっぱい質問も出てくると思いますので…

お礼日時:2002/09/05 15:48

No.5の方の回答で


StrSQL = "SELECT * FROM MDGTBL WHERE (CODE='" & code & "')"

StrSQL = "SELECT * FROM MDGTBL WHERE (CODE=" & CODE & ")"
としてできませんか?
(要は’’を省くだけですけど)
    • good
    • 0

色々方法があるかと思います。


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:テキスト型
です!
このテーブルは変えてはいけないみたいなのです!

そこでゆわれた通りにしてみると
抽出条件でデータ型が一致しませんでしたとエラーが出るのですが…初心者なもんでどこをかえるとうまくいくのかわかりません!色々試したのですがわかりません…

私の場合このコードのどこを変更するとうまくいくのでしょうか?勝手なことばかりゆってすみません!

どうか教えのほどよろしくお願いします!!

補足日時:2002/09/05 14:01
    • good
    • 0

再び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


ちなみにエラートラップはしてないので、自分で付けて下さい。
    • good
    • 0
この回答へのお礼

maruruさんありがとうございました!
このやり方でうまくいけました!
しかしこれは課題でしていろいろ条件がありまして…
どうしてもSQL文を使ってコードを書かなければなりません!
どうしたらいいのですか?
本当にお世話かけてすみません!

お礼日時:2002/09/05 14:13

>検索したときに該当するレコードがない場合、


>CODE:1
>MSGTEXT:該当するレコードがありません!
>というメッセージを出したいのです!
>
>普通にコードをこう書けばいいのですが、
>Msgbox "該当するレコードがありません!"

やりたいことは、メッセージボックスにCODEとMSGTEXTを
つなげて改行して表示したいということですか?
それならば、アクセスのマクロで下記のように記述すれ
ばできますよ。

MsgBox "CODE:" & rec.Fields("CODE") & vbCrLf & "MSGTEXT:" & rec.Fields("MSGTEXT")
    • good
    • 0

こんにちは。

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件以上あるためそれぞれにあてはまるエラーをだしたいのですが…

補足日時:2002/09/05 11:59
    • good
    • 0

検索用のテキストボックスを検索用CODEと仮定して、


検索したときに該当するレコードがない場合のメッセージで、
Msgbox "CODE:" & Me.検索用CODE & " に該当するレコードがありません!"
とするのはいかがですか?
    • good
    • 0

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

関連するカテゴリからQ&Aを探す