Office中国论坛/Access中国论坛

标题: [求助]多用戶使用dbf的問題 [打印本页]

作者: tmtony    时间: 2002-5-15 16:44
标题: [求助]多用戶使用dbf的問題
我的程序需要使用dbf文件里的數據,而這個dbf 文件名是變化的, 我使用下面的程序,在單用戶里沒有問題,但多用戶同時使用就會說文件已打開, 不知有否好的辦法解決這個問題(急)
If Dir("f:\xbwh\"  & key_id & ".dbf") <> "" Then
    tqty.RowSource = "SELECT sum([TQTY]),id,first([NAME]),  sum([rmY]),  sum([QNTY]) FROM " & key_id & " IN 'f:\xbwh\'[dBASE IV;] where id<>''  group by id"
Else
    tqty.RowSource = ""
End If
作者: zhuyiwen    时间: 2002-5-15 21:10

tony,

我刚测试过,

1、如果你的DBF文件被其它应用程序用独占方式打开,则有你所说的问题;
2、如果你的DBF文件被其它应用程序用共享方式打开,没有这个问题;
3、如果都是ACCESS打开,没有这个问题。

[move]因此,你必须不能让其它应用程序以独占方式打开这个DBF表![em26][/move]
作者: tmtony    时间: 2002-5-16 04:37
我就是用两个ACCESS程序使用上面的代码打开啊,就出现这样的问题啊
作者: zhuyiwen    时间: 2002-5-16 05:49

1、两个一样ACCESS数据库: db7.mdb 和 复件 db7.mdb,同时都使用用下列SQL语句作为组合框的行来源:
SELECT 学号, 姓名 FROM xstxl IN 'e:\新new\sj'[dBASE IV;];
我这里没冲突;

2、在其中一MDB中使用SQL语句作查询打开 xstxl 的同时,一个用原来的MDB,没冲突。

3、在VFP中用共享方式打开 xstxl 表的同时,一个用原来的MDB,没冲突。

4、在VFP中用独占方式打开 xstxl 表的同时,一个用原来的MDB,出现你所说的情况。

你查查,是否还有其它程序使用了你的DBF文件?[em26]
作者: 大熊    时间: 2002-5-16 05:56
这样做,好像没有办法可想!
作者: tmtony    时间: 2002-5-16 06:02
我还是遇到同样问题
你有否用它来作下拉框的数据源
作者: zhuyiwen    时间: 2002-5-16 06:17
以下是引用tmtony在2002-5-15 22:02:11的发言:
我还是遇到同样问题
你有否用它来作下拉框的数据源


1、两个一样ACCESS数据库: db7.mdb 和 复件 db7.mdb,同时都使用用下列SQL语句作为组合框的行来源:
SELECT 学号, 姓名 FROM xstxl IN 'e:\新new\sj'[dBASE IV;];
我这里没冲突;

2、在其中一MDB中使用上述SQL语句作查询打开 xstxl 的同时,一个用原来的MDB,没冲突。

3、在VFP中用共享方式打开 xstxl 表的同时,一个用原来的MDB,没冲突。

4、在VFP中用独占方式打开 xstxl 表的同时,一个用原来的MDB,出现你所说的情况。

你查查,是否还有其它程序使用了你的DBF文件?[em26]
[此贴子已经被zhuyiwen于2002-5-15 22:17:19编辑过]


作者: 大熊    时间: 2002-5-16 06:17
朱兄,别的不说,当测试员你绝对够资格,对了,你用的是2000,还是xp? vfp是什么版本?
作者: zhuyiwen    时间: 2002-5-16 06:21
以下是引用大熊在2002-5-15 22:17:29的发言:
朱兄,别的不说,当测试员你绝对够资格,对了,你用的是2000,还是xp?&nbsp;vfp是什么版本?


Windows 2000 Pro + Visual Foxpro 7.0 + ACCESS 2000 + ACCESS 2002 + Visual Basic 6.0 + PowerBuilder 7.0

[em10][em06][em10]
作者: tmtony    时间: 2002-5-16 06:22
不好意思,朱兄,我试了几次都不行
还是把DBF传上来文件下载
作者: zhuyiwen    时间: 2002-5-16 06:27
以下是引用tmtony在2002-5-15 22:21:58的发言:
不好意思,朱兄,我试了几次都不行
还是把DBF传上来文件下载


原来你的DBF是VFP的,我修改了一下,你再试试。

文件下载

[em13]
作者: zhuyiwen    时间: 2002-5-16 06:31
ACCESS 2000 以后不支持VFP的DBF,仅支持DBASE 3、4的DBF。
作者: tmtony    时间: 2002-5-16 06:32
你修改了什么啊 ?
作者: zhuyiwen    时间: 2002-5-16 06:33
可以了吗?
作者: tmtony    时间: 2002-5-16 06:34
难道我要把所有DBF变成旧版格式?
但为何我一个程序使用却无问题,多用户使用才会?
作者: zhuyiwen    时间: 2002-5-16 06:37

只要修改表头的第一个字节,30 -> 03,即可。VFP照常能用(但不要去修改结构)。
[em26]
作者: tmtony    时间: 2002-5-16 06:43
好办法:)
但我的VFP程序又要使用这些表啊,而且如果在ACCESS使用它时每个用户都要打开文件并修改表头的话,那也存在锁定问题哦
作者: zhuyiwen    时间: 2002-5-16 06:44
以下是引用tmtony在2002-5-15 22:42:34的发言:
好办法:)
但我的VFP程序又要使用这些表啊,而且如果在ACCESS使用它时每个用户都要打开文件并修改表头的话,那也存在锁定问题哦


