代码之家  ›  专栏  ›  技术社区  ›  Dan

VBA:测试网络驱动器连接速度

  •  1
  • Dan  · 技术社区  · 15 年前

    我认为最好尝试编写一个宏来测量与excel工作表运行位置的连接速度,如果连接速度低于某个阈值,我会收到一些警告消息,告诉用户应该在本地下载副本。

    有没有关于我如何做到这一点的建议?

    谢谢 丹

    到目前为止,我唯一的想法是将10000个重复字符输出到ActiveWorkbook.Path中一个随机命名的文件中,然后将其删除。根据此操作前后的Now()值,我可以估计连接速度。这有很多潜在的问题。。。完整驱动器、写入权限、运行时和准确性之间的平衡。

    3 回复  |  直到 6 年前
        1
  •  2
  •   Marcus from London    15 年前

    我怀疑问题不在于Excel应用程序本身。无论是xls还是xla,文件都会加载到客户机上的RAM中。问题是这只重达800磅的大猩猩。

    您可能知道,Access不是客户机-服务器数据库,不管MDB可能位于文件服务器上。从客户端运行查询(无论是SQL还是QueryDef)时,查询中所需的所有数据都会传输到客户端。这与真正的客户机-服务器数据库(想想SQL server或Oracle)不同,在该数据库中,查询在服务器上解析,结果只返回给客户机。

    一些建议:

    1) 记录查询执行前后的时间,并将结果写入中心文本文件。这只用于识别最慢的查询。先解决最坏的罪犯。

    3) 如果这主要是一个报告工具,您可以对表进行非规范化吗?Access严重受到表深度性能问题的影响。

    4) 你能在本地缓存数据吗?如果有一个解决方案,我允许用户选择他们需要的数据(通常是整个数据的一小部分),然后将其缓存在他们的C:驱动器上。对本地数据执行了后续查询。

    5) 您正在使用共享工作簿吗?尽可能避免这种情况。

    祝你一切顺利

        2
  •  0
  •   Dan    14 年前

    尝试将固定数量的字符写入工作簿存储的同一目录(workbook.Path)。在for循环中执行此操作,并重复此操作,以便写入10000个字符(或您选择的任何数字)。在之前和之后做一个计时陈述。以秒为单位计算出适当的截止时间,并为超过截止时间的任何人显示一条消息。

        3
  •  0
  •   Constablebrew    11 年前

    您可以使用ICMP Echo。微软有VisualBasic版本的代码 http://support.microsoft.com/kb/300197