从书上看到一个查询出RECORDSET的函数,可以放到标准模块中,我觉得挺好用的,你可以参考下 Public Function EXESQL(ByVal txtsql As String) As Recordset On Error GoTo errsqlh Dim cnn As ADODB.Connection Dim db As ADODB.Recordset Dim ss() As String '定义数组为比较第一个SQL语句中的关键字 ss() = Split(txtsql) Set cnn = New ADODB.Connection cnn.ConnectionString = "。。" cnn.Open If InStr("INSERT,DELETE,UPDATE", UCase$(ss(0))) Then cnn.Execute txtsql Else Set db = New ADODB.Recordset db.CursorLocation = adUseClient db.Open Trim$(txtsql), cnn, adOpenDynamic, adLockOptimistic Set EXESQL = db End If Set db = Nothing Set cnn = Nothing Exit Function errsqlh: MsgBox Err.Description End Function
//与你的问题无关,只是关系ado访问而已。
2、ACCESS不适合局网共享式应用
//确实不适合共享的应用,access更适合单机
3、使用了事务的原因
//sql中的事务一样对access有用我只能猜测到的,数据当时还在,后来不在,只存在以下原因1,事务
2,access需要进行修复,大量数据在内存中间,用户的数据库被损坏建议直接发消息给ACCESS的斑竹changechange,他是个access方面的高手
我估计是前者吧,否则就太恐怖了,那Access谁还敢用?
能说一下,你是用什么方法访问数据库吗?尤其是如果更新并保存数据的?
2,如果对数据库的操作比较频繁或并发操作较多,还是建议将ACCESS数据库换成SQL数据库
我看看很多财务软件也是Access数据库,比如金算盘、金蝶。
如果出现你的问题,那原来使用的用户为什么没有?这证明ACCESS没有问题。
金算盘的前台用VB调用操作,为什么没有这种问题,所以是你设计的程序有BUG.
'我原来的做法是 开始的时候打开 ado connection 一直到退出程序才关上。后来发现有些数据更新不上,特别是在数据操作频繁的情况下。
'现在做法是在操作数据的时候,打开Connection,操作数据,然后Close,然后Set Nothing 。释放内存。当然,RecordSet 也是这样做。
'这样程序会显得慢一些,但是没有了丢数据的情况,也不会出现互锁什么的。
'所以现在所有的数据操作都是“瞬时”的(相对于用户操作来说),不会出现开着一个 Connection 或者 RecordSet 在那儿等待用户输入的情况
但我觉得应该不会产生这样的结果吧?
在win98和winxp、win2k都使用的程序,编译环境哪种操作系统最好?
我感觉在win2k下编译的程序只有win2k下使用最稳定,但在98和XP下不同版本效果完全不同!
有的就非常不稳定,甚至安装都有故障。
在空白98上安装并测试98版本,在空白XP上安装并测试XP版本....
都带着,安装时,判断操作系统版本,copy不同的文件,这样能保证万无一失啊,免得出了问题麻烦
我碰到过类似的,
不过是MS SQL Server的,
郁闷了半天,,,
未果……,
帮楼主UP
不大安全 ////装一个ACCESS 和一个SQLSERVER有什么区别呢?性能有很大的区别////难道你们都用正版吗?自己用D版玩,别人公司用的就有很多正版,要记住数据库是客户要出钱的,不是你送的。
--------------------------------------------------
本人因学习需要:
1. "Visual Basic 6.0 中文版程序员指南"
Microsoft Corporation 著
微软(中国)有限公司 译
北京希望电脑公司 出品
(含一张配套光盘)2. "Microsoft Visual C++ 6.0 程序员指南"
Beck Zaratian 著
微软授权出版
(含一张配套光盘)3. (中文版, 英文版皆可) (含一张配套光盘)
中文名: Programming Windows程式开发设计指南(第五版)
作者: Charles Petzold
英文名: Programming Windows by Charles Petzold (Fifth Edition)
Microsoft Press交易地点: 限南京市
本人: 孙先生
本人联系方式:
Email: jerysun0818@hotmailcom
或 [email protected]
手机: 13003424733 (请发短信, 本人囊中羞涩, 从不接手机:-)您的回复信息格式为:
1. 您的姓名, 联系方式(手机, Email)
2. 以上您有哪几本还是全有? 您出的交易价格?
3. 在何时, 何地交易?
2、开发环境为WIN2K+ACCESS+VB
3、几乎多数客户都发生过单据保存后当时还在,退出程序后或第二天开机就丢失了部份单据!############################//
==================
来晚了,想要说的都别说出来了,不过对下面这句话不太明白:正因为数据不多而且考虑到安全、维护和实施方便,才用的ACCESS,你想想,一套单价不高的软件产品,肯定要注意这些细节啊,不可能专门还去装个SQLSERVER吧?ACCESS安全吗?装一个ACCESS 和一个SQLSERVER有什么区别呢?难道你们都用正版吗?
===================
使用access就非要装access吗?我们只是使用Microsoft.Jet.OLEDB.4.0 ,或者 microsoft access driver,如果你愿意,你的access文件可以取名XXXX都可以,可是如果使用SQLserver ,那好了,客户那里至少得有一个SQL server在那里运行,除非你提供一个sql服务器,把客户的数据放在你这里.这个关盗版和正版什么事呢?
----------------------------------------------------------------------------如果说你的重点是为了问题的解决方案,那你提供的信息量太少了,我们也无从下手,怪不得别人。
就光是你提的那几点,什么可能性都有,但最大的可能性是你们程序设计问题。
access数据文件可以达到2个G,那时候速度很慢,再大就有可能打不开文件,但没发现过存盘失败的情况。但作为一根救命稻草,你可以问一下数据文件大小,并且添加压缩数据文件大小的语句。
如果你实在不愿意考虑是否是自己的程序算法问题,则不防把运行环境、数据文件、丢失内容归纳一下,列成表格,对比一下异同点,也许能解决问题。
但我想最大的原因還是數據根本沒保存到數據庫裏面,你仔細看看Updata的代碼,我以前也遇到過類似的問題,而且我的數據不多也會這樣。
难道VB的三层分布式开发就是你们所谓的将ACCESS文件共享,
然后每个客户端直接访问?I服了U
uP>>
我也曾遇到差不多同样问题,单机当记录数特别多时或是多机同时频繁操作时,有ACCESS坏掉的现象,不过好像没遇到过丢数据的事。我现在网络数据库全用SQL SERVER,一直没问题,也不算复杂的。
后来也是没办法,把我们地区物流中心的数据库修改为sql server
问题出在共享式访问上
这是完全是单机版程序应用在网络平台
别说是三层了,C/S都算不上
Public Function EXESQL(ByVal txtsql As String) As Recordset
On Error GoTo errsqlh
Dim cnn As ADODB.Connection
Dim db As ADODB.Recordset
Dim ss() As String '定义数组为比较第一个SQL语句中的关键字
ss() = Split(txtsql)
Set cnn = New ADODB.Connection
cnn.ConnectionString = "。。"
cnn.Open
If InStr("INSERT,DELETE,UPDATE", UCase$(ss(0))) Then
cnn.Execute txtsql
Else
Set db = New ADODB.Recordset
db.CursorLocation = adUseClient
db.Open Trim$(txtsql), cnn, adOpenDynamic, adLockOptimistic
Set EXESQL = db
End If
Set db = Nothing
Set cnn = Nothing
Exit Function
errsqlh:
MsgBox Err.Description
End Function
//小李飞刀用的是飞刀而不是手枪;access好比飞刀,sql server好比手枪。
我只用 insert into 添加数据,没有遇到你说的问题
//在所有客户机器上安装了VB、安装了MDAC2.7、2.8,已经全部安装上ACCESS2000
-- 这是程序员的大忌。//在不同系统下作不同版本的说法
-- 极力反对,作不同版本,是迫不得以的做法。事实证明微软的系统有很好的向下兼容机制。一个程序分作好多个版本,让人有种菜菜的感觉,客户也不看好。//access的维护
-- 这个小东西经常会坏掉,而且体积越来越大。作法: 数据导出,然后删除,重新建立,再导入数据。其实access数据库的程序很好维护,在网上挂个升级包,时不时的对客户的程序 copy 一下就行了。