怎么样的方式访问数据库速度最快?

时间:2022-10-07 12:07:32
我两个问题,请大家帮忙!

1.我现在的进销存是在一台电脑上录入,其他电脑采用数据库共享直接访问的,其他电脑在访问时的速度极慢,我不知道该如何是好?我记得有人说过通过其他方式访问可以快点,我采用ADO的形式。如果有其他好建议不妨也说来听听!

2、下列两个代码有什么区别?

在VBA中我引用了MSHFLEXGRID控件,我是想通过设置一个文本框,然后在MSHFLEXGRID中进行编辑,在设置文本框rkdtxt_KeyPress时,后面的申明在VBA (ByVal KeyAscii As MSForms.ReturnInteger),而在VB中是(KeyAscii As Integer)同样的代码在VB是可以通过的,而在VBA中竟上述一个地方不同,竟然代码就无法通过?请问大家该如何办?

VBA中文本框(rkdtxt),该代码在VBA中没通过。
Private Sub rkdtxt_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = ASC_ENTER Then
MSHFlexGrid1.SetFocus
KeyAscii = 0
End If
End Sub


VB中文本框(rkdtxt),该代码在VB中通过。
Private Sub rkdtxt_KeyPress(KeyAscii As Integer)
If KeyAscii = ASC_ENTER Then
MSHFlexGrid1.SetFocus
KeyAscii = 0
End If
End Sub
当然不是仅仅参数方面的问题!
谢谢!

13 个解决方案

#1


1 你用的什么数据库
2 说出错误原因

#2


一、是ACCESS的数据库。

二、错误原因我知道还要问大家?
错误的提示是:“编译错误,过程声明与事件描述不匹配,或过程具有相同的名称”
主要我看是两个参数:在VBA中是ByVal KeyAscii As MSForms.ReturnInteger,而在VB中是KeyAscii As Integer,就是这点差别没有通过?

#3


1:建议使用sql  ACCESS访问用共享的方式肯定慢
2: 不太清楚
等强人吧

#4


访问速度也决定于你机器的速度,赫赫

你也没贴出是在什么样的情况下慢,登陆慢?读写大(少)量数据慢?
还是任何时候都慢?

#5


我用MSHFLEXGRID浏览记录集,在记录集中总共只有2000条记录,在每张单子(6条记录)都要用较长的时间,具体要5-6秒,不象在本地的速度,1秒中。我觉得这种方式肯定有问题!

#6


ACCESS只是桌面型数据库,C/S系统还是用SQL server数据库来做吧

#7


共享型的当然慢,是最慢的,有条件的话就换了吧。
VBA里就是这样的,你要在VBA环境里运行当然要按它的要求来做。
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

End Sub

#8


不建议通过共享访问ACCESS数据库.建议使用SQL SERVER等网络数据库.

╭═══════════════════╮
║ 免费的源码、工具网站,欢迎大家访问!║
║ http://www.j2soft.cn/        ║
╰═══════════════════╯

#9


ADO确实比DAO慢许多,但不至于会慢这么多的,2000条记录,要5-6秒?优化你的SQL查询语句吧

我一个ACCESS数据库都50M了,在两台1999年的电脑下运行,业务非常繁忙,但不感觉速度有问题,我用的DAO

Private Sub rkdtxt_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = ASC_ENTER Then
MSHFlexGrid1.SetFocus
KeyAscii = 0
End If
End Sub

按ENTER键后看能否取出KeyAscii的值 

#10


ByVal KeyAscii As MSForms.ReturnInteger

MSForms.ReturnInteger 根 integer 类型不一样就不能用 
哈 这个好像没有重载 ~~~

#11


1:快速的方法倒不是用ADO,DAO,RDO,而是先从文本文件里面预读数据,然后启动后在后台用ADO代替,不管ACCESS,SQL SERVE,都可以

2: MSForms.ReturnInteger,很简单,VB里面没有MSForms的类库,当然不能使用

#12


如果只求快,不用数据库,用txt最好!

#13


SQL SERVER 2005 要十几万一套。

#1


1 你用的什么数据库
2 说出错误原因

#2


一、是ACCESS的数据库。

二、错误原因我知道还要问大家?
错误的提示是:“编译错误,过程声明与事件描述不匹配,或过程具有相同的名称”
主要我看是两个参数:在VBA中是ByVal KeyAscii As MSForms.ReturnInteger,而在VB中是KeyAscii As Integer,就是这点差别没有通过?

#3


1:建议使用sql  ACCESS访问用共享的方式肯定慢
2: 不太清楚
等强人吧

#4


访问速度也决定于你机器的速度,赫赫

你也没贴出是在什么样的情况下慢,登陆慢?读写大(少)量数据慢?
还是任何时候都慢?

#5


我用MSHFLEXGRID浏览记录集,在记录集中总共只有2000条记录,在每张单子(6条记录)都要用较长的时间,具体要5-6秒,不象在本地的速度,1秒中。我觉得这种方式肯定有问题!

#6


ACCESS只是桌面型数据库,C/S系统还是用SQL server数据库来做吧

#7


共享型的当然慢,是最慢的,有条件的话就换了吧。
VBA里就是这样的,你要在VBA环境里运行当然要按它的要求来做。
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

End Sub

#8


不建议通过共享访问ACCESS数据库.建议使用SQL SERVER等网络数据库.

╭═══════════════════╮
║ 免费的源码、工具网站,欢迎大家访问!║
║ http://www.j2soft.cn/        ║
╰═══════════════════╯

#9


ADO确实比DAO慢许多,但不至于会慢这么多的,2000条记录,要5-6秒?优化你的SQL查询语句吧

我一个ACCESS数据库都50M了,在两台1999年的电脑下运行,业务非常繁忙,但不感觉速度有问题,我用的DAO

Private Sub rkdtxt_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = ASC_ENTER Then
MSHFlexGrid1.SetFocus
KeyAscii = 0
End If
End Sub

按ENTER键后看能否取出KeyAscii的值 

#10


ByVal KeyAscii As MSForms.ReturnInteger

MSForms.ReturnInteger 根 integer 类型不一样就不能用 
哈 这个好像没有重载 ~~~

#11


1:快速的方法倒不是用ADO,DAO,RDO,而是先从文本文件里面预读数据,然后启动后在后台用ADO代替,不管ACCESS,SQL SERVE,都可以

2: MSForms.ReturnInteger,很简单,VB里面没有MSForms的类库,当然不能使用

#12


如果只求快,不用数据库,用txt最好!

#13


SQL SERVER 2005 要十几万一套。