这个是我在2002年做的一个VFP程序中实现的方法, 现在看来功能和VFP8,9中的CursorAdapter非常相似, 因为属性设置有许多相同的地方,我甚至怀疑CA就是就是在这样的基础上再包装出来的类.

以下是程序:

与数据库的连接:

nConnectHandle = sqlstringconnect("DRIVER=SQL Server;SERVER=" + cDbServer + ;
  ";UID=" + cUserName + ;
  ";PWD=" + cPassword + ;
  ";DATABASE=" + cDatabaseName)
 if nConnectHandle > 0 && 与服务器连接成功

endif

表单的init中:

local cSQLcommand

this.lockscreen = .f.

cSQLcommand = "select department.bmdm, department.bmmc, company.dwmc, department.dwxtbh, department.xtbh " + ;
 "from department, company where department.dwxtbh = company.xtbh order by company.dwdm, department.bmdm"
do while sqlexec(nConnectHandle, cSQLcommand, 'department') = 0 && 远程操作
enddo
= cursorsetprop('SendUpdates', .t., 'department')
= cursorsetprop('Tables', 'dbo.department', 'department')
= cursorsetprop('UpdatableFieldList', 'bmdm, bmmc, dwxtbh', 'department')
= cursorsetprop('UpdateNameList', 'bmdm dbo.department.bmdm, bmmc dbo.department.bmmc, dwxtbh dbo.department.dwxtbh, xtbh dbo.department.xtbh', 'department')
= cursorsetprop('KeyFieldList', 'xtbh', 'department')
with this.grid1
 .columncount = -1
 .recordsource = 'department'
 .recordsourcetype = 1
 .columns(1).header1.caption = '部门代码'
 .columns(2).header1.caption = '部门名称'
 .columns(3).header1.caption = '单位名称'
 .columns(4).header1.caption = '单位系统编号'
 .columns(5).header1.caption = '系统编号'
 .SetAll("DynamicBackColor","IIF(MOD(RECNO('department'),2)=0,RGB(255,255,255),RGB(230,230,255))","Column") &&交替显示白色和蓝色的记录
endwith

this.lockscreen = .f.

添加click:

local lResult, cBmmc

insert into department(bmdm, bmmc, dwxtbh) values('', '', 0)
do form d_bmkp to lResult
select department
if lResult
 if tableupdate(.t., .f., 'department')
  cBmmc = department.bmmc
  wait '添加成功' window nowait
  thisform.opentable()
  select department
  locate all for bmmc = cBmmc
  thisform.grid1.refresh
 else
  = tablerevert(.t., 'department')
  wait '添加失败' window nowait
 endif
else
 = tablerevert(.t., 'department')
endif

编辑click:

local lResult, cBmmc

do form d_bmkp to lResult
select department
if lResult
 if tableupdate(.t., .f., 'department')
  cBmmc = department.bmmc
  wait '编辑成功' window nowait
  thisform.opentable()
  select department
  locate all for bmmc = cBmmc
  thisform.grid1.refresh
 else
  = tablerevert(.t., 'department')
  wait '编辑失败' window nowait
 endif
else
 = tablerevert(.t., 'department')
endif

删除click:

if messagebox('你确认要删除吗?', 4 + 32 + 256, '信息') = 6 && YES
 delete in department
 if tableupdate(.t., .f., 'department')
  thisform.grid1.refresh
  wait '删除成功' window nowait
 else
  = tablerevert(.t., 'department')
  wait '删除失败' window nowait
 endif
endif

在VFP6中模拟CursorAdapter的功能的更多相关文章

  1. 实现CheckBox的三种选中状态(全选、半选、不选)在GridView中模拟树形的功能

    度娘了很多帖子,只说三种状态要用图片替换来做,但没找到有用的例子,被逼自己写了一个 三方控件肯定是很多的,如jstree,可以直接用 由于公司的UDS限制,不能上传图片,只能文字说明了. 就是要在gr ...

  2. 编写函数模拟strcpy()函数功能

    strcpy(字符数组1,字符串2) strcpy( )用于将字符串2复制到字符数组1中 /* strcpy(字符数组1,字符串2) strcpy( )用于将字符串2复制到字符数组1中 模拟strcp ...

  3. 【转】MySQL中增加sequence管理功能(模拟创建sequence)

    1.oracel可以直接支持sequence,但是mysql不支持sequence,因此我们要通过模拟sequence的方法在mysql中创建sequence.模拟sequence的方法:项目场景:项 ...

  4. Windows 10 版本 1507 中的新 AppLocker 功能

    要查看 Windows 10 版本信息,使用[运行]> dxdiag  回车 下表包含 Windows 10 的初始版本(版本 1507)中包括的一些新的和更新的功能以及对版本 1511 的 W ...

  5. js模拟实现继承功能

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  6. 在SoapUI中模拟用户操作

    SoapUI作为一款接口测试工具,具有极大的灵活性和拓展性.它可以通过安装插件,拓展其功能.Selenium作为一款Web自动化测试插件可以很好的与SoapUI进行集成.如果要在SoapUI中模拟用户 ...

  7. C#7.2——编写安全高效的C#代码 c# 中模拟一个模式匹配及匹配值抽取 走进 LINQ 的世界 移除Excel工作表密码保护小工具含C#源代码 腾讯QQ会员中心g_tk32算法【C#版】

    C#7.2——编写安全高效的C#代码 2018-11-07 18:59 by 沉睡的木木夕, 123 阅读, 0 评论, 收藏, 编辑 原文地址:https://docs.microsoft.com/ ...

  8. C# 中一些类关系的判定方法 C#中关于增强类功能的几种方式 Asp.Net Core 轻松学-多线程之取消令牌

    1.  IsAssignableFrom实例方法 判断一个类或者接口是否继承自另一个指定的类或者接口. public interface IAnimal { } public interface ID ...

  9. ListView模拟微信好友功能

    ListView模拟微信好友功能 效果图: 分析: 1.创建listView 2.创建数据 3.创建适配器 将数据放到呈现数据的容器里面. 将这个容器(带数据)连接适配器. 其实是直接在我们自己写的a ...

随机推荐

  1. Caliburn.Micro学习笔记(二)----Actions

    Caliburn.Micro学习笔记目录 上一篇已经简单说了一下引导类和简单的控件绑定 我的上一个例子里的button自动匹配到ViewModel事件你一定感觉很好玩吧 今天说一下它的Actions, ...

  2. WPF资源字典的使用【转】

    资源字典出现的初衷就在于可以实现多个项目之间的共享资源,资源字典只是一个简单的XAML文档,该文档除了存储希望使用的资源之外,不做任何其它的事情. 1.  创建资源字典 创建资源字典的过程比较简单,只 ...

  3. CSS备忘录

    1, 浮动框(float)会使得元素脱离文档流, 因此不占用文档空间; 因此当一个Div的子元素都为float时会导致该Div高度为0, 这一问题称为"高度塌陷" 为了解决这个问题 ...

  4. ResourceHacker(4.5.30)单文件绿色汉化版

    经常编译软件的人,肯定会使用一些编译和反编译的工具,ResourceHacker作为一款资源编译工具,非常的小巧好用,ResourceHacker没有任何广告,支持打开.exe..dll..scr.. ...

  5. bzoj4559: [JLoi2016]成绩比较

    感谢丁爷爷教我做这个题的后半部分. 首先,运用一发容斥原理,求出所有人与B神每门课分数相对关系的不同方案数. 这个似乎大(wo)家(lan)都(de)会(hui)了(yi),我就不说了,详见代码里的f ...

  6. oracle 表字段添加 修改 删除语法

    修改列名 alter table 表明 rename column rename 老列名 to 新列名添加 字段alter table 表名 add(字段名 类型):删除字段alter table 表 ...

  7. FastJson的简单实用

    一.FastJson的理解 在工作中,经常客服端需要和服务端进行通信,目前很多项目都采用JSON的方式进行数据传输,简单的参数可以通过手动拼接JSON字符串,但如果请求的参数过多,采用手动拼接JSON ...

  8. sql 知识点系统汇总

    提供性能: .服务器往往具有强大的计算能力和速度..避免把大量的数据下载到客户端,减少网络上的传输量. 第一章 T-SQL 语句 1.1数据类型 文本型 -- CHAR 定长型 <=8000字节 ...

  9. 中软培训第一周复习总结 --简单的HTML 与CSS

    一些需要记住的点: day1 HTML格式及简单标签: html 文件一般格式: 1 <html> 2 <head lang="en"> 3 <met ...

  10. BZOJ3747: [POI2015]Kinoman

    传送门 线段树经典运用. 设$last_i$表示上一个与$i$相同的类型.然后每次更新$[last[i]+1,i]$和$[last[last[i]]+1,last[i]]$的答案就行了. //BZOJ ...