中易网

在VFP表单中的新增,保存按钮的代码如何写

答案:3  悬赏:0  
解决时间 2021-02-10 00:06
在VFP表单中的新增,保存按钮的代码如何写
最佳答案
这是我的一个程序里用到的"添加/保存"和"编辑/还原"按钮的代码,仅供参考。

“添加/保存”:
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="保存(\ this.parent.cmdadd.Picture ='&mainpath\icon\wzsave01.bmp'
this.Parent.cmdedit.Caption="还原(\ 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="保存(\ thisformset.form1.mycmdbtns_shortcuts1.cmdadd.Picture ='&mainpath\icon\wzsave01.bmp'
thisformset.form1.mycmdbtns_shortcuts1.cmdedit.Caption="还原(\ 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="添加(\0
GOTO nPRecNoEdit
ENDIF
WAIT WINDOW '记录已还原!' AT 20,50 NOWAIT TIMEOUT 0.5 && 开始还原记录
cmdEdited=.F.
thisformset.form1.Refresh
ENDIF
全部回答
在表单设计窗口,双击安钮就会出现代码窗口查看。
新增按钮大致的写法是这样的 select 表名 go bott apend blank 增加空白记录 thisform.text1.setfoucs 设置光标处在文本框1中 保存按钮 判断输入资料是否完整 if empty(thisform.text1.value) messagebox("不能为空") return endif messagebox("保存成功") ... 代码输入不是一成不变的,还要根据实际情况变动 如有的文本框不与表字段绑定、使用表缓冲等 具体可以与我交流[email protected]
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
赣州市公安局交警支队车管所在哪里啊,我有事
名发廊发型连锁NO.01我想知道这个在什么地方
这个歌词是赵薇的那首歌来,我咋也想不起来了
PS时如何调节转手绘的肤色啊?
如何配置WIN2003的DNS服务器
有美国旅行签证,从加拿大能直接去坎昆吗
如何追宅女
隆鼻假体取出会疼吗
新乐便利南关店地址在哪,我要去那里办事
吉林九台农村商业银行珲春腾飞粮店ATM在什么
在家如何恭请地藏王菩萨
美的中央空调安装需要花费多少?
printf("%5e",-12.3);输出列数包括负号吗?
喝之工坊地址在什么地方,想过去办事
天天快递建瓯公司在什么地方啊,我要过去处理
推荐资讯
想做出境领队,目前没有导游证,怎么考出境领
久居兰室而不闻其香的意思
珍珠港事件里停泊在珍珠港的美国战列舰有多少
梦见别人剪了我的内裤
柳州市公安局新城派出所地址有知道的么?有点
上海公交卡上海青浦在那里退
PowerBuilder 12 与11.5的区别
前台数据传到后台乱码?
青海卫视英雄传说,一首英文歌,男声先嘶吼,女
港仔底这个地址在什么地方,我要处理点事
我在长春,想开个小超市上哪进货?有送货得吧
世纪华联人医店地址在什么地方,想过去办事
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?