Один из способов облегчить вашу проблему - не использовать параметры.
Вместо
select col1, col2, col3 from table where id = :id
попробовать
select col1, col2, col3 from table where 1 = 2
В вашем коде вы можете найти и заменить 1 = 2
на id = 8675309
Пример
long ll_id = 8675309
long ll_start_pos
string ls_needle
string ls_replace
string ls_sql
ls_sql = dw_products.Getsqlselect()
//ls_sql = select col1, col2, col3 from table where 1 = 2
ls_needle = "1 = 2"
ls_replace = "id = " + string( ll_id )
ll_start_pos = Pos(ls_sql, ls_needle)
// Only enter the loop if you find ls_needle.
DO WHILE ll_start_pos > 0
// Replace ls_needle with ls_replace.
ls_sql = Replace(ls_sql, ll_start_pos,Len(ls_needle), ls_replace)
// Find the next occurrence of ls_needle.
ll_start_pos= Pos(ls_sql, ls_needle, ll_start_pos + Len(ls_replace))
LOOP
//Replace SQL
if dw_products.Setsqlselect(ls_sql) <> 1 then
Messagebox("Error setting SQL select",sqlca.sqlerrtext)
return 1