以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教老师,关于FOX使用SQL server数据库时数据的保存和动态更新时间问题!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=131)

--  作者:cpayinyuan
--  发布时间:2008/9/2 11:59:00
--  请教老师,关于FOX使用SQL server数据库时数据的保存和动态更新时间问题!

经过一天两夜的初步学习,对FOX也有了一些初步的了解,作为财务工作者,因为我对数据的安全性、以及远程网操作有较高的要求,所以我对FOX+SQLserver的编程方式很感兴趣,也抱有很大的期望。关于这种方式下,有几个问题不太明白,所以请教一下狐狸老师。
(1)当在FOX中用代码的方式,或者在表上直接修改的方式,对外部数据表进行了编缉操作时(例如增加、删除、修改等),这种对外部表的修改是当时在SQL server中生效(即在SQL表中保存这种修改),还是需要作一个保存操作时(或者操作一个什么代码命令)才有效呢?其他编程语言与SQL server混合编程时,一般的惯例都是修改后直接在表中保存,否则会造成看到的表与数据库中的表间数据不一致,尤其是出现意外(如断电)时,后果就更为严重。
(2)接上题,我们都知道,SQL server对多用户网络环境(包括远程网),有着很好的支持,我的问题是,当有多用户(有些还可能是远程用户)共同操作同一个SQL server表时,FOX如何处理多用户同时操作?或者说,当某一用户对某表进行了编缉操作时,其他的用户在什么时间才能看到这种外部表中数据的变化?其实与第(1)个问题有一定的联系,就是第一个编缉表的用户在编缉后需要作什么操作才能写回到SQL表中,其他正在查看该外部表的用户需要什么操作才能查看到已经编缉过的最新的数据(而不是修改前的已经过时的数据)?!
(3)或许我现在提这个建议早了一点,我建议在FOX中能够支持直接执行SQL server的脚本,因为按照其他语言的惯例,一般都是把大量的对表的操作都是直接执行SQL server的脚本,这样既安全,效率又快,不需要工作站和服务器的表之间频繁交换数据,这在单机或者局域网中可能不太关键,但在远程网环境下是非常关键的对速度的影响甚至是致命的。

总之,我很希望我本人,以及其他的忠心用户,能够早日用FOX+SQL server设计出一个比较正规、规范的系统(说实话,受当时的设计思路影响,我总感觉用易表设计出的系统不像一个正规的系统,请贺老师不要介意),但如果我们认真规划,用FOX+SQL server设计出的系统,或许就和其他语言设计出的系统达到同样的档次!没有什么区别!所以我也期盼着贺老师多提供这方面的指导和支持!


--  作者:狐狸爸爸
--  发布时间:2008/9/2 12:06:00
--  
1、要单击保存才行,你可以考虑加一个计划,定时自动保存,防止数据丢失
2、有同步表的功能,同步之后可以看到其它人编辑并保存的数据,你甚至可以在编辑某一行之前,先同步该行,以便查看是否有人编辑了该行。
3、不同的人可以同时编辑同一行的不同单元格,可以分别保存,互不影响。
4、我可以考虑开通exce语句,这个不需要编程,禁止才需要编程,也许下次更新就可以运行脚本了。
--  作者:smileboy
--  发布时间:2008/9/2 12:10:00
--  
试着回答你这个问题,说的不一定正确。

(1)和(2)、在网络环境下,有可能你正在修改的数据,已经被其他人修改,为了得到最新版本的数据,可以使用同步功能。

同步按钮位于“日常工作”功能区“数据”功能组,这是一个组合按钮。

需要注意的是:

如果对方虽然修改了数据,但是并未保存,此时同步是没有作用的。同步不会覆盖你已经做出的修改,例如你在第一列输入A,对方在第二列输入B并保存,那么同步之后,第一列的内容为A,第二列的内容为B。
(3)利用SQLCommand类执行SQL命令


--  作者:cpayinyuan
--  发布时间:2008/9/2 12:21:00
--  还是请教一下,FOX中有无“保存”功能的命令,如果这样,就可通以用代码实现保存!
还是请教一下,FOX中有无“保存”功能的命令,如果有,就可以用代码实现保存!如果没有,那就建议增加这样的命令!另外,建议,把这个“保存”函数可以通过参数把其功能再扩展一下,目前的保存按钮是保存所有文件,如果在系统中过于频繁的保存,会严重影响速度,不保存,作重要的操作时又担心安全性。我的建议是可以分项保存,便如把保存分为:保存表,保存窗口,保存报表,或者保存某一个表(或许还可细分为保存内部表、外部表、临时表、查询表),尤其是保存表的命令,是非常重要、关键的!这样,当作过重要的数据编缉时,我可以在代码中增加一个保存表的操作命令,就能很好的实现既安全又不影响速度!
--  作者:狐狸爸爸
--  发布时间:2008/9/2 12:26:00
--  

表有保存的方法,这样你可以保存所有表或者单个表。
现在的保存只保存修改过的行,速度非常快。
帮助中有关于提高保存速度的说明。



Save

保存数据。

语法:

Save()
Save(Setting)

Setting: 可选参数,是否保存设置。

例如单单保存数据:

DataTables("订单").Save()

 

同时保存数据和设置:

DataTables("订单").Save(True)

 

保存设置比较耗时,会影响保存速度。
菜单中的保存命令是同时保存数据和设置的。
以后你学会了设计菜单或窗口,你可以自己设计一个保存按钮,只保存数据,不保存设置,代码如下:

For Each dt As DataTable In DataTables
    dt.Save()

Next

 

对于一个成熟的、已经交付使用的项目,有时是没有必要保存设置的。


--  作者:cpayinyuan
--  发布时间:2008/9/2 12:30:00
--  谢谢老师,我试一下,刚才的问题我重发了一个新贴,您可以把它删除!抱歉!
发题。