VFP缓冲表入门,掌握了它增删改更加得心应手

加菲猫的VFP 2021-12-22 10:11:56

VFP缓冲表入门
猫猫在做单表增删查改,修改了一条数据,但我不想保存,需要还原到原来的状态。
同样无论我去对表操作多少,增删改,都可以还原到最初的状态。

有人说,我重新打开表(本地DBF),重新下载表(SQLEXEC)但这样都会带来额外的操作,比如关闭表会引发GRID控件白屏等等。

而这一切在VFP中里面的功能超级简单,甚至还能一键更新到后台数据库。

通过缓冲,可以方便地检测并解决数据更新操作中的冲突:当前记录被复制到由 Visual FoxPro 管理的内存或磁盘区域。其他仍然可以同时访问原来的记录。当离开该记录或以编程方式更新该记录时,Visual FoxPro 尝试锁定该记录、检验没有被其他用户修改、然后写入变化。在尝试更新数据之后,也必须解决阻止将该变化写入原始表的冲突。

Visual FoxPro 具有两种缓冲类型:记录(行)缓冲和表缓冲。

单行记录每次要访问、修改和写入单个记录,选择记录缓冲。
记录(行)缓冲提供对多用户环境中其他用户数据更新操作影响最小的适当有效性检查机制。

要缓冲几条记录的更新,选择表缓冲。
表缓冲提供了处理一个表中几个记录或一对多关系中子表记录的最有效途径。

选择锁定模式:保守或开放

Visual FoxPro 以两种锁定模式提供缓冲:保守和开放。
在F/S共享文件架构中,大家打开的是同一个表,所以对缓冲的了解和掌握更加必要。

猫猫最近还见过一家企业现在还是利用共享文件夹F/S来做网络版ERP,最近他在咨询我怎么改进。

保守缓冲

保守缓冲防止共享文件夹F/S架构的其他用户访问你正在修改的特定记录或表。保守锁定为修改单个记录提供了最安全的环境,就是说,
保守+行缓冲:我改即我锁行了,你不能改我这一行了。
保守+表缓冲:我改即我锁表了,你不能改我这表了。

好处是:数据安全,不会出现,同一时刻只有一个人修改。
坏处是:效率较低

开放缓冲

开放缓冲锁定只在写入记录时获得,因次减少了共享文件夹F/S架构任何单个用户独占系统的时间。当在视图上使用记录或表缓冲时,Visual FoxPro 强制使用开放锁定。

如果你是C/S架构,就无所谓开放,保守了,我是大都数情况下习惯用表缓冲。

在C/S架构下,只有一个情况需要用行缓冲
比如后表有一张表,同时有很多人打开这个表进行修改,用户移动到下一记录,当前记录就要自动保存,下一条就要刷新当前值。

(不知道有没有哪些狐友实现了)

这个功能用CursorAdpater(CA)来实现,爽爆了。

用 CURSORSETPROP( ) 函数设置的 Buffering 属性值,决定了缓冲和锁定的方式。

下表总结了 Buffering 属性的有效值。

要启用使用该值
无缓冲。默认值。1
一修改就锁定记录、移动指针或发出 TABLEUPDATE( ) 时更新的保守+记录(行)锁定。2
修改时不锁,等到记录指针移动后再锁定并更新的开放记录(行)锁定。3
一修改即锁定记录、发出 TABLEUPDATE( ) 之后更新,保守表锁定。4
修改时不锁,等到发出 TABLEUPDATE( ) 后再锁定并更新编辑记录,开放表锁定。5

保守就是修改就锁,直到发出tablupdate命令更新后不锁。
开放就是修改不锁,直到发出tabupdate才锁并更新后不锁。

Buffering 的默认值,表为 1 而视图为 3。

如果使用缓冲访问远程数据,Buffering 属性为 3 (开放行缓冲) 或 5 (开放表缓冲)。

设置缓冲命令

CURSORSETPROP( cProperty [, eExpression] [,cTableAlias | nWorkArea])

cProperty参数固定为:Buffering
eExpression参数就为缓冲的值了

  1. – 设置行和表缓冲为 Off。记录锁定和数据写入与早期的 FoxPro 版本相同。(默认)
  2. – 设置保守行缓冲为 On。
  3. – 设置开放行缓冲为 On。
  4. – 设置保守表缓冲为 On。
  5. – 设置开放表缓冲为 On。

对于除 1(off) 以外的所有 Buffering 模式,SET MULTILOCKS 必须被设置为 ON。

cTableAlias参数
指定要设置其属性的表或临时表的别名。

nWorkArea
指定要设置其属性的表或临时表的工作区。如果为 nWorkArea 指定 0,CURSORSETPROP( ) 会设置用于所有后来表或临时表的环境设置。

####示例:开启一个表缓冲

SET MULTILOCKS ON
USE 教师
CURSORSETPROP("Buffering", 4,"教师")

