2017-06-10 2 views
0

DBFファイルが10kレコード以上で、レコードを検索する必要があります。Visual FoxProのSEEKコマンド検索)vb.net OleDbCommandを使用します。私はEXECSCRIPT()を使ってVFPコマンドを実行しようとしました。これは私のコードです:OLEDB VB.NETでEXECSCRIPT()コマンドを使用しているときに「変数」が見つかりません」

Using oleCon As OleDbConnection = New OleDbConnection("C:\Users\maymay\Documents\DBF File") 
     Try 
      oleCon.Open() 
      oleCom.Connection = oleCon 
      oleTrans = oleCon.BeginTransaction(IsolationLevel.ReadCommitted) 
      oleCom.Transaction = oleTrans 

      oleCom.CommandText = "EXECSCRIPT([USE 'C:\Users\maymay\Documents\DBF File\201-file.dbf' ALIAS AA])" 
      oleCom.ExecuteNonQuery() 

      oleCom.CommandText = "EXECSCRIPT([SELECT AA])" 
      oleCom.ExecuteNonQuery() 

      oleCom.CommandText = "EXECSCRIPT([SEEK('105345')])" 
      oleCom.ExecuteNonQuery() 

      oleTrans.Commit() 

     Catch ex As Exception 
      Try 
       oleTrans.Rollback() 
       MessageBox.Show("Error occurred. Rollback success") 
      Catch rb As Exception 
       MessageBox.Show("rollback failed") 
      End Try 
     End Try 
    End Using 

が、ライン

oleCom.CommandText = "EXECSCRIPT([USE 'C:\Users\maymay\Documents\DBF File\201-file.dbf' ALIAS AA])" 

は '例外

変数' を返すが見つかりません。

)私は[ ]を削除しようとしたとのメッセージが

関数名が欠落しているになります。

私は何が欠けていますか?または、他にDBFでOledbCommandを使用してレコードを検索する方法がありますか?どんな助けもありがとう。

答えて

0

この行だけでは、このようなエラーは返されません。変数を探す索引やデータベースのイベントがある可能性があります。まず、VFP内からその行を実行する必要があります。

OTOH私はExecscript()を使用することを推奨しません。それは限られた使用量を持っており、あなたが持っているコードでは、本当に目的はありません(もし成功すれば - そのコードはあなたの本当のコードになることはできません。 )。

とにかく、あなたはこのように行うことができ、そのレコードで何かをするだろうと仮定:

yourFieldNameは、それが使用されるインデックスがある場合
Using oleCon As OleDbConnection = New OleDbConnection("Provider=VFPOLEDB;Data Source=C:\Users\maymay\Documents\DBF File") 
    Dim cmd As New OleDbCommand("select * from ('201-file') where yourFieldName = '105345'", oleCon) 
    oleCon.Open() 
    Dim rdr = cmd.ExecuteReader() 
    If rdr.Read() Then 
    ' do whatever with rdr 
    ' ie:  
    'Console.WriteLine(rdr("FieldName")) 
    End If 
    oleCon.Close() 
End Using 

。ところで、それは文字列であるかのように105345のような値を探していることは疑わしいです。

関連する問題