Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

access广域网链接SQL数据库

刘东升  发表于:2010-10-22 17:05:10  
复制

公司内部用的一个销售进销存数据库,因为没有合适的成型软件,自己就研究用access做了一个,内部用没问题。后来用的客户端多了就升级到sql数据库,用一台配置比较高的电脑当服务器。最近公司在别的区又开了个分公司,就研究广域网链接,还真成功了。服务器那台电脑在连接的路由器里设置了下DMZ,然后下载了个花生壳软件,有了固定IP,在SQL里简单设置了下,只开放了1433端口,客户端电脑上用ODBC数据源设置了下,然后用客户端上的access数据库链接数据源,成功了。虽然可以远程录入单据,查看库存,但是速度很慢。提交单据将近一分钟。查询单据(42566条数据,在窗体里做了21个总合计数)时要超过两分钟才能刷新出来,还是不太实用。希望各位高手,有好的方法,相互交流下,谢谢

 

Top
BruceLee 发表于:2010-10-22 18:50:08

找专业老师给你优化吧   看上去好复杂



朱维强 发表于:2010-10-23 08:59:52

花生壳是很慢的,用光纤啊,网速快又有固定IP,另外ODBC数据源不是专门用于互联网连接的,速度也慢点,改用ADO连接,ADO是专门解决互联网连接速度较慢而产生方法。不过采用ADO连接后,前台很多东西就不一样喽。因为ADO是没有表的,也没有查询的,基本上要重新写过



刘东升 发表于:2010-10-23 11:11:57

谢谢朱兄,但是

