当前位置: 代码迷 >> PB >> 【请问】数据在数据窗口无法显示
  详细解决方案

【请问】数据在数据窗口无法显示

热度:42   发布时间:2016-04-29 09:52:35.0
【请教】数据在数据窗口无法显示
我在一个w_main窗口中建了一个数据窗口控件,然后连接了一个数据窗口对象,运行应用,已经确定数据库连接成功了,但是在窗口就是不显示数据,提示:database transaction information not available call settrans or settransobject function 
另,我已经在main窗口的open事件中写了dw_1.SetTransObject(SQLCA) dw_1.Retrieve(),不管用,哪位高手能指导一下,感激不尽


最新测试结果,把dw_1.SetTransObject(SQLCA) dw_1.Retrieve()这两句挪到应用sfbrapp(我建的应用名称)的open事件中,改为w_mian.dw_1.SetTransObject(SQLCA) w_main.dw_1.Retrieve(),运行,可以显示数据了,但是在显示数据前仍然弹出对话框说database transaction information not available call settrans or settransobject function 
请教这是什么原因?那位高手能帮帮忙,谢谢  


------解决方案--------------------
在DW设计器里面能看到数据吗?

是不是你连接的表出问题了?
------解决方案--------------------
呵呵,那是什么原因呢?我建这个应用的流程:
1 在odc odbc 那里建了一个asa数据库,并在数据库里建了一个表,设了主键,然后加了两行记录
2 建了一个pro,数据源就选了上面建的数据库
3 建了workspace
4 建了application
5 随便建了个窗口w_mian
6 建了个数据窗口对象,在里面能看到数据的
7 建了数据窗口空间dw_1,在w_mian中
8 在应用的function中建了一个自动选择数据源的函数f_regdatasource
9 在应用的open事件中运行函数和open(w_main)
10在w_main的open中写dw_1.SetTransObject(SQLCA) dw_1.Retrieve()
请哪位高手看一下哪里出问题了?谢谢各位的回答,无论有没有用,我都会觉得很感激的,我是自学,闭门造车,是有种孤独感,呵呵,不瞒各位,我研究生刚退学,虽说是研究生,却什么都不会,惭愧

这是f_regdatasource的内容:
integer li_rc,li_filenum 
string ls_dir,ls_dbfile,ls_datasource,ls_dbname,ls_config,ls_database
boolean lb_exist 
ls_datasource = as_dbname 
ls_dbname = as_dbname 
ls_dir = GetCurrentdirectory() 
ls_dbfile = ls_dir+'\'+ls_dbname+'.db' 
ls_config = ls_dir + "\config.ini" 
boolean lb_exeist 
lb_exist = FileExists(ls_dbfile) 
if not lb_exist then 
messagebox("提示","在当前目录下不存在:"+ls_dbname+".db") 
halt 
end if 
lb_exist = FileExists(ls_config) 
//判断配置文件是否存在 
if lb_exist then 
li_rc = profileint("config.ini","start","first",0) 
//如果存在则获取配置文件的start段的first的键值 
//如果键值不存在则赋值为0 
else 
li_FileNum = FileOpen(ls_config,LineMode!,Write!,Shared!,Append!) 
FileWrite(li_FileNum,"[start]~r~n first = 1") 
li_rc = 1 
//如果不存在,则按一定的格式创建配置文件 
end if 
if li_rc = 1 then 
//第一次读取配置文件 

if RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\"+"Adaptive Server Anywhere 8.0","Driver",RegString!,"dbodbc8.dll") = 1 then
messagebox("提示","数据源已注册成功!") 
end if 
//注册数据源 
else 
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\"+"Adaptive Server Anywhere 8.0","Driver",RegString!,"dbodbc8.dll") 
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Data Sources",ls_datasource,RegString!,"Adaptive Server Anywhere 8.0") 
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\"+ls_datasource,"Drive",RegString!,"dbodbc8.dll") 
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\"+ls_datasource,"PWD",RegString!,"SQL") 
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\"+ls_datasource,"DataFile",RegString!,ls_dbfile) 
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\"+ls_datasource,"AutoStop",RegString!,"Yes") 
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\"+ls_datasource,"Integrated",RegString!,"No") 
  相关解决方案