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