[リストへもどる]
一括表示

投稿時間:2002/09/04(Wed) 10:29
投稿者名:コロン
Eメール:
URL :
タイトル:
データベースを照合してNAMEを表示させる方法。
[OSのVER]:WinXP
[VBのVER]:VB 6.0
物件NOを入力してエンターを押したときに、データベースと照らし合わせ、
一致していたら物件名をラベルに表示させるプログラムを作っりたいんです。

Private Sub txt物件NO_KeyDown(KeyCode As Integer, Shift As Integer)

If KeyCode = vbKeyReturn Then Exit Sub
Call check物件NO

End Sub

Private Function check物件NO() As Boolean

Dim SQL As String, RS As New ADODB.Recordset

SQL = "Select count (*) From KZBUKKEN"
SQL = SQL & " Where 物件番号=" & STR2Q(txt物件NO)
RS.Open SQL, cn, adOpenStatic, adLockReadOnly
If RS(0) = 0 Then
    check物件NO = False
    txt物件NO.SetFocus
    MsgBox "物件NOの入力が正しくありません。", vbCritical
    Exit Function
Else
    check物件NO = True
    lbl物件NO = GET物件名(RS("物件名"), RS("品種コード"))
End If


End Function

という風に組んでみたのですが、
”要求された名前、または序数に対応する項目がコレクションでみつかりません”
というエラーが出てしまいます。

どこが間違っているのか分かりません。
この組み方で合っているのかもよくわからない状態になってしまいました。

どなたか教えてください。

投稿時間:2002/09/04(Wed) 10:44
投稿者名:よねKEN
Eメール:
URL :http://www5b.biglobe.ne.jp/~yone-ken/
タイトル:
Re: データベースを照合してNAMEを表示させる方法。
>     lbl物件NO = GET物件名(RS("物件名"), RS("品種コード"))

件数取得のSQLしかなげていないので、"物件名"も"品種コード"もデータベースから
取ってきていませんよね?

だから、
> ”要求された名前、または序数に対応する項目がコレクションでみつかりません”
> というエラーが出てしまいます。

となっているかと思います。

> この組み方で合っているのかもよくわからない状態になってしまいました。

No.404の方法でいいのでは?
ただし、今回のSQL文のようにカウントを取るのではなく、
"物件名"や"品種コード"を取得するSQL文にしましょう。

投稿時間:2002/09/04(Wed) 10:49
投稿者名:コロン
Eメール:
URL :
タイトル:
Re^2: データベースを照合してNAMEを表示させる方法。
> No.404の方法でいいのでは?
> ただし、今回のSQL文のようにカウントを取るのではなく、
> "物件名"や"品種コード"を取得するSQL文にしましょう。

ありがとうございます。
1度書き換えをしますね!
出来たら報告いたします。

投稿時間:2002/09/04(Wed) 11:14
投稿者名:コロン
Eメール:
URL :
タイトル:
Re^2: データベースを照合してNAMEを表示させる方法。
↓のようにかいてみました。
入力された物件番号と品種コードがデータベースと一致しなければエラーが出て、
一致すればそれにともなった物件名がラベルに表示される。。。というようにしたいのです。

エラーは何も出ないのですが、物件名も表示されません。
どうしてなんでしょうか?

Private Function check物件NO() As Boolean

Dim SQL As String, RS As New ADODB.Recordset

SQL = "Select 物件番号, 品種コード From KZBUKKEN"
SQL = SQL & " Where 物件番号=" & Val(txt物件NO)
SQL = SQL & " And 品種コード=" & STR2Q(txt品種コード)
RS.Open SQL, cn, adOpenStatic, adLockReadOnly
If RS.EOF = False Then
    check物件NO = False
    txt物件NO.SetFocus
    MsgBox "物件NOの入力が正しくありません。", vbCritical
    Exit Function
Else
    While RS.EOF = False

   check物件NO = True
    
    lbl物件NO = GET物件名(RS("物件名"), RS("品種コード"))

    Wend
    RS.Close
    
End If

End Function

投稿時間:2002/09/04(Wed) 13:43
投稿者名:よねKEN
Eメール:
URL :
タイトル:
Re^3: データベースを照合してNAMEを表示させる方法。
> If RS.EOF = False Then
>     check物件NO = False
>     txt物件NO.SetFocus
>     MsgBox "物件NOの入力が正しくありません。", vbCritical
>     Exit Function
> Else

このElseはRS.EOF=Falseでないとき、つまり、RS.EOF=Trueのときのみ実行されるのですから、

>     While RS.EOF = False

このWhileの条件は絶対に成り立たないので、While〜Wend間が実行されることはありません。

>  
>    check物件NO = True
>    
>     lbl物件NO = GET物件名(RS("物件名"), RS("品種コード"))
>
>     Wend
>     RS.Close
>    
> End If

Whileの行とWendの行は不要では?

投稿時間:2002/09/04(Wed) 16:50
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: データベースを照合してNAMEを表示させる方法。
あちらの掲示板にも回答がありますので、お礼なり、返礼なりきちんと
しておいて下さい。(マルチポストはマナー違反となります)

投稿時間:2002/09/05(Thu) 10:29
投稿者名:コロン
Eメール:
URL :
タイトル:
Re^4: データベースを照合してNAMEを表示させる方法。
回答ありがとうございます。

すいません。マナー違反だったんですね!
以後気をつけます。

まだ解決はしていないのですが、(名前をGETしてくるところがうまくいかないので)
いろいろ調べつつ試行錯誤してみます。

レス、本当にありがとうございます!