2.兄弟我使用的是ADO.NET的方式来写入数据,给个事例代码。
3.有备注字段的DBF表,怎么样用ADO.NET来连接,连接字符串是什么?
问题解决有报酬
联系电话:18982139613
QQ:123198541
19 个解决方案
#1
1、如果是你自己独占打开的,可以写数据,如果已经被别人独占打开了,不要说写,你都打不开了
2,3 不清楚
2,3 不清楚
#2
这不应该是一个VFP的问题啊!给你一个地址去看看吧,相信可以解决楼主的问题!
http://www.d9soft.com/article/2007/7-9/Article19637_1.htm
#3
用oledb for vfp(如9.0 Microsoft OLE DB Provider for Visual FoxPro 9.0)连接
不是oledb for odbc
oledb for vfp下载地址:
http://www.microsoft.com/downloads/details.aspx?FamilyId=E1A87D8F-2D58-491F-A0FA-95A3289C5FD4&displaylang=en
File Name: vfpoledb.exe
Version: 1.1
Date Published: 1/5/2006
Language: English
Download Size: 2.5 MB
安装完oledb for vfp后,建一ado连接,选oledb for vfp,如果是数据库,连接到数据库,如果是*表,连接到*表所在目录,然后建一ado command或用ado连接的execute方法
不是oledb for odbc
oledb for vfp下载地址:
http://www.microsoft.com/downloads/details.aspx?FamilyId=E1A87D8F-2D58-491F-A0FA-95A3289C5FD4&displaylang=en
File Name: vfpoledb.exe
Version: 1.1
Date Published: 1/5/2006
Language: English
Download Size: 2.5 MB
安装完oledb for vfp后,建一ado连接,选oledb for vfp,如果是数据库,连接到数据库,如果是*表,连接到*表所在目录,然后建一ado command或用ado连接的execute方法
#4
我也是做.NET的,楼上的连接里面的内容,我基本上都知道哈,在DBF文件没有被其它人打开的情况下,我是可以连接BDF文件的,但是当别人先打开发DBF文件,我的程序就出错了。
#5
那别人是独占打开,所以你再打开时就打开了,就报错。
如果别人也是用你的程序打开的,那将你的程序改为共享打开,
不过如果别人是用其他软件独占打开的那你就共享打也没有用。
#6
急用呀,高手出来救场呀!
#7
说明一下你所说的别人打开了此表,别人用什么软件打开的此表,是用的你的软件?还是第三方软件?
要是第三方软件,没办法,除非改动第三方软件打开方式。
#8
有一个用VFP6写的老程序,数据库是VFP自己的,表是DBF文件,我现在需要写一个新的程序(.NET来写),要在VFP6的老程序运行的情况下,对DBF数据表进行读写操作,这样可以现实吗?
#9
VFP6写的老程序应该是独占方式打开的此表,所以再用什么方式或软件打开此表均报错。
只能改动VFP6写的程序,改为共享方式打开此表。
#10
首先谢谢 apple_8180 对我的问题的关注。
这个老程序的原代码我没有,好像是修改不到。
还有一个问题就是,DBF文件一但有备注型字段里,我用ODBC找开DBF文件也要报错。
代码如下:
'装载数据库文件到ListBox1中
Dim conn As New System.Data.OleDb.OleDbConnection
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\VB4DBF\bin\Data;Extended Properties=dBASE IV;User ID=Admin;Password="
Dim myCommand As New System.Data.OleDb.OleDbCommand
'SrcData为我当前的数据库名称
'你可以替换成你自己的名称
'''''''''''''''''''''''''''''''''''''''''''
'注意::: 数据库文件名的长度不要超过8个字符,否则出错!!!!!:::::
'下面的几种形式都可以使用
myCommand.CommandText = "select * from Src_Data"
'myCommand.CommandText = "select xm from Src_Data.dbf"
'myCommand.CommandText = "select xm from [Src_Data]"
'myCommand.CommandText = "select xm from [Src_Data.dbf]"
''''表名大于8个字符,只取前八个
'myCommand.CommandText = "select xm from Src_Data_NoProblem"
'myCommand.CommandText = "select xm from [Src_Data_NoProblem.dbf]"
myCommand.Connection = conn
ListBox1.Items.Clear()
Try
conn.Open()
Dim myReader As System.Data.OleDb.OleDbDataReader
myReader = myCommand.ExecuteReader()
While myReader.Read()
ListBox1.Items.Add(myReader.Item("xh")) '数据加载到ListBox1
End While
myReader.Close()
conn.Close()
Catch ex As Exception
MessageBox.Show(ex.ToString)
Me.Close()
End Try
#11
上面写错了,是OLE DB方式,不是ODBC
#12
用Microsoft OLE DB Provider for Visual FoxPro 9.0连接DBF,
不用 Provider=Microsoft.Jet.OLEDB.4.0
#13
兄弟,这个东西我没有用过!Microsoft OLE DB Provider for Visual FoxPro 9.0 是不是要安装噢,有没有连接事例呢?
#14
还有,我想问一下,如果DBF被别人以独占方式打了,我想再去读都不可以是吗?
#15
不可以,读的前提是打开,因为别人独占打开,你就打不开了。
#16
需要安装
安装oledb for vfp后,建一ado连接,选oledb for vfp,如果是数据库,连接到数据库,如果是*表,连接到*表所在目录,然后建一ado command或用ado连接的execute方法
#17
VFP是不是可以对数据表以共享的方式打开呢?
如果有共享方式的话,是不是就可以在对方打开DBF的情况下,我的程序也可以对数据表进行读写操作?
#18
1. 当然可以,否则 vfp 就不会被认为是最适合做数据处理中间层的语言了。
语法: use 表名 shared [其他选项]
2. 即使有共享打开的方式,但能否打开就是另一回事了。前面其他网友已有回答,如果别人用独占(换个词就是“排它”)的方式打开了一个表,这个进程已经明确的告诉了操作系统,在我操作这个文件期间,不允许其他进程再对这个文件进行任何读写操作。你又怎么可能再打开它来读取,甚至写入呢?所以,你要读写的表如果有其他程序同时也在读写,且又使用了独占打开方式的话,你只有:1.修改这个程序,使用共享读写的方式. 2. 没有源程序,只能另写一个替代它. 3. 也不想重写,只有放弃
此外,你首先得保证你没有使用独占的方式,连接串的写法可以到下面的网站去查,你应该对 exclusive 这个词敏感点: http://www.connectionstrings.com/visual-foxpro
#19
用.NET操作VFP的表,本来就是自讨苦吃。
#1
1、如果是你自己独占打开的,可以写数据,如果已经被别人独占打开了,不要说写,你都打不开了
2,3 不清楚
2,3 不清楚
#2
这不应该是一个VFP的问题啊!给你一个地址去看看吧,相信可以解决楼主的问题!
http://www.d9soft.com/article/2007/7-9/Article19637_1.htm
#3
用oledb for vfp(如9.0 Microsoft OLE DB Provider for Visual FoxPro 9.0)连接
不是oledb for odbc
oledb for vfp下载地址:
http://www.microsoft.com/downloads/details.aspx?FamilyId=E1A87D8F-2D58-491F-A0FA-95A3289C5FD4&displaylang=en
File Name: vfpoledb.exe
Version: 1.1
Date Published: 1/5/2006
Language: English
Download Size: 2.5 MB
安装完oledb for vfp后,建一ado连接,选oledb for vfp,如果是数据库,连接到数据库,如果是*表,连接到*表所在目录,然后建一ado command或用ado连接的execute方法
不是oledb for odbc
oledb for vfp下载地址:
http://www.microsoft.com/downloads/details.aspx?FamilyId=E1A87D8F-2D58-491F-A0FA-95A3289C5FD4&displaylang=en
File Name: vfpoledb.exe
Version: 1.1
Date Published: 1/5/2006
Language: English
Download Size: 2.5 MB
安装完oledb for vfp后,建一ado连接,选oledb for vfp,如果是数据库,连接到数据库,如果是*表,连接到*表所在目录,然后建一ado command或用ado连接的execute方法
#4
我也是做.NET的,楼上的连接里面的内容,我基本上都知道哈,在DBF文件没有被其它人打开的情况下,我是可以连接BDF文件的,但是当别人先打开发DBF文件,我的程序就出错了。
#5
那别人是独占打开,所以你再打开时就打开了,就报错。
如果别人也是用你的程序打开的,那将你的程序改为共享打开,
不过如果别人是用其他软件独占打开的那你就共享打也没有用。
#6
急用呀,高手出来救场呀!
#7
说明一下你所说的别人打开了此表,别人用什么软件打开的此表,是用的你的软件?还是第三方软件?
要是第三方软件,没办法,除非改动第三方软件打开方式。
#8
有一个用VFP6写的老程序,数据库是VFP自己的,表是DBF文件,我现在需要写一个新的程序(.NET来写),要在VFP6的老程序运行的情况下,对DBF数据表进行读写操作,这样可以现实吗?
#9
VFP6写的老程序应该是独占方式打开的此表,所以再用什么方式或软件打开此表均报错。
只能改动VFP6写的程序,改为共享方式打开此表。
#10
首先谢谢 apple_8180 对我的问题的关注。
这个老程序的原代码我没有,好像是修改不到。
还有一个问题就是,DBF文件一但有备注型字段里,我用ODBC找开DBF文件也要报错。
代码如下:
'装载数据库文件到ListBox1中
Dim conn As New System.Data.OleDb.OleDbConnection
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\VB4DBF\bin\Data;Extended Properties=dBASE IV;User ID=Admin;Password="
Dim myCommand As New System.Data.OleDb.OleDbCommand
'SrcData为我当前的数据库名称
'你可以替换成你自己的名称
'''''''''''''''''''''''''''''''''''''''''''
'注意::: 数据库文件名的长度不要超过8个字符,否则出错!!!!!:::::
'下面的几种形式都可以使用
myCommand.CommandText = "select * from Src_Data"
'myCommand.CommandText = "select xm from Src_Data.dbf"
'myCommand.CommandText = "select xm from [Src_Data]"
'myCommand.CommandText = "select xm from [Src_Data.dbf]"
''''表名大于8个字符,只取前八个
'myCommand.CommandText = "select xm from Src_Data_NoProblem"
'myCommand.CommandText = "select xm from [Src_Data_NoProblem.dbf]"
myCommand.Connection = conn
ListBox1.Items.Clear()
Try
conn.Open()
Dim myReader As System.Data.OleDb.OleDbDataReader
myReader = myCommand.ExecuteReader()
While myReader.Read()
ListBox1.Items.Add(myReader.Item("xh")) '数据加载到ListBox1
End While
myReader.Close()
conn.Close()
Catch ex As Exception
MessageBox.Show(ex.ToString)
Me.Close()
End Try
#11
上面写错了,是OLE DB方式,不是ODBC
#12
用Microsoft OLE DB Provider for Visual FoxPro 9.0连接DBF,
不用 Provider=Microsoft.Jet.OLEDB.4.0
#13
兄弟,这个东西我没有用过!Microsoft OLE DB Provider for Visual FoxPro 9.0 是不是要安装噢,有没有连接事例呢?
#14
还有,我想问一下,如果DBF被别人以独占方式打了,我想再去读都不可以是吗?
#15
不可以,读的前提是打开,因为别人独占打开,你就打不开了。
#16
需要安装
安装oledb for vfp后,建一ado连接,选oledb for vfp,如果是数据库,连接到数据库,如果是*表,连接到*表所在目录,然后建一ado command或用ado连接的execute方法
#17
VFP是不是可以对数据表以共享的方式打开呢?
如果有共享方式的话,是不是就可以在对方打开DBF的情况下,我的程序也可以对数据表进行读写操作?
#18
1. 当然可以,否则 vfp 就不会被认为是最适合做数据处理中间层的语言了。
语法: use 表名 shared [其他选项]
2. 即使有共享打开的方式,但能否打开就是另一回事了。前面其他网友已有回答,如果别人用独占(换个词就是“排它”)的方式打开了一个表,这个进程已经明确的告诉了操作系统,在我操作这个文件期间,不允许其他进程再对这个文件进行任何读写操作。你又怎么可能再打开它来读取,甚至写入呢?所以,你要读写的表如果有其他程序同时也在读写,且又使用了独占打开方式的话,你只有:1.修改这个程序,使用共享读写的方式. 2. 没有源程序,只能另写一个替代它. 3. 也不想重写,只有放弃
此外,你首先得保证你没有使用独占的方式,连接串的写法可以到下面的网站去查,你应该对 exclusive 这个词敏感点: http://www.connectionstrings.com/visual-foxpro
#19
用.NET操作VFP的表,本来就是自讨苦吃。