2012-08-25 34 views
0

這段代碼有什麼問題。在插入新的序列號之前,我正在檢查數據庫中是否有可用記錄。當我輸入任何可用的記錄時,它會拋出錯誤信息:PowerBuilder查找函數拋出一個錯誤「表達式無效」

「表達式無效」。 (經典的PowerBuilder 12.5和SQL Server 2008 )

If This.GetColumnName() = "serial_No" Then 
long ll_serial 
    ll_serial=dw_newrecord.find(data, 1, dw_newrecord.rowcount()) 
    if ll_serial>0 then 
    messagebox("validation error", "The record already exists") 
    return 1 
end if 
End If 
+0

當你調用'.find'時,'data'的值是多少?它可能是一個無效的sql表達式... –

回答

1

這可能是您data表達有語法錯誤。它可能是一些錯誤的類似代碼的缺少引號,或者可能是列名不正確。

爲了幫助調整過濾器或查找表達式,可以通過行/過濾器菜單在數據窗口設計屏幕中對其進行測試。

長期編碼設計的更好解決方案是將Datawindow Debug Machine(由我的同事製作)集成到您的項目中。它是數據窗口表達式原型的寶貴工具,用於查找,過濾,還可以在數據窗口中創建/修改動態對象。雖然正確地與項目的數據窗口祖先進行了接口,但它可以幫助使用過濾器並找到像這樣的表達式錯誤。

編輯:由於RealHowTo注意到,該工具已被更新。這裏是current latest version(但沒有更新演示截屏)。

+1

如果這個腳本來自像ItemChanged這樣的標準事件,並且Data是一個系統提供的參數,那麼它看起來像你想要編碼的是Find(「serial_No =」+數據,1,RowCount())如果列是數字,或者Find(「serial_No ='」+ Data +「'」,1,RowCount())是字符串。 – Terry

+0

@Terry,問題與查找功能,我改變它到你的答案,它的工作!, ll_record = ds.find(「Serial_No ='」+ Data +「'」,1,ds.RowCount()) – Wepex

+0

漂亮的工具!鏈接到最新版本:http://geni.embeddingperl.com/index.php?post/2012/01/23/My-Datawindow-DebugMachine-v2.4 – RealHowTo

相關問題