当前位置: 代码迷 >> PB >> 动态创建数据窗口出错解决方案
  详细解决方案

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

热度:101   发布时间:2016-04-29 10:13:35.0
动态创建数据窗口出错
以下动动态创建数据窗口函数出错,请高手指教
//功能:根据传入的数据库名和表名创建显示表内容的数据窗口
//参数: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)出错,只能换一种办法了,多谢各位高手!
  相关解决方案