可以引用ADO对象来搞定。
你首先要在VB菜单中:
“工程”-->“引用”-->“Microsoft AxtiveX Data Objects 2.1 Library”
示例:Private Sub Form_Load()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim cnstr As String
cnstr = "Driver={Microsoft Visual FoxPro Driver};" & _
"SourceType=DBF;" & _
"SourceDB=;" & app.path & "\data" & _
"Exclusive=No"
cn.Open cnstr
rs.CursorLocation = adUseClient
rs.Open "select * from XXX.DBF", cn, adOpenKeyset, adLockBatchOptimistic
Set DataGrid1.DataSource = rs
DataGrid1.Refresh
End Sub以上示例程序的作用是将XXX.dbf表中的数据显示在datagrid1控件中。
你首先要在VB菜单中:
“工程”-->“引用”-->“Microsoft AxtiveX Data Objects 2.1 Library”
示例:Private Sub Form_Load()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim cnstr As String
cnstr = "Driver={Microsoft Visual FoxPro Driver};" & _
"SourceType=DBF;" & _
"SourceDB=;" & app.path & "\data" & _
"Exclusive=No"
cn.Open cnstr
rs.CursorLocation = adUseClient
rs.Open "select * from XXX.DBF", cn, adOpenKeyset, adLockBatchOptimistic
Set DataGrid1.DataSource = rs
DataGrid1.Refresh
End Sub以上示例程序的作用是将XXX.dbf表中的数据显示在datagrid1控件中。
如果你的dbf文件是早期版的dbase格式的话那么就将连接字符串更改一下。记得使用本程序要先引用ADO对象。(引用方法见上)
示例:Private Sub Form_Load()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim cnstr As String
cnstr = oConn.Open "Driver={Microsoft dBASE Driver (*.dbf)};" & _
"DriverID=277;" & _
"Dbq=" & app.path & "\data"
cn.Open cnstr
rs.CursorLocation = adUseClient
rs.Open "select * from XXX.DBF", cn, adOpenKeyset, adLockBatchOptimistic
text1.text=trim(rs.Fields(0))
text2.text=trim(rs.fields(1))
.......
text6.text=trim(rs.fields(5))
End Sub以上示例程序的作用是将XXX.dbf表中的各列的第一条记录的各列数据分别显示在不同的textbox控件中。几点说明:app.path是取得应用程序的当明目录,假设你的就用程序目录为:c:\myprg下,数据文件在c:\myprg\data目录下。那么app.path & "\data" 就代表了c:\myprg\data
即 app.path是取的相对路径,你也可以使用绝对路径c:\myprg\data.
在你的程序中要将我写的示例程序中相应的地方进行修,如表名,数据源路径等。以上程序我已测试通过,祝你好运…!!!
我的需求是:
我有一个DBF文件:
船名 船代码
AB 01
CD 02
EF 03我现在有一个船名值:CD
我要用CD在DBF文件中进行查找,并把02这个船代码取出来。我想知道如何用CD在DBF文件中进行查找,并把02这个船代码取出来?代码如何写?
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim cnstr As String
cnstr = "Driver={Microsoft Visual FoxPro Driver};" & _
"SourceType=DBF;" & _
"SourceDB=;" & app.path & "\data" & _
"Exclusive=No"
cn.Open cnstr
rs.CursorLocation = adUseClient
rs.Open "select * from ship.DBF where 船名='" & Trim(ucase(Text1.Text)) & "', cn, adOpenKeyset, adLockBatchOptimistic'假设dbf文件名为:ship.dbf
if rs.eof <> true then
msgbox "船名为:" & text1.text & "的代码为:" & rs!船代码
end if
End Sub其中text1.text中的数据由用户输入。
例如输入CD,那么查询的就是CD这条船的代码。
在窗体中加一个命令按扭。
改成;
Private Sub command1_click()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim cnstr As String
cnstr = "Driver={Microsoft Visual FoxPro Driver};" & _
"SourceType=DBF;" & _
"SourceDB=;" & app.path & "\data" & _
"Exclusive=No"
cn.Open cnstr
rs.CursorLocation = adUseClient
rs.Open "select * from ship.DBF where 船名='" & Trim(ucase(Text1.Text)) & "', cn, adOpenKeyset, adLockBatchOptimistic'假设dbf文件名为:ship.dbf
if rs.eof <> true then
msgbox "船名为:" & text1.text & "的代码为:" & rs!船代码
end if
End Sub
少了一个双引号。rs.Open "select * from ship.DBF where 船名='" & Trim(ucase(Text1.Text)) & "'", cn, adOpenKeyset, adLockBatchOptimistic''将上面的这一句改成这一句。在& "'后加一个"