恭喜你,搞定![em26]
作者: zhuyiwen    时间: 2002-5-16 06:48
一般在修改表头时,不会修改DBF版本标识。你可以试试修改后03是否变了。

锁定问题,就得用程序控制了。[em26]
作者: tmtony    时间: 2002-5-16 06:54
是不是ACCESS直接使用VFP的DBF文件多用户使用就会存在我前面所说的错误,而打开DBASE3的版本的DBF文件就不会?
作者: zhuyiwen    时间: 2002-5-16 07:03

第一、ACCESS2000以后版本不再继续VFP的表,解决办法通过ODBC使用,或修改其版本标识。
第二、DBASE3、4的DBF文件在多用户环境下不能用独占方式使用,否则其它用户不能使用,解决办法是,给DBF加锁,这时一般能读,直到解锁后,其它用户才能加锁编辑表的内容。这一切在ACCESS默认环境中是自动的,在VFP中建议使用缓冲事务方式,它是使用的乐观锁。这样一般不会造成冲突。
第三、加强程序的强壮性,综合使用错误判断。

[em26]
作者: tmtony    时间: 2002-5-16 07:15
非常感谢你的建议
在VFP使用没有是没有问题
我的客户的情况可能使用修改版本标志会有些麻烦,因为它的DBF文件是每月产生
我昨天在试用动态添加一个dbf链接表,但还未测试完
作者: zhuyiwen    时间: 2002-5-16 07:22
其实,也是今天看了你的贴,才试着在ACCESS中使用DBF及其它桌面数据库的方法,我应该感谢你!你给了我启发![em26]
作者: tmtony    时间: 2002-5-16 07:26
你是最佳选择,你未能过来,总是遗憾啦:)
作者: zhuyiwen    时间: 2002-5-16 07:49
以下是引用tmtony在2002-5-15 23:26:12的发言:
你是最佳选择,你未能过来,总是遗憾啦:)


多谢站长的赏识![em26]
作者: xinbao    时间: 2002-5-16 23:10
我也試過, 是不行的, zhuyiwen版主, 你是否安裝了其它相關的程序才行的 (如pb)
你有否在其它電腦上試過

作者: MsAccess    时间: 2002-5-17 01:05
难怪有时链接 dbf 文件时汉字会出现乱码。
又多通了一窍!
作者: zhuyiwen    时间: 2002-5-18 19:32

请大家试试安装这个东东:

微软针对OFFICE2000的Jet/ODBC/ISAM的更新包

[em26]




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3