用ADO来实现的话,要懂

  • WWW、HTML 以及对网站构建的基本了解
  • ASP(动态服务器页面)
  • SQL(结构化查询语言)
  • 我是一知半解,难度太大了。

    我做的access前台,查询窗口也有问题,我用的是在子窗体里的页脚里用文本框做的合计:净费合计=Sum([净费])

    在查询窗体里做的:净费总计=Forms!查询窗体!查询子窗体.Form!净费合计

    这样的合计数有21个,是不是这样也会影响前台的运行速度啊?

    还有我做的查询窗体是引用的查询表,查询表在引用的基础表,这样也会慢吧

     

     



    朱维强 发表于:2010-10-25 11:25:12

    你所说的合计数等等,不是主要出现的问题,比如,你把这些取消不用,我想速度也不会快起来,只能解决主要的问题才是出路



    刘东升 发表于:2010-10-25 11:56:44

    合计数是个问题,我把合计数删除了,运行很快。把数据库转成ADP时咋更慢了,在MDB里打开连接的基础表时很快,可是到了ADP里怎么还很慢了,呵呵。都建议我转成ASP.net加SQL2000来实现,说效果比access+sql2000好,但是我还是喜欢access做前台



    雨农 发表于:2010-10-27 12:41:56

    这样子,

    方法1,用web开发一个新的系统,用你的花生壳就可以,我现在就是用这个方法,有多家分公司同用一个web系统,服务器就放在深圳,香港,美国,上海,越南都可以用,速度也不慢,但不要做大量的计算,尽量让系统一次查询就把结果整出来

     

    方法2,叫你公司建个VPN,现在的VPN提供商很多,收费也不贵,VPN还可以做电话内线,那你的系统就不用改了,不过速度不怎么样,我试过,上海连接深圳的数据库,也很慢,即使是直接select一条记录,也不快,

     

    方法3,装VPN,使用次数多的分部装一个server2003/2000服务器,其它地方用远程桌面管理进入这台服务器使用你的系统,我就是用这招搞定一个C/S系统的

     

     

     



    雨农 发表于:2010-10-27 12:43:35
    什么合计不合计都是你系统的问题,做系统尽量就是能让系统简单化,用多几样方法让系统少去访问数据库.

    wj.s 发表于:2010-10-28 01:11:25

    建议直接使用Windows的远程桌面技术进行处理,这样你的程序就不需要更改了(程序的运行及计算是在局域网远程桌面服务器中进行的,服务器发送生成结果的桌面图片,广域网的客户端只是发送键盘及鼠标操作信息)

    速度还算可以,普通的ADSL+花生壳,10个广域网的客户端同时使用基本没有问题,速度只比局域网中慢点.

    远程桌面的设置方法也不复杂,网上搜索下就有许多,就是要上微软注册远程桌面有点麻烦(正版注册要买版权的,不过也有其他方法的,嘿嘿,自己网上找下.)



    刘东升 发表于:2010-10-28 12:29:06

    多谢大家的建议,正按照大家的建议改进中,太感谢了



    andymark 发表于:2010-10-28 20:17:06

    不想更改原程序,建议用服务终端,服务终端类似远程桌面,但支持更多人和并发性

     

    速度跟局域网差不多的

     

     



    阿土 发表于:2010-10-28 22:06:29

    10楼,服务终端怎么实现啊,能多解释吗



    justinliao 发表于:2010-11-06 21:40:28

    对啊!10楼的能不能祥细说一下。



    SARA 发表于:2010-12-03 14:42:25
    突然发觉自己好无知,你们说的是我感兴趣的,结果我愣是不懂,从哪学呢。

    韩志 发表于:2010-12-18 19:42:43

    我和楼主有过相同的经历,所以也谈谈我的看法:

    1。服务器端采用ADSL宽带接入对速度有很大影响。我们都知道ADSL不管带宽是几M的,其上行带宽最多为512K(一般2M宽带,上行是256K,4M宽带,上行是512K),这是ADSL这种模式自身决定的,无法改变。而对于对外提供数据的服务器来说,其使用的刚好就是网络的上行带宽,这就决定了用ADSL做服务器的网络对系统的响应速度有很大影响。建议改用光纤(光纤的上行和下行带宽是一样的,一个6M的光纤就可以提供6M的上行带宽,而不受512K的限制。)

    2。使用链接表或者ODBC对系统的性能影响也比较大。刚才前面也有前辈提到过用ADO,的确ADO是一个比较理解的工具,也是目前来说最快的连接方式。

    3。只是把连接方式改成ADO也不一定速度就会提高很多,而是要注意编程的方式。不要一提到优化代码速度就觉得离自己很遥远,就觉得不是我们业余程序员所能做到的,其实远非如此,只需要对ADO和SQL SERVER具备基础知识就可以做的很好,我们可以这样想:

    (1)系统慢,为什么会慢,瓶颈是什么?瓶颈是网络流量受限制,不然为什么在局域网不慢呢。

    (2)既然是网络限制,那我们少让数据在网络之间传来传去不就行了吗,那就尽可能少的交换数据吧。

    (3)带着这个理念看程序,如果把很复杂的查询计算方在客户端,那么为了实现这么一个计算,客户端要向服务器请求很多数据然后在客户端计算机完成计算,得到想要的一个数字或者是一个记录集,这样效率必然会低。我们能不能把客户端仅作为结果显示输出的工具,运算和业务过程都放在服务器上运算,最理想的模式应该是客户端只需要向服务器提交一个参数,或者仅仅一段命令,服务器就把最终结果以记录集的方式返回给客户端,这时客户端只负责把从服务器收到的这个结果显示在应有的界面上供用户查看。

    (4)把客户端比较复杂的查询改成服务器上的存储过程,把复杂的计算方到存储过程中。需要时,客户端只需想服务器发送一条指令,执行这个存储过程,你想要的结果就从服务器上传回来了。

    (5)链接表不是不能用,可以直接取链接表的数据使用,但不要让链接表参与复杂的计算和查询,这样会很浪费网络资源。

    只要做程序时多考虑一下数据在客户端和服务器之间传递的过程,你的程序就不会太差。

    我也是从链接表转到ADO和SQL SERVER语句上来的,虽然有点麻烦但很快乐,每次看到同样的功能用不同的方式做出来速度的天壤之别就会让人很兴奋,相信你也会很兴奋。

     

    楼上也有前辈说用远程桌面和终端服务来解决,这只是一个权宜之计。

    1。XP的远程桌面只能允许一个人同时使用,虽然经过变通的方法也可以让两人同时连接但也不是根本解决问题的根本途径;

    2。server版的windows支持2人同时使用远程桌面;

    3。终端服务只有server版的windows支持,XP貌似不支持。另外购买终端费用也不少,至于不付钱破解终端的方法网上有流传,我没试过。

    4。远程桌面和终端服务很难解决打印和数据导出的问题。因为你的操作都是在另外一台电脑上进行的,打印和数据导出当然也是相对于远程计算机而言的,如果你本地的打印机是连在机箱的打印机接口的,还可以把打印机带到远程电脑上,如果是USB接口的或是共享别人的打印机,你得想办法能让数据打印到本地来。数据导出就更难了,导出的全在远程计算机上。

    反正我觉得如果时间充裕的话,还是尽量学习一下ADO和sql编程,这个是根本的办法。 



    朱亦文 发表于:2010-12-19 13:50:44

    建议查询数据时使用存储过程,如果你的客户端是ADP,那么调用比较简单,如果是MDB,则通过传递查询实现。

     

    另外,终端服务器不失一个好的选择,只是购买许可证要花费一笔费用。



    韩志 发表于:2010-12-19 22:21:38

    朱老师,我调用存储过程基本上都是用ADO调用的,你还教过我用ADO怎么从存储过程中返回参数值的。

    用ADO很方便。



    总记录:16篇  页次:1/1 9 1 :