お世話になっております。
名前:ハリケンことパリケン
仕様:VB6.0 Access2003 ADO接続
質問:入力したTextとAccessのDBとの照合
内容:改めましてこんにちは。そこまで難しい事ではないと思うのですが、過去ログを探しても見つけられなかった為質問させて頂きます。
ログインFormで、TextオブジェクトにIDを入力し、IDテーブルの値と一致すると次のFormへ進むというものを作っております(Passwordも設定しますがそちらは過去レスでお勉強します)。
質問はどの様にAccessのIDテーブルの値とTextオブジェクトに入力した値との照合をしたら良いのかという事です。
参考になる過去ログがありましたらそちらを教えて頂けるだけでも結構です。
よろしくご指導ご鞭撻の程
接続はできているのでしょうか?
出来ているならば、SQLやFindメソッド等でTextに入力されたIDを
検索すれば可能かとおもいます:)
KGさんレス有り難うございます。
SQLとFindメソッドを使って試してみたのですが、うまくいきませんでした。
mySQL = "select IDNo from ID"
rs.Source = mySQL
rs.ActiveConnection = DataEnvironment.Connection1
rs.CursorType = adOpenStatic
rs.Open
rs.Find "IDNo = '" & txtID.Text & "'"
If rs.EOF Then
MSG = MsgBox("IDが正しくありません", vbExclamation)
Else
frmMSTS0010.Show
Unload Me
End If
何分ずぶの素人でして、宜しく御力沿いの程お願い仕ります。
>うまくいきませんでした。
どううまくいかなかったのかな?
find使うようり
mysql="select IDNo from ID where IDNo= '" & txtID.text & "'"
としたほうがいいような気がします。
medakaさん有り難うございます。
>mysql="select IDNo from ID where IDNo= '" & txtID.text & "'"
>としたほうがいいような気がします。
その場合こんな感じでしょうか?
Dim mySQL, MSG As String
mySQL = "select IDNo from ID where IDNo = '" & txtID.Text & "'"
If txtID.Text = mySQL Then
frmMSTS0010.Show
Unload Me
Else
MSG = MsgBox("IDが正しくありません")
End If
ちょとお粗末な内容ですよねぇ。
いくら試してもIDは正しくないというメッセージが出るばかりです。
もう少しだけお助け下さい。
>いくら試してもIDは正しくないというメッセージが出るばかりです。
エラーメッセージが出るならそれを正確に書き込んで下さい。ずばり
それが回答なんですが、質問者にとっては意味不明な単語でも、それが
原因を示しています。省略されると分かりません。
SQL文内で ID という名前が使われているのはテーブル名ですが
ID は予約語で、その名前でテーブルを使うのがまずい気がします。
とりあえず、
mySQL = "select IDNo from [ID]"
にしてみて下さい。それでもうまくいかないなら ID というテーブルが
無いのでは???
ちなみにmedakaさんの案はデータベース側で検索結果を絞り、
その結果を受け取る方法です。RecordCount が 0 とかで
判断して下さい。
あれ?
>いくら試してもIDは正しくないというメッセージが出るばかりです。
って
> MSG = MsgBox("IDが正しくありません")
の事か???…だとすると単純に検索文字が違ってるだけでは?
全角半角の違いやスペースで埋まってるとかは無い?
Dim mySQL, MSG As String
mySQL = "select IDNo from ID where IDNo = '" & txtID.Text & "'"
If txtID.Text = mySQL Then
frmMSTS0010.Show
Unload Me
Else
MSG = MsgBox("IDが正しくありません")
End If
いやそれだとレコードセットをopenしてないし・・・
ADO VB6とかで検索したらいろいろサンプル見つかると思う。
medakaさんの言うとおり
ADOの参照設定・・・プログラムではないです
ADO使うよの定義
ADOでMDBオープン
SQL文作成
mySQL = "select IDNo from ID where IDNo = '" & txtID.Text & "'"
SQL文実行
で、実行結果の確認
If txtID.Text = mySQL Then
↑これもmySQLの文字列とtxtID.textの文字列を比較しているだけなのでNG
の順番になります
よくわからない場合は、ここなど参考になるかもです。
「VBでデータベース」
http://homepage2.nifty.com/inform/vbdb/
皆様お忙しいところ見ず知らずの小生の為にお時間頂き感謝x2です。
質問の仕方が適切でなかったりとすみません。
皆様のアドバイスを参考に取り組んでみます。
また追ってご報告させて頂きます。
あ〜、感謝感謝!
追記ですがエラー時に表示される内容は、
実行エラー'3709'
この操作を実行する為に接続を使用できません。このコンテキストで閉じ
ているか或いは無効です。
というものです。
これにより何か一喝して頂ける方がおりましたら宜しくお願い致します。
参考までに
http://www.accessclub.jp/bbs6/0011/das2985.html
…軽くテストしてみましたが、質問以外のところで良くないコードかと思います。
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200510/05100026.txt
を見てたから、検索はできてるものと思って回答してたけど、
『入力したTextとAccessのDBとの照合』まで行ってませんよね?
>rs.Open
つまり Recordset の取得の部分でつまずいている筈です。
DataEnvironment を使用する必要があるのか?も疑問です。
KG さんや神州さんが貼られたリンク先を参考に
Dim Cn As ADODB.Connection
といったコネクションをコードで生成する形に変えることを
お勧めします。もしくは、DataEnvironment 内に取得したい
Recordset もデザインしておいて、ActiveConnection を
設定して検索するのではなく、直接 Recordset を取得する
とか…。
ヘルプだと初心者を意識してなのかウィザードを自慢したいのか
DataEnvironment を使う方法がメインで載ってますが、コード上で
オブジェクトを生成したほうが柔軟に対応できます。今回を期に
覚えてはいかがでしょう?設定する項目は DataEnvironment の
デザインと同じですから。
>実行エラー'3709'
>この操作を実行する為に接続を使用できません。このコンテキストで閉じ
>ているか或いは無効です。
おそらく ActiveConnection で閉じている接続を設定しているからでしょう。
DataEnvironment.Connection1.Open
と接続を開いた後に ActiveConnection に設定して下さい。もちろん
使用後は
DataEnvironment.Connection1.Close
として接続を閉じる事を忘れないようにして下さい。
ツイート | ![]() |