划重点
Tableupdate命令配上缓冲再加上cusorAdaptery(CA)是一种超爽的存在。
可以实现一键SAVE,无需写任何的SQL语句。

配上祺佑三层开发框架(猫框),可以实现BS的一键SAVE。

更多资料http://www.sn58.cn/

...全文
271 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
shenlancwz1 2021-12-22
  • 打赏
  • 举报
回复

能不用缓冲就尽量不用。最好不要用打开表的方式操作。用sql语言操作最妥当。

加菲猫的VFP 2021-12-28
  • 举报
回复
@shenlancwz1 sql用缓冲非常好用,特别是搭配ca,我的框架大量使用,框架用户也是这个模式,其实都可以试试,不要局限。
内容概要:本文研究基于条件生成对抗网络(C-GAN)的风光联合出力极端场景生成方法,旨在应对风能和光伏发电出力的不确定性与波动性,提升电力系统在极端情况下的可靠性与稳定性。通过构建C-GAN模型,结合风速、光照强度等气象条件作为条件变量,生成符合实际统计特性的极端出力场景,为电力系统规划、调度及风险评估提供高价值的输入数据。文中详细阐述了C-GAN的网络结构设计、损失函数构建、训练流程及生成结果的评估方法,并通过Python代码实现验证了模型在捕捉极端场景特征方面的有效性。; 适合人群:具备一定Python编程基础和机器学习基础知识,从事新能源电力系统、智能电网、电力调度、场景生成与风险评估等相关领域的科研人员及工程师,尤其适合研究生及以上层次的研究者。; 使用场景及目标:①用于新能源电力系统中风、光出力不确定性建模与极端场景仿真;②支撑电力系统安全评估、备用容量配置、优化调度等决策过程;③为含高比例可再生能源的电网提供数据驱动的风险预警与应对策略研究工具; 阅读建议:建议读者结合提供的Python代码进行实践操作,重点关注C-GAN的条件输入设计、训练稳定性优化及生成样本的质量评估方法,同时可扩展应用于其他多能源耦合系统的场景生成任务中。
内容概要:本文围绕基于电流和功率两种模型预测控制(MPC)的三相并网逆变器闭环仿真展开研究,重点探讨了有限控制集模型预测控制(FCS-MPC)在并网逆变器中的应用。通过Simulink仿真平台构建系统模型,分别实现了电流预测与功率预测两种控制策略的闭环控制,详细分析了其在动态响应、稳态精度及抗干扰能力等方面的性能现。研究涵盖控制算法建模、系统仿真验证以及与传统控制方法的对比分析,深入探究了预测模型构建、代价函数设计和最优开关矢量选择等关键技术环节,旨在提升并网逆变器的电能质量、系统稳定性及对复杂电网工况的适应能力。; 适合人群:具备电力电子、自动控制理论基础,从事新能源发电、微电网或电力系统仿真实践的研发人员及高校研究生。; 使用场景及目标:①掌握模型预测控制在三相并网逆变器中的具体实现方法;②比较电流型与功率型MPC控制策略的优劣;③为高比例新能源并网系统的控制器设计提供仿真依据和技术参考。; 阅读建议:建议结合Matlab/Simulink环境动手复现文中仿真模型,重点关注预测模型构建、代价函数设计及开关矢量选择逻辑,同时可拓展至不同工况(如电网不平衡、负载突变)下的控制性能测试。
内容概要:本文深入探讨了AI大模型在网络安全领域的四大核心应用:智能漏洞挖掘、自动化代码审计、攻击路径自动分析以及AI辅助安全竞赛(CTF)。通过结合自然语言处理、多智能体协作、图神经网络与检索增强生成(RAG)等先进技术,AI实现了从漏洞发现、PoC生成、代码审计到攻击链路溯源的全流程自动化,显著提升了安全响应效率与准确性,并推动网络安全范式从被动防御向主动智能决策演进。文中还介绍了多个前沿工具与实战案例,展示了AI在提升漏洞检出率、降低误报率、加速解题过程等方面的卓越能力。; 适合人群:具备一定网络安全基础,从事安全研究、渗透测试、代码审计或CTF竞赛的相关技术人员,以及关注AI与安全融合发展的技术管理者。; 使用场景及目标:①利用AI实现CVE漏洞的快速PoC生成与验证;②开展高精度、低误报的自动化代码审计;③进行APT攻击的全链路溯源与威胁狩猎;④在CTF竞赛中借助AI压缩解题搜索空间、生成Exploit脚本,提升竞赛现。; 阅读建议:此资料强调AI在安全领域的工程化落地,建议读者结合实际工具(如REPOAUDIT、DeepAudit、FuzzingBrain等)进行实践操作,同时重视私有知识图谱构建与结构化Prompt设计,以充分发挥AI潜力并规避幻觉风险。

2,749

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