調用存儲過程修改表格某一字段的值

chjpeng 2002-12-30 03:18:26
請教一個update表格時自動調用存儲過程
存儲過程要實現修改表格某一字段的值
...全文
114 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
chjpeng 2003-01-08
  • 打赏
  • 举报
回复
好像存儲過程不可以直接對表格進行修改的(是本表),好像要調用什么系統機制來獲得表名和字段名,再來更新的
因是在表單里面觸發的,在表單的數據環境里面已經包含了這個表,別名同表格名
chjpeng 2003-01-08
  • 打赏
  • 举报
回复
算了,還是自己用其他方法解決
設一個全局變量editkey="0",edit cmdButton的click事件令editkey="1"
在save cmdButton的click事件中加入:
select bctb
if editkey="1"
replace modi_by with suserid
replace modi_date with date()
editkey="0"
endif
不理想也算可以實現
謝謝樓上各位的回答!
magnetmoon 2003-01-07
  • 打赏
  • 举报
回复
同一个表也可以改,如果要移动记录指针,可能要用不同的别名打开,
xiolig 2003-01-07
  • 打赏
  • 举报
回复
to 明月:
如果是同一个表呢?
magnetmoon 2003-01-07
  • 打赏
  • 举报
回复
我是这样测试的,你可以参考一下:
目的:通过改表asub的值,来自动修改表asub2的值.
1.
modi proc

function ub()
select asub2
editkey="1"
if editkey="1"
replace ord_id with 'suserid'
replace mat_id with 'date()'
else
editkey="0"
endif
return .t.
endfunc
2.
use asub
modi stru
在Update trigger写ub()
3.
use asub
brow
随便改几个值.
4.
use asub2
brow
值变了呀.


chjpeng 2003-01-07
  • 打赏
  • 举报
回复
還是錯誤提示:無法更新暫存資料表格
我是用的replace,用update不行,提示程序錯誤,更新不需要where作條件判斷
>>并不是在表單中更新或是在表單中調用,而是在表格的觸發式程序中的更新觸發式程序中調用
magnetmoon 2003-01-07
  • 打赏
  • 举报
回复
我试了一下,可以更新呀,并没出现错误.
你退出vfp,重新进入试试
chjpeng 2003-01-07
  • 打赏
  • 举报
回复
是表bctb,
返回.t.結果還是一樣的,還是會出現如上的錯誤提示
magnetmoon 2003-01-07
  • 打赏
  • 举报
回复
你没仔细看我的代码,一定要返回.t./.f.
modi_by及modi_date是字段名,它们在哪个表中?
chjpeng 2003-01-06
  • 打赏
  • 举报
回复
liujianjun_(流星尔):
謝謝你的回答,不過你說的好像是建立sql存儲過程吧?我問的是建立FoxPro的存儲過程,來實現更新表格,是在更新表格update table時自動調用這個過程的
流星尔 2003-01-06
  • 打赏
  • 举报
回复
在企业管理器的存储过程中选择新建,选存储过程
然后加入
create proc procname
as
update tablename set fieldname=newvalue where ...
chjpeng 2003-01-06
  • 打赏
  • 举报
回复
可以說是不需要其它代碼參與的,例如我在一個form里修改一個表格,存盤時系統會自動觸發表格的update事件,我想在這個事件觸發時執行一個過程,執行修改這個表格的兩個字段為新值
我寫了個這樣的程序:
function _updatetb()
select bctb
*bctb是表格名,上面一句要不要都一樣
if editkey="1"
*editkey是個全局變量
replace modi_by with suserid
replace modi_date with date()
else
editkey="0"
endif
*modi_by及modi_date是字段名,suserid是個全局變量
endfunc

更新表格時會出現錯誤提示:無法更新暫存資料表格
不知是什么原因?
magnetmoon 2003-01-06
  • 打赏
  • 举报
回复
把你的代码帖出来.
xiolig 2003-01-06
  • 打赏
  • 举报
回复
关注中:是不是不能在触发器中更新本表呢?
chjpeng 2003-01-06
  • 打赏
  • 举报
回复
還是不行,提示錯誤:驗証規則中出現不正確的遞回
magnetmoon 2003-01-06
  • 打赏
  • 举报
回复
1.
modi proc
2.
func sp_ru()
update tablename set fieldname=newvalue where ...
return .t.
3.
modi stru
在Update trigger写sp_ru()

chjpeng 2002-12-30
  • 打赏
  • 举报
回复
存儲過程怎么寫?很簡單一個問題,誰來幫幫忙啊?

2,722

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