一个关于VFP连编后的问题!
最近在学习VFP并做一个系统管理员登陆程序,程序调试时一切正常,当连编后,进入管理员密码修改时,出现错误提示:程序错误:不能更新临时表。以下是程序代码:publicadm...
最近在学习VFP并做一个系统管理员登陆程序,程序调试时一切正常,当连编后,进入管理员密码修改时,出现错误提示:
程序错误:不能更新临时表。
以下是程序代码:
public adm 放管理员的名称
public pas 放管理员的密码
thisform.load的代码如下:
if .not.dbused("mmsj")
OPEN DATABASE .\mmsj.dbc
endif
command1:功能:判断并修改管理员
if alltrim(adm)==""
messagebox("管理员错误!!",0+64+0,"错误")
thisform.release
else
if alltrim(thisform.text1.value)<>alltrim(pas) or alltrim(thisform.text2.value)==""
thisform.draw()
thisform.label5.caption="输入错误!!"
else
if alltrim(thisform.text2.value)==alltrim(thisform.text3.value)
if lower(right(alltrim(dbf()),7))<>alltrim("gly.dbf")
use gly
go top
endif
locate for 管理员=alltrim(adm)
if alltrim(管理员)==alltrim(adm)
replace 密码 with alltrim(thisform.text2.value)
thisform.label5.caption="修改成功!!"
else
messagebox("修改出错!!",0+64+0,"错误")
thisform.release
endif
use
else
thisform.draw()
thisform.label5.caption="确认密码输入错误!!"
endif
endif
endif
在管理员添加中也出现了类似情况!
是把数据库也编进去了。我全部都放进去了,连那个.ico图标也放进去了,不能吗:)?
回复3楼,调试时一切没问题。gly.dbf表有管理员、密码字段,而且都有记录的。在调试中,不会出现错误,只是在连编后才出现错误。
回复2楼、3楼,末卒VFP菜鸟一个,深知“舟无撑者不会进”,期望得两位指教,本人QQ为931684289 展开
程序错误:不能更新临时表。
以下是程序代码:
public adm 放管理员的名称
public pas 放管理员的密码
thisform.load的代码如下:
if .not.dbused("mmsj")
OPEN DATABASE .\mmsj.dbc
endif
command1:功能:判断并修改管理员
if alltrim(adm)==""
messagebox("管理员错误!!",0+64+0,"错误")
thisform.release
else
if alltrim(thisform.text1.value)<>alltrim(pas) or alltrim(thisform.text2.value)==""
thisform.draw()
thisform.label5.caption="输入错误!!"
else
if alltrim(thisform.text2.value)==alltrim(thisform.text3.value)
if lower(right(alltrim(dbf()),7))<>alltrim("gly.dbf")
use gly
go top
endif
locate for 管理员=alltrim(adm)
if alltrim(管理员)==alltrim(adm)
replace 密码 with alltrim(thisform.text2.value)
thisform.label5.caption="修改成功!!"
else
messagebox("修改出错!!",0+64+0,"错误")
thisform.release
endif
use
else
thisform.draw()
thisform.label5.caption="确认密码输入错误!!"
endif
endif
endif
在管理员添加中也出现了类似情况!
是把数据库也编进去了。我全部都放进去了,连那个.ico图标也放进去了,不能吗:)?
回复3楼,调试时一切没问题。gly.dbf表有管理员、密码字段,而且都有记录的。在调试中,不会出现错误,只是在连编后才出现错误。
回复2楼、3楼,末卒VFP菜鸟一个,深知“舟无撑者不会进”,期望得两位指教,本人QQ为931684289 展开
展开全部
看了你的代码,总的感觉 if语句太多,嵌套4层,最内层还是两个并列的,你的程序是如果adm==''就释放窗体,在adm不为空的,text1的内容等于pas或text2的内容不空,且text2的内容=text3的内容这些条件下,如果当前工作区打开的表不是gly.dbf(管理员),就打开gly,再定位 locate for 管理员=alltrim(adm),然后再 if alltrim(管理员)==alltrim(adm)
replace 密码 with alltrim(thisform.text2.value)
注意!注意!问题出在这里:
①我不知道你的gly.dbf表是否有 管理员这个字段,字符型的,如果没有请modi stru,如果有,请进行②;
②你的gly.dbf表是否有 密码这个字段,字符型的,如果没有请modi stru,如果有,请进行③;
③您输入的管理员的值肯定存在吗?如果不存在的话,locate for 后,记录就是 eof()为true,您就无法定位到指定的记录,replace 不能更新!
您应该在locate for 后,判断 FOUND( ) 的返回值,if FOUND( )= .T. then
replace 密码 with alltrim(thisform.text2.value)
thisform.label5.caption="修改成功!!"
endif
④如果您以上的都对(因为我不知道gly.dbf表结构),那么另一种可能是您将数据库mmsj.dbc或gly.dbf表设为只读,请检查它们的属性!
另有人讲,“把数据库也编译到程序中了?”及“ 数据库独立编译”,本人不明白他的本意。一个项目文件可以包含很多资源,在vfp中可以含.prg,.frm.frx,txt,自由表,数据库,图形图片图标等等资源文件,连编时、发布时完全可以含在里。
replace 密码 with alltrim(thisform.text2.value)
注意!注意!问题出在这里:
①我不知道你的gly.dbf表是否有 管理员这个字段,字符型的,如果没有请modi stru,如果有,请进行②;
②你的gly.dbf表是否有 密码这个字段,字符型的,如果没有请modi stru,如果有,请进行③;
③您输入的管理员的值肯定存在吗?如果不存在的话,locate for 后,记录就是 eof()为true,您就无法定位到指定的记录,replace 不能更新!
您应该在locate for 后,判断 FOUND( ) 的返回值,if FOUND( )= .T. then
replace 密码 with alltrim(thisform.text2.value)
thisform.label5.caption="修改成功!!"
endif
④如果您以上的都对(因为我不知道gly.dbf表结构),那么另一种可能是您将数据库mmsj.dbc或gly.dbf表设为只读,请检查它们的属性!
另有人讲,“把数据库也编译到程序中了?”及“ 数据库独立编译”,本人不明白他的本意。一个项目文件可以包含很多资源,在vfp中可以含.prg,.frm.frx,txt,自由表,数据库,图形图片图标等等资源文件,连编时、发布时完全可以含在里。
威孚半导体技术
2024-08-19 广告
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层...
点击进入详情页
本回答由威孚半导体技术提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询