0

現在、Vb6 をフロント エンドとして使用し、Oracle 9i をアプリケーションのバックエンドとして使用するプロジェクトに取り組んでいます。Oracle のテーブルからデータを取得し、VB6 形式で表示する必要があります。これにはレコードセットを使用していますが、問題のテーブルに有効なレコードが存在する場合でも、何らかの理由でレコードが含まれていません。誰が何が悪いのか教えてもらえますか? どんな助けでも大歓迎です。私のコードは次のとおりです-

Private Sub Command1_Click()
Dim sql As String
Set rs = New ADODB.Recordset
sql = "select test23.phoname from test23 where test23.ops='" + Text1.Text + "'"
rs.Open sql, con, adOpenStatic, adLockOptimistic
If rs.EOF = False Then
    Form7.Show
    Form7.Label2.Caption = rs.Fields("phoname")
End If
End Sub

レコードセットは常に空のように見えるため、if ステートメントは実行されません。EOF 条件を削除すると、実行時エラー 3021 が発生します。SQL クエリに何か問題がありますか? テーブル test23 は、属性 serialno、phoname、および ops を持つ Oracle データベースに既に存在します。ありがとう - ロン

4

2 に答える 2

1

私は数年前にこれを自分で苦労しました。問題はいくつかの領域にある可能性があります。具体的には、接続、Oracle ドライバー、Oracle ホーム、またはクエリ自体です。

TOAD の無料版をダウンロードすることを強くお勧めします。これにより、接続 (ODBC を想定しています) の両方をテストし、TOAD を使用してクエリを手動で実行できます。

例外はありますか?

これからコード/接続/クエリを修正できることを願っています。

幸運を

于 2012-09-13T18:34:34.070 に答える
0

また、adoOpenStatic と adoLockOptimistic は相互に排他的なプロパティ値であることも指摘しておきます。楽観的ロックは更新可能なレコードセットにのみ適用され、静的レコードセットは更新できないためです (adoLockBatchOptimistic を使用したバッチ モードを除く)。これは、Oracle OLEDB プロバイダーを何らかの形で混乱させる可能性があります。

于 2012-09-14T18:41:32.937 に答える