在VFP6中模拟CursorAdapter的功能

    这个是我在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

posted @ 2014-01-22 15:17  pzw  阅读(355)  评论(0编辑  收藏  举报