這個簡單的pb動态報表就是報表的列什麼的都固定。但是查詢條件可以随心所欲的設定。
首先做一個報表,最好不要排序,隻寫必要的條件。
然後再程式中根據具體的使用者指定的條件構造一個where語句。
假設查詢條件串在 中,即
g_print_sql =" where ?????? order by ?????"
然後我們重新構造查詢語句
string my_sql=""
integer where_pos
my_sql=dw_2.getSqlselect()
where_pos=pos(my_sql,"WHERE")
if where_pos > 0 then
my_sql=mid(my_sql,1,where_pos - 1)
end if
g_print_sql = my_sql + g_print_sql
把最新的查詢語句傳輸給報表,重新查詢
dw_2.reset()
dw_2.SetSQLSelect(g_print_sql)
dw_2.retrieve()
這樣,整個程式就搞定了。
開始的時候我沒有去取原來的查詢串進行截取,而是重新寫的查詢串。總是在查詢的時候出錯。說什麼 powerbuilder only suports 18 decimal digits.我估計是現寫的查詢語句與原來的建立報表時給定的查詢語句有不同之處。為了避免這個問題。我就想出了。取報表的原串截取,再附加新的查詢條件的方法。