2 回答

TA貢獻1946條經(jīng)驗 獲得超3個贊
它顯示了罪魁禍首是什么。
盡管我的神經(jīng)傾向于對該代碼進行許多更正,但我只會進行足夠的修改以使其在 VFP 和 C# 中都能正常工作:
function newId
parameter thisdbf
regional keynm, newkey, nOldSelect, lDone
keynm=padr(upper(thisdbf),50)
nOldSelect=select()
lDone=.f.
do while not lDone
select keyvalue from main!idkeys where keyname=keynm into array akey
if _tally=0
insert into main!idkeys (keyname) value (keynm)
loop
endif
newkey=akey+1
update main!idkeys set keyvalue=newkey where keyname=keynm and keyvalue=akey
if _tally=1
lDone=.t.
endif
enddo
Select (m.nOldSelect)
return newkey
改變的部分只與那個有關(guān)(if !empty(...)) block。

TA貢獻1883條經(jīng)驗 獲得超3個贊
問題是存儲過程中的這個變量聲明行:
regional keynm, newkey, cOldSelect, lDone
'regional' 關(guān)鍵字是舊的 FoxPro 2.6 for DOS\Windows 的保留。它僅用于由屏幕構(gòu)建器工具生成的程序。顯然,它仍然潛伏在 Visual FoxPro 中以支持將舊的 FoxPro 2.6 項目遷移到 Visual FoxPro 的功能,因為代碼在 VFP 中運行良好。但是 OLEDB 驅(qū)動程序不支持它。
無論如何,您需要更改存儲過程以使用:
local keynm, newkey, cOldSelect, lDone
... 并重新編譯它,為此您將需要 Visual FoxPro。確保沒有 OLEDB 或其他連接到它,然后在 Visual FoxPro 命令窗口中:
compile c:\path\to\mydatabase.dbc
- 2 回答
- 0 關(guān)注
- 342 瀏覽
添加回答
舉報