append blank
Thisform.refresh()
"删除"按钮Click():
delete
skip
if eof()
go bottom
endif
Thisform.refresh()
这是我的一个程序里用到的"添加/保存"和"编辑/还原"按钮的含键代码,仅供参考。“添加/保存”:
LOCAL OrderSave_no,Ord_Temp_no
STORE '' TO OrderSave_no,Ord_Temp_no
SELECT &cPtbl_M
OrderSave_no=ALLTRIM(&cPKeyfld) &&将当前bh赋值给 OrderSave_no
IF '添加'$this.Caption &&如果是添加记录
IF MESSAGEBOX('要添加新记录吗?',48+0+4,"确定")=6
WAIT WINDOW '正在添加新记录,请稍候...' AT 20,50 NOWAIT &&开始添加新记录
STORE RECNO() TO nPRecNoEdit &&为还原时恢复到当前记录
Ord_Temp_no='待编号'+RIGHT(TTOC(DATETIME()),8) &&临时为新bh,避免其它用户生成bh时发生冲突
* SET ORDER TO 流程编号 &&为加快搜索速度,以bh为索引
DO CASE
CASE FIELD('开单人')='开单人' AND FIELD('下单日期')='下单日期'
INSERT INTO &cPtbl_M (&cPKeyfld,录入,录入时间,开单人,下单日期) VALUES (Ord_Temp_no,salesname,DATETIME(),salesname,DATETIME())
CASE FIELD('开单人')='开单人' AND !FIELD('下单日期')='下单日期'谈族巧
INSERT INTO &cPtbl_M (&cPKeyfld,录入,录入时间,开单人,下单日期) VALUES (Ord_Temp_no,salesname,DATETIME(),salesname,DATETIME())
OTHERWISE
INSERT INTO &cPtbl_M (&cPKeyfld,录入,录入时间) VALUES (Ord_Temp_no,salesname,DATETIME())
ENDCASE
* APPEND BLANK
* REPLACE 产品编号 WITH Ord_Temp_no,录入 WITH salesname, 录入时间 WITH DATETIME()
thisformset.form1.SetAll('backcolor',RGB(255,255,255),"mygrid")
this.Caption="保存(\<S)"
this.parent.cmdadd.Picture ='&mainpath\icon\wzsave01.bmp'
this.Parent.cmdedit.Caption="还原(\穗笑<R)"
this.Parent.cmdedit.Picture = '&mainpath\icon\wzundo01.bmp'
this.Parent.SetAll('ENABLED',.F.)
this.Enabled=.T.
this.Parent.cmdedit.Enabled = .T.
this.Parent.Refresh
&&将快捷键工具栏 mycmdbtns_shortcuts1 的可用状态调整为与本工具栏一致 2010.07.07
thisformset.form1.mycmdbtns_shortcuts1.cmdadd.Caption="保存(\<S)"
thisformset.form1.mycmdbtns_shortcuts1.cmdadd.Picture ='&mainpath\icon\wzsave01.bmp'
thisformset.form1.mycmdbtns_shortcuts1.cmdedit.Caption="还原(\<R)"
thisformset.form1.mycmdbtns_shortcuts1.cmdedit.Picture = '&mainpath\icon\wzundo01.bmp'
thisformset.form1.mycmdbtns_shortcuts1.SetAll('ENABLED',.F.)
thisformset.form1.mycmdbtns_shortcuts1.Enabled=.T.
thisformset.form1.mycmdbtns_shortcuts1.cmdedit.Enabled = .T.
thisformset.form1.mycmdbtns_shortcuts1.Refresh
&&将快捷键工具栏 mycmdbtns_shortcuts1 的可用状态调整为与本工具栏一致
thisformset.form1.SetAll('readonly',.F.,"mygrid")
thisformset.form1.SetAll('readonly',.F.,'mytxtbox')
thisformset.form1.SetAll('readonly',.F.,'mytxtbox_keyfld')
thisformset.form1.SetAll('readonly',.F.,'combobox')
thisformset.form1.SetAll('readonly',.F.,'myeditbox')
thisformset.form1.SetAll('readonly',.F.,'myspinner')
thisformset.form1.SetAll('readonly',.F.,'mycombobox')
* WAIT WINDOW '准备click。。。。' AT 20,50
* WAIT WINDOW '准备click。。。。Click结束...' AT 20,50
thisformset.form1.mygridcontainer1.MyGrid1.SetFocus
* thisformset.form1.refresh
WAIT WINDOW '新记录已添加,请继续编辑...' AT 20,50 NOWAIT TIMEOUT 0.5 &&准备编辑添加后的新记录
cmdEdited=.T.
* thisformset.form1.cmdAutono.click
ENDIF
ELSE &&如果是保存记录
WAIT WINDOW '正在保存记录,请稍候......' AT 23,50 NOWAIT &&在子表保存之前先将父表的保存,因行缓冲下,父表可能已被保存而没有保存到修改时间等信息
SELECT &cPtbl_M
IF '3'$GETFLDSTATE(-1)=.T. AND '4'$GETFLDSTATE(-1)=.F.&&若是新添加的记录且没有更改过,则询问是否放弃该记录
IF MESSAGEBOX('您添加了一条新记录,但未做过任何编辑!'+CHR(13)+CHR(13)+'是要放弃编辑该记录吗? 此记录将不会被保存!',32+4,"确定")=6
=TABLEREVERT(.t.)
cmdEdited=.F.
ELSE
RETURN &&若选择否跳出程序
ENDIF
ELSE &&若是新添加已更改过或非新添加的记录
* SELECT lc_lcb_zb &&准备保存子表 行缓冲下无法正确保存每行的录入及修改时间
* SET EXACT ON &&忽略尾部空格
SET COLLATE TO "PINYIN" &&update命令使用pinyin模式索引速度比使用machine模式索引快数百倍
UPDATE &cPtbl_D SET 录入=ALLTRIM(salesname),录入时间=DATETIME() WHERE '4'$GETFLDSTATE(-1)=.T. AND &cPKeyfld=OrderSave_no &&AND 流程编号=OrderSave_no
UPDATE &cPtbl_D SET 修改=ALLTRIM(salesname),修改时间=DATETIME() WHERE '2'$GETFLDSTATE(-1)=.T. AND !LEFT(GETFLDSTATE(-1),1)='2' AND &cPKeyfld=OrderSave_no &&AND 流程编号=OrderSave_no
=tableupdate(.T.,.T.,'&cPtbl_D')
unlock
* IF ALLTRIM(流程编号)=='' OR '待编号'$流程编号=.T. &&检查bh是否为空或待编号
* IF MESSAGEBOX('编号不能为空或待编号!'+CHR(13)+CHR(13)+'是要放弃编辑该记录吗? 此记录将不会被保存!',48+0+4,"确定")=6
*=TABLEREVERT(.t.)
* ELSE
*RETURN
* ENDIF
* ELSE &&检查过记录更改状态和bh后,开始保存数据
UPDATE &cPtbl_M SET 录入=ALLTRIM(salesname),录入时间=DATETIME() WHERE '4'$GETFLDSTATE(-1)=.T.&&新添加的记录
UPDATE &cPtbl_M SET 修改=ALLTRIM(salesname),修改时间=DATETIME() WHERE '2'$GETFLDSTATE(-1)=.T. AND !LEFT(GETFLDSTATE(-1),1)='2' &&如果不是新添加记录且更改过
*=TABLEUPDATE(.T.)
=tableupdate(.T.,.T.,'&cPtbl_M')
unlock
* ENDIF
ENDIF
&&保存后处理命令按钮及界面 Begin
this.Caption="添加(\<A)"
this.Picture ='&mainpath\icon\wznew01.bmp'
this.Parent.cmdedit.Caption="编辑(\<E)"
this.Parent.cmdedit.Picture ='&mainpath\icon\wzedit01.bmp'
this.Parent.SetAll('ENABLED',.T.)
&&将快捷键工具栏 mycmdbtns_shortcuts1 的可用状态调整为与本工具栏一致 2010.07.07
thisformset.form1.mycmdbtns_shortcuts1.cmdadd.Caption="添加(\<A)"
this.Picture ='&mainpath\icon\wznew01.bmp'
thisformset.form1.mycmdbtns_shortcuts1.cmdedit.Caption="编辑(\<E)"
thisformset.form1.mycmdbtns_shortcuts1.cmdedit.Picture ='&mainpath\icon\wzedit01.bmp'
thisformset.form1.mycmdbtns_shortcuts1.SetAll('ENABLED',.T.)
&&将快捷键工具栏 mycmdbtns_shortcuts1 的可用状态调整为与本工具栏一致 2010.07.07
thisformset.form1.SetAll('readonly',.t.,"mygrid")
thisformset.form1.SetAll('backcolor',RGB(245,244,235),"mygrid")
thisformset.form1.SetAll('readonly',.T.,'mytxtbox')
thisformset.form1.SetAll('readonly',.T.,'mytxtbox_keyfld')
thisformset.form1.SetAll('readonly',.T.,'combobox')
thisformset.form1.SetAll('readonly',.T.,'myeditbox')
thisformset.form1.SetAll('readonly',.T.,'myspinner')
thisformset.form1.SetAll('readonly',.T.,'mycombobox')
thisformset.form1.setall('fontbold',.F.,'mytxtbox')
this.Parent.Refresh
&&保存后处理命令按钮及界面 End
SELECT &cPtbl_M
* SET ORDER TO &cPKeyfld &&无此句Locat运行需要1.950秒,有此句则为8.561秒(共享情况下,单机运行速度飞快)
LOCATE FOR &cPKeyfld=OrderSave_no
WAIT WINDOW '记录已保存!' AT 23,50 NOWAIT TIMEOUT 0.8
cmdEdited=.F.
ENDIF
SELECT &cPtbl_M
thisformset.form1.refresh
"编辑/还原":
SELECT &cPtbl_M
IF RECCOUNT()<1 OR BOF()=.T. OR EOF()=.T.
RETURN
ENDIF
IF "编辑"$this.Caption
WAIT WINDOW '准备编辑记录,请稍候...' AT 20,50 NOWAIT &&开始添加新记录
SELECT &cPtbl_M &&避免在子表时,有时会出现锁定失败的情况
SET FILTER TO &&执行筛选后如果没有找到记录,则此时点编辑会提示"其它用户正在编辑记录" -- 2010.6.16
unlock
IF LOCK()=.f.
WAIT WINDOW '其它用户正在编辑该记录,请稍候再试!' AT 24,50 TIMEOUT 3
ELSE
SELECT &cPtbl_M
STORE RECNO() TO nPRecNoEdit
thisformset.form1.SetAll('backcolor',RGB(255,255,255),"mygrid")
this.Caption = "还原(\<R)"
this.Picture = '&mainpath\icon\wzundo01.bmp'
this.parent.cmdadd.Caption="保存(\<S)"
this.parent.cmdadd.Picture ='&mainpath\icon\wzsave01.bmp'
this.Parent.SetAll('ENABLED',.F.)
this.Enabled = .T.
this.Parent.cmdadd.Enabled = .T. &&2007.12.19
&&将快捷键工具栏 mycmdbtns_shortcuts1 的可用状态调整为与本工具栏一致 2010.07.07
thisformset.form1.mycmdbtns_shortcuts1.cmdedit.Caption = "还原(\<R)"
thisformset.form1.mycmdbtns_shortcuts1.cmdedit.Picture ='&mainpath\icon\wzundo01.bmp'
thisformset.form1.mycmdbtns_shortcuts1.cmdadd.Caption="保存(\<S)"
thisformset.form1.mycmdbtns_shortcuts1.cmdadd.Picture ='&mainpath\icon\wzsave01.bmp'
thisformset.form1.mycmdbtns_shortcuts1.SetAll('ENABLED',.F.)
thisformset.form1.mycmdbtns_shortcuts1.cmdedit.Enabled = .T.
thisformset.form1.mycmdbtns_shortcuts1.cmdadd.Enabled = .T.
&&将快捷键工具栏 mycmdbtns_shortcuts 的可用状态调整为与本工具栏一致 2010.07.07
thisformset.form1.SetAll('readonly',.F.,"mygrid")
thisformset.form1.SetAll('readonly',.F.,'mytxtbox')
thisformset.form1.SetAll('readonly',.F.,'mytxtbox_keyfld')
thisformset.form1.SetAll('readonly',.F.,'combobox')
thisformset.form1.SetAll('readonly',.F.,'myeditbox')
thisformset.form1.SetAll('readonly',.F.,'myspinner')
thisformset.form1.SetAll('readonly',.F.,'mycombobox')
WAIT WINDOW '已进入编辑状态,请继续...' AT 20,50 NOWAIT TIMEOUT 0.5 &&已进入编辑状态
cmdEdited=.T.
ENDIF
ELSE
WAIT WINDOW '正在还原记录,请稍候...' AT 20,50 NOWAIT &&开始还原记录
BEGIN TRANSACTION&&为使取消还原时恢复到初始状态
LOCAL cKeyValue
STORE '' TO cKeyValue
LOCAL isedited &&判断父子表是否被修改过
SELECT &cPtbl_M
LOCATE FOR '2'$GETFLDSTATE(-1)=.T. OR '4'$GETFLDSTATE(-1)=.T.
IF FOUND()=.T.
STORE .T. TO isedited
ELSE
STORE .F. TO isedited &&如果父表没有被修改过,再判断子表是否被修改
SELECT &cPtbl_D
LOCATE FOR '2'$GETFLDSTATE(-1)=.T. OR '4'$GETFLDSTATE(-1)=.T.
IF FOUND()=.T.
STORE .T. TO isedited
ELSE
STORE .F. TO isedited
ENDIF
ENDIF
IF "还原"$this.Caption=.t. AND isedited=.T. &&若记录修改过
IF MESSAGEBOX('确实要还原记录吗?刚才所录入的数据将不被保存!'+CHR(13)+CHR(13)+'Would you like to revert? Revised part will not be saved! '+CHR(13)+CHR(13)+'注: 因主编号唯一,仅能还原到主编号生成后的位置!',32+1,'确认还原 Warning')=1
WAIT WINDOW '正在还原记录,请稍候...' AT 20,50 NOWAIT &&开始还原记录
ELSE &&取消还原
ROLLBACK &&为使取消还原时恢复到初始状态
* SELECT &cPtbl_M
* LOCATE FOR '3'$GETFLDSTATE(-1)=.T. &&如果是有新添加但未做过任何修改的记录
* IF FOUND()=.T.
* =TABLEREVERT(.T.)
* ENDIF
* SELECT &cPtbl_D
* LOCATE FOR '3'$GETFLDSTATE(-1)=.T. &&如果是有新添加但未做过任何修改的记录
* IF FOUND()=.T.
*=TABLEREVERT(.T.)
* ENDIF
* SELECT &cPtbl_M
* LOCATE FOR &cPKeyfld=cKeyValue
* thisformset.myRefreshData &&通过表单集的自定义方法myRefreshData刷新数据
RETURN
ENDIF
ENDIF
END TRANSACTION &&为使取消还原时恢复到初始状态
SELECT &cPtbl_M
=TABLEREVERT(.t.)
UNLOCK
SELECT &cPtbl_D
=TABLEREVERT(.t.)
UNLOCK
this.parent.cmdadd.Caption="添加(\<A)"
this.parent.cmdadd.Picture ='&mainpath\icon\wznew01.bmp'
this.Caption="编辑(\<E)"
this.Picture ='&mainpath\icon\wzedit01.bmp'
this.Parent.SetAll('ENABLED',.T.)
&&将快捷键工具栏 mycmdbtns_shortcuts1 的可用状态调整为与本工具栏一致 2010.07.07
thisformset.form1.mycmdbtns_shortcuts1.cmdadd.Caption="添加(\<A)"
thisformset.form1.mycmdbtns_shortcuts1.cmdadd.Picture ='&mainpath\icon\wznew01.bmp'
thisformset.form1.mycmdbtns_shortcuts1.cmdedit.Caption="编辑(\<E)"
thisformset.form1.mycmdbtns_shortcuts1.cmdedit.Picture ='&mainpath\icon\wzedit01.bmp'
thisformset.form1.mycmdbtns_shortcuts1.SetAll('ENABLED',.T.)
&&将快捷键工具栏 mycmdbtns_shortcuts1 的可用状态调整为与本工具栏一致 2010.07.07
thisformset.form1.SetAll('backcolor',RGB(245,244,235),"mygrid")
thisformset.form1.SetAll('readonly',.T.,"mygrid")
thisformset.form1.SetAll('readonly',.T.,'mytxtbox')
thisformset.form1.SetAll('readonly',.T.,'mytxtbox_keyfld')
thisformset.form1.SetAll('readonly',.T.,'combobox')
thisformset.form1.SetAll('readonly',.T.,'myeditbox')
thisformset.form1.SetAll('readonly',.T.,'myspinner')
thisformset.form1.SetAll('readonly',.T.,'mycombobox')
thisformset.form1.setall('fontbold',.F.,'mytxtbox')
this.Parent.Refresh
SELECT &cPtbl_M
IF RECCOUNT()>0
GOTO nPRecNoEdit
ENDIF
WAIT WINDOW '记录已还原!' AT 20,50 NOWAIT TIMEOUT 0.5 &&开始还原记录
cmdEdited=.F.
thisformset.form1.Refresh
ENDIF
在名为“修改”的那个按钮的click属性中增加类似以下代码:
if
this.Parent.Text2.value="123456"
&&123456为预设的密码,可以随便设置
replace
表的数据源是学生.
学号
with
this.Parent.txt学号.value
,
表的数据源是学生.姓名
with
this.Parent.txt姓名.value……
else
messagebox
("密搜闷码错误!不能修改数据。",48,"卖誉提示信息")
endif
replace语句中,修改数据库记录的格式是:
replace
字段名
with
要修改的内容
,
字段名2
with
要修改的内容……
上面的示例中,假设表名为“表的数据源是学生”,字段名分别为”中漏段学号“、”姓名“……
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)