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

Access2000を使用しています。
下記のコードのとおり
入力用テキストボックスに座席コードを入力して
seat テーブルから座席コードと入力したものからレコードを探して表示できているんですが、
レコードセットで抽出した座席番号が「P」のものだけ
チェックボックス(pri.value=true)
にしたいのですが動きませんどのようなコードを書けばいいんでしょうか?


Dim rst As New ADODB.Recordset

Set rst = New ADODB.Recordset
rst.Open "select * from seat where 座席コード='" & Me.入力用テキストボックス & "'", _
CurrentProject.Connection, adOpenKeyset, adLockOptimistic

If rst.EOF = True Then
MsgBox ("座席情報はありません。")
Me.入力用テキストボックス = ""

End If



If rst.EOF = False Then


Me.座席コード = rst![座席コード]
Me.座席番号 = rst![座席番号]
Me.入力用テキストボックス = ""
Me.受付時間 = Now()
End If

If Left(rst![座席番号], 1) = "P" Then
Me.pri.Value = True

A 回答 (6件)

>コードは全角でPと打っているのに半角になってしまっています



半角の"P"という変数があると、自動的に変換されてしまうかも知れません。
どうしてもだめなら、関数を使って、

If Left(rst![座席番号], 1) = Chr(-32145) Then

とするとかですね。
    • good
    • 0
この回答へのお礼

ありがとうございました。
完璧に動きました。
関数でやってみたら完璧でした。
大変感謝いたします。
どうもありがとうございました。

お礼日時:2002/11/27 16:36

ちなみに LeftB は 1バイト(半角一文字)のみ取り出すということです。



なので 全角ならば Left でいいです。
    • good
    • 0
この回答へのお礼

やっぱりtakntさんのにらんだとおり全角で認識していなかったみたいです。
どうもありがとうございました

お礼日時:2002/11/27 16:35

No.3の人の言う通り、チェックボックスのON/OFFが出来るかどうかですね。


チェックボックスの名前(pri)の記述が違っているとか。
この場合は、チェックボックスのプロパティの名前をコピーして持ってくるのが確実ですが。

あと、これもNo.3の人の言う通り、比較するのは"P"ですが、全/半角や大/小文字は間違っているとか。
    • good
    • 0

Me.pri.Value = True


これだけ記述して チェックボックスが ONにならなかったら、それが
原因です。

チェックボックスが オンになるのでしたら、
IF文が おかしいのです。

そういうふうに問題を切り分けしていかないと
原因が つかめませんよ。

あと "P"は 半角のPで いいんですよね?

この回答への補足

ありがとうございます
補足ですが、最初の文字がPであって具体的には
A-1とかP-1とかありP-*のみチェックボックスをオンにしたいわけですが、検索するテーブルには全角のP-1になっています。
ところが、コードは全角でPと打っているのに半角になってしまっています。
どうすれば全角のPと打てますか?

補足日時:2002/11/27 15:38
    • good
    • 0

こんにちは。

maruru01です。

質問のコードだけでは何故動かないかわかりません。
End Ifやレコードセットの破棄とかは、省略してあるだけで本当は記述してあるんですよね。
あと、エラーではないんですよね。
とりあえず、逐次実行で1行ずつ確認してみて下さい。
そして、例えば、最後のIf文の中(True句)を実行しているかどうかを確認して下さい。
そのIf文の条件の
Left(rst![座席番号], 1)はちゃんと"P"を返しているのか。
If文の直前に、
MsgBox Left(rst![座席番号], 1)
とすればわかります。
いろいろと確かめてみて下さい。

ところで、そのコードだと、rstがない場合(If rst.EOF = True Thenのところ)は、Exit Subとかで抜けないと、そのまま最後のIf文(Left~のところ)も実行してしまいますが、それは大丈夫ですか。

この回答への補足

ありがとうございます。
エラーでもなくチェックボックスがオンにならない以外は正常に動いています。
教えていただいたメッセージボックスも入れてみたら
ちゃんと表示されました。
今のコードすべて下記のとおりです。


Dim rst As New ADODB.Recordset

Set rst = New ADODB.Recordset
rst.Open "select * from seat where 座席コード='" & Me.入力用テキストボックス & "'", _
CurrentProject.Connection, adOpenKeyset, adLockOptimistic

If rst.EOF = True Then
MsgBox ("座席情報はありません。")
Me.入力用テキストボックス = ""

End If

If rst.EOF = False Then


Me.座席コード = rst![座席コード]
Me.座席番号 = rst![座席番号]
Me.入力用テキストボックス = ""
Me.受付時間 = Now()
End If
MsgBox Left(rst![座席番号], 4)
If LeftB(rst![座席番号], 1) = "P" Then
Me.pri.Value = True


End If

rst.Close
Set rst = Nothing



入力用テキストボックス.SetFocus

End Sub

補足日時:2002/11/27 14:24
    • good
    • 0

If rst![座席番号] = "P" Then


Me.pri.Value = True

では ダメ?

もしくは
If LeftB(rst![座席番号], 1) = "P" Then
Me.pri.Value = True
    • good
    • 0

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