string r_czyxm,r_czyxm1,r_shr,r_shbj,r_zhr,g_id
integer r_row,net
r_row=dw_wgrk.getrow()
r_czyxm=dw_wgrk.getitemstring(r_row,'shr')
r_shbj=dw_wgrk.getitemstring(r_row,'shbj')
if r_shbj='Y' then
messagebox('提示:','該入庫單已經審核!')
else
select czyxm into :r_czyxm1 from czyxxb where czybh=:g_id ;
select czyxm into :r_shr from czyxxb where czyqx like '外購審核%';
if r_czyxm1 <> r_shr then
messagebox('提示','您無權審核!')
else
net=messagebox('提示','是否真的要進行審核操作?',exclamation!,yesno!,2)
if net=2 then return
dw_wgrk.setitem(r_row,'shr',r_shr) //審核人
dw_wgrk.setitem(r_row,'shbj','Y') //審核標記
dw_wgrk.accepttext()
messagebox('提示:','審核成功!')
cb_bc.triggerevent(clicked!)
end if
end if
這是一個執行審核的代碼,但是每次執行時都提示“無權審核”,但操作員明明是有審核權限,請問是怎么回事?麻煩幫忙解答下,非常感謝
uj5u.com熱心網友回復:
一、DEBUG一下變數是否完全一樣二、trim試試看。
uj5u.com熱心網友回復:
檢查一下g_id的值為多少
messagebox(r_czyxm1 ,r_shr )
根據值,查找問題所在
uj5u.com熱心網友回復:
select czyxm into :r_czyxm1 from czyxxb where czybh=:g_id ;select czyxm into :r_shr from czyxxb where czyqx like '外購審核%';
第二句再加一個where條件
select czyxm into :r_shr from czyxxb where czybh=:g_id and czyqx like '外購審核%';
其實樓主只要一個陳述句就可以了
select czyqx into :czyqx from czyxxb where czybh=:g_id ;
再判斷一下czyqx是不是外購審核
uj5u.com熱心網友回復:
還是沒有解決呀,哪位高手幫幫忙uj5u.com熱心網友回復:
每次執行時都提示“無權審核” 你用select陳述句得到的r_czyxm1,r_shr它們始終不相等,你要看這兩個變數uj5u.com熱心網友回復:
兩條陳述句取出來的肯定不是同一個操作員的姓名
uj5u.com熱心網友回復:
啥程式?uj5u.com熱心網友回復:
在
select czyxm into :r_czyxm1 from czyxxb where czybh=:g_id ;
select czyxm into :r_shr from czyxxb where czyqx like '外購審核%';
這兩條陳述句后,分別添加如下代碼以先確定SQL 執行成功:
if sqlca.sqlcode <> 0 then
messagebox('提示', '資料檢索錯誤:~n' + sqlca.sqlerrtext, stopsign!)
return
end if
uj5u.com熱心網友回復:
select czyxm into :r_czyxm1 from czyxxb where czybh=:g_id ;select czyxm into :r_shr from czyxxb where czyqx like '外購審核%';
肯定是這兩句沒取對值,MESSAGEBOX看看
uj5u.com熱心網友回復:
怎么還是不行呢?幫幫忙啊uj5u.com熱心網友回復:
select czyxm into :r_shr from czyxxb where czyqx like '外購審核%';這一句可能回傳的czyxm包含多個,無法取到正確的值,改為這樣:
...
...
...
int li
select count(1) into :li from czyxxb where czybh = :g_id and czyqx like '外購審核%';
if sqlca.sqlcode <> 0 then
messagebox('提示', '資料檢索錯誤:~n' + sqlca.sqlerrtext, stopsign!)
return
end if
if li <= 0 then
messagebox('提示','您無權審核!')
else
...
...
uj5u.com熱心網友回復:
不明白g_id 什么時候賦值的飄過。。。。。。。。還有,代碼很不整齊哦。以后只有你一個維護這段代碼嗎?uj5u.com熱心網友回復:
確實g_id沒賦值,為''
uj5u.com熱心網友回復:
哥們,如果沒看錯的話,你肯定是select czyxm into :r_czyxm1 from czyxxb where czybh=:g_id ;
select czyxm into :r_shr from czyxxb where czyqx like '外購審核%';
這兩句中的一句表名寫錯了, 同一個表中怎么會有兩個欄位資料是相同的呢?
再仔細看看
還是說你czyxxb表中有3個欄位,分別是czybh,czyxm和czyqx,真是這樣的話你就不需要取2次資料作判斷啊
uj5u.com熱心網友回復:
select czyxm into :r_shr from czyxxb where czyqx like '外購審核%';這條陳述句只能得到czyxxb表中第一個有'外購審核%'的權限的人姓名,正好不是當前操作員。
說明czyxxb表中不止一個人有'外購審核%'的權限。
所以要修改select陳述句的where條件,用來判斷當前操作員是否有'外購審核%'的權限。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/79305.html
標籤:腳本語言
