在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