读书人

动态创建数据窗口出错解决方案

发布时间: 2012-02-25 10:01:48 作者: rapoo

动态创建数据窗口出错
以下动动态创建数据窗口函数出错,请高手指教
//功能:根据传入的数据库名和表名创建显示表内容的数据窗口
//参数:adb_name数据库名
// atb_name数据库中的表名

string ls_sql , ls_style ,ls_syntax ,ls_errmsg ,ls_errors
ls_sql="select * from "+adb_name+".."+atb_name+" ; "

//动态创建数据窗口
dw_1.setredraw(false)
dw_1.reset()
ls_style="style(type=Grid)"

sqlca.autocommit=TRUE
ls_syntax=SQLCA.SyntaxFromSql(ls_sql,ls_style,ls_errmsg); //为动态创建数据窗口设置语法
sqlca.autocommit=FALSE

messagebox("数据窗口设置语法","语法:"+ls_syntax)
if len(ls_errmsg)>0 then
messagebox("创建数据窗口语法失败","表名:"+atb_name)

else
int i
i=dw_1.Create(ls_syntax , ls_errors) ; //此句出错 返回值为-1
messagebox("创建数据窗口失败","返回:"+string(i))
if len(ls_errors)>0 then
messagebox("创建数据窗口失败","错误:"+ls_errors)

end if
end if

messagebox("创建数据窗口语法","语法:"+ls_sql)
//检索数据
dw_1.settransobject(sqlca);
dw_1.retrieve();

dw_1.setredraw(true)

messagebox("数据窗口","行数:"+string(dw_1.retrieve()))


[解决办法]
没看出什么问题。我是这么写的:

C/C++ code
//====================================================================// 事件: .gf_create_ds()//--------------------------------// 描述: 全局函数,用SQL 语句构造 datastore//--------------------------------// 参数://     reference      transaction       at_trans        //     reference    string       as_sql          //     reference    datastore    ad_datastore    //--------------------------------// 返回:  boolean//--------------------------------// 作者:    Wangenu        日期: 2009年12月17日//--------------------------------//    Copyright(c) 2009  Wangenu(TM).//--------------------------------// 修改历史:////====================================================================if not isvalid(ad_datastore) then ad_datastore = create datastorestring ls_errsyntaxfromSQLstring ls_errcreatestring ls_newsyntax                    at_trans.autocommit = truels_newsyntax = at_trans.syntaxfromsql(as_sql ,'style(type=grid)',ls_errsyntaxfromSQL)if len(ls_errsyntaxfromSQL) > 0 then    messagebox('生成临时表句法错误','提示:~n~n'+ls_errsyntaxfromSQL,stopsign!)    return falseelse    ad_datastore.create(ls_newsyntax,ls_errcreate)    if len(ls_errcreate) > 0 then        messagebox('生成临时表错误','提示:~n~n'+ls_errsyntaxfromSQL,stopsign!)        return false    end if    ad_datastore.settransobject(at_trans)    ad_datastore.retrieve()    end ifat_trans.autocommit = falsereturn true
[解决办法]
你在create之前,clipboard(ls_syntax),然后在开发环境下,随便建立一个dw并保存,然后edit source该dw,全选,然后粘贴粘贴板中的数据,再保存,看看保存的是第几行
[解决办法]
你在create之前,clipboard(ls_syntax),然后在开发环境下,随便建立一个dw并保存,然后edit source该dw,全选,然后粘贴粘贴板中的数据,再保存,看看报错的是第几行
[解决办法]
从代码本身看不出来有什么问题,楼主确认SQL没问题么?确认事务对象连接正确么?
[解决办法]
探讨
sql语句没问题,事务对象连接正确,但就是dw_1.Create(ls_syntax , ls_errors)出错,只能换一种办法了,多谢各位高手!

读书人网 >PB

热点推荐