pb问题与解答.docx
- 文档编号:9914913
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:29
- 大小:37.97KB
pb问题与解答.docx
《pb问题与解答.docx》由会员分享,可在线阅读,更多相关《pb问题与解答.docx(29页珍藏版)》请在冰豆网上搜索。
pb问题与解答
如何在PB5中自动生成行号
delelte数据窗口中若干行,然后update,出现:
“rowschangedbetweenretrieveandupdateNochangesmadetodatabase...Deletefromtablewhere...."请教是何缘故,该数据窗口是updatable的,未设置关键字。
如何能够作到,在打印一个DataWindows后不自动换页,而继续打印下一个DataWindows?
我在table中改了一个字段的类型,回来一看,相应的datawindow字段在运行时再
也无法输入东西了?
.
我没安装watercomC++,连用模板生成的PBL都不能正确编成EXE运行,生成的EXE在
windows95中远行时报程序启动错误,怎么办?
我刚安装好nt40中文版及sybasesystem11.0.1无任何错误提示,启动SSM时给提示:
无法找到DNETW.DLL于指定路径C:
\SYBASE\BINC:
\WINNT\SYSTEM32.....但还能启动SSM。
打开SERVER时提示:
NOLANGUAGEHANDLERINSTALL这与NT有关吗?
如何解决?
1.如何在PB5中自动生成行号
自动生成行号的方法很多,你可以看看PB的例子就知道了。
目前我用的方法是,先用SQL语句统计表中最大的行号,把结果保存到一个变量中去,然后再对此变量进行加1不就可以了吗?
但这种做法只是从最大的行号开始产生行号,产生最小的行号也是类似的。
2.delelte数据窗口中若干行,然后update,出现:
“rowschangedbetweenretrieveandupdateNochangesmadetodatabase...Deletefromtablewhere...."请问为什么?
试试更改数据窗口的UpdateProperties中的'WhereClauseforUpdate/Delete'中的选项。
3.如何能够作到在打印一个DataWindows后不自动换页,而继续打印下一个DataWindows?
在PrintPage事件中返回0
4.在table中改了一个字段的类型,回来一看,相应的datawindow字段在运行时再也无法输入东西了,为什么?
datawindow具有自己的SQL语法,该语法和数据库后台中的变化不能时时响应,因此,当后台的数据库发生修改后,应该手工修改datawindow中的列定义,如:
将变化的列删除,再次添加就可以了。
5.没安装watercomC++,连用模板生成的PBL都不能正确编成EXE运行,生成的EXE在windows95中远行时报程序启动错误,怎么办?
不用安装WatcomC++,编译器内置于pb6文件中,估计你和我以前的错误一样,在win98中编译后在win95中运行报启动错,解决方法:
1.在本站点下载pb6.5patch,它可使你的pb6升级到pb6.5,可解决win98下很多问题.
2.在win95下编译.
原因是PB在执行时找不到运行库必须将\powersoft\shared加入路径或将它的内容拷入运行目录
6.安装好nt40中文版及sybasesystem11.0.1无任何错误提示,启动SSM时给提示,这与NT有关吗?
如何解决?
first:
youmustrestartyoursystem
second:
perhapsyouneedrunningSQLEDIT.
7.缩小含较少数据的Sybase数据库的规模,如2G的数据库,其中含200M的数据,如何将其转换为500M左右的数据库?
高级方法:
不用BCP,使用修改系统表SYSUSAGES的方法。
详细方法在SYSBASENEWSGROUP有。
你可以在找到administrator论坛。
8.请教两个sybasesqlserver之间复制数据的方法
SYBASE有一个东东叫ReplicationServer,专用来复制SybaseSQLServer,不过就是对维护人员要求高(没有sybase帮你,我看你日子不好过)
9.如何将Excle文件中的数据倒入PB5.0的Database
回答1:
将该xls文件建立ODBC数据源,在PB里打开,存成sql文件,在打开sqlanywhere的库,运行此sql文件即可。
回答2:
采用DDE或OLE编程。
将PB置成DDEserver或oleserver.在EXCEL中进行VBA编程,可实现对特定数据的处理和传送。
10.问题:
Pb5.0应用程序编译后,运行时出现非法页面操作:
(发生在datawindowItemchanged事件脚本)
回答1:
检查你的DATAWINDOW是否与TABLE相符。
最好此DATAWINDOW重新生成。
--------------------------------------------------------------------------------
11.问题:
我手中的PB是6.0企业版(试用),SqlAnyWhere5.0.03,问题是:
1、PB调试器Debug经常出现非法操作(无效页面)错!
2、SybaseCentral带有SqlAnyWhere5.0.03的Plug-in,运行某些功能和退出时,出现非法操作(无效页面)错!
回答1:
第一个问题现已出现不多,可能是书写程序不规范所致。
第二个问题是SybaseCentral在中文环境下的问题,如果你用西文Win95,外挂的汉字系统,并且将区域设置(regionalsetting)设成英语国家,就可以了。
回答2:
PB出现无效页面错,是和某些软件的冲突,如运行cstar2.97则SybaseCentral退出时出错,若在纯净的英文win95,win98下PB6.5很稳定,说明PB在中文下测试不够,本身抗干扰能力差,至少出错信息少,特别程序本身的底层出错检验差.
回答2:
我同意您的观点。
但我的情况是刚刚装完Win95后立即装PB,同样出问题。
友人建议我使用PB5.0不要追求高版本。
但Sybase中国可能已不出售这个版本的PB了。
--------------------------------------------------------------------------------
12.问题:
怎么将NT上的SYBASESQLSERVE10数据转入小型机上的SYBASESQLSERVER11!
!
!
(不要告诉我用pipeline!
)
回答1:
1,在SSM里生成DDL
2,把所有数据BCP出来(提示,可以先生成一个BAT文件,不用我说了吧?
)
3,在小型机的SQLServer里运行DDL
4,把所有数据BCP进去(提示,可以先生成一个BAT文件)
--------------------------------------------------------------------------------
13.问题:
我们用VC编写一动态连接库,函数形式为intecrtx(stringcmd,wordi,stringretval),在Delphi中正常调用,但在PB6中就是出错提示,怎么办?
回答1:
在VC中,int是32位.而在PowerBuilder中int是16位,long则是32位.
--------------------------------------------------------------------------------
14.问题:
PB6程序编译为EXE时,菜单和对话框会出乱字符,该怎么办
回答1:
编译时不要选编为本机代码。
回答2:
下载补丁版
15.问题:
我使用Infomaker5.0.0.01转换Foxpro25DBF文件到MSSQLSERVER6.5时,发现转入不能成功,怎么办?
回答1:
不要使用PB的ODBC驱动,用MS的
回答2:
将SQLSERVER的CHAR类型改成VARCHAR类型
16.在用PB6.5研究PB的三层结构开发方式,在开发中运行该应用运行到connectusingtransaction;时,系统就会PB60.EXE运行错误,然后就关闭PB开发环境,为什么?
回答1:
我没有出现这种情况啊?
不过在PBCGI60正在运行时,即网页正在刷新时,如果关闭服务器应用会产生这种情况(100%)。
我认为这是PB的BUG,可能是PBCGI与应用通迅时是通过共享内存来实现的,而内存是由应用分配而来,当应用关闭时,所分配的内存也就释放了,这时PBCGI60。
EXE还是去这块内存取数据的话,操作系统就会认为非法操作(因为这块内存已经归还给操作系统了,PBCGI60。
EXE没有操作的权限)
17.有四个问题:
(1)当数据窗口是由两个表的不同字段组成,两者通过一个相关字段进行关联,当改变某一个表的字段(此字段为关联字段)值时,如何使另一个表的其他字段值进行刷新?
(2)能否使计算域的值由两条以上记录的某字段值计算而得?
(3)在程序中如何获得某计算域的值?
(4)在数据窗口中,能否使两个字段间建立对应关系:
一个字段的值随着另一字段的值发生变化
回答1:
1,在DW的ItemChanged写Script实现
2,computedField本来就可以由两条以上记录的某字段值计算而得,例如sum,count等。
如果你想指定某几条记录来作计算,可以用IF,例如要统计第一个记录和第二个记录的值:
sum(if(getrow()=1orgetrow()=2),字段名,0)
3,给ComputedField一个名字,然后用getitemXXX(1,名字)
4,要在ItemChanged里写Script
18.所用的Sybase数据库的一张表已输入大量数据,现遇到一个字段的宽度不能够满足一个记录的宽度,请问如何处理
回答1:
BCPisanotherway.
回答2:
不能修改,可以另外建一个表,用PIPELINE将数据倒过去。
19.一个系统用PFC5.0.4书写,FullComplile无问题,但编译成机器码时失败,原因不明.从Log中自得到如下信息:
CGEN:
Compiling'C:
\DOS\main.c'CGEN:
Linking...__imp__VirtualQuery@12偼枹掕媊嶲徠偱偡,怎么办?
回答1:
在Infobase里按出错的关键字查一下,应该可以找到原因。
回答2:
按PBD编译吧!
20.问题:
PB6如何显示JPG?
回答1:
在win95osr2版里选装附件中的‘映像’,即可得到WANG系列的image控件,非常好用,请试一试。
21.问题:
请问各位大虾有没有办法将对Sybase或MSSQL中某表查询后显示的记录在表中的记录号显示出来?
回答1:
没有纪录号的概念啦!
22.问题:
pb分布式计算求助,在三层c/s结构下,APPLICATIONSERVER端使用DATASTORE封装了对数据库的访问,如何将RETRIEVE的结果返回CLIENT?
回答1:
这要看你是使用同步还是异步调用,同步你可以传递一个REFSTRING参数、然后用IMPORTSTRING函数引入数据,如果是异步调用你需要使用SERVERPUSH技术返回一个STRING,然后在用IMPORTSTRING。
详细处理看PBONLINEBOOKS
回答2:
用datastore.object.datawindow.syntax得到语法,用datastore.object.datawindow.data得到数据
23.问题:
(1)如何在PB状态下查看数据库的触发器程序。
(2)如何改写系统日期和时间
回答1:
1.具体与你使用的数据库有关,在SQLServer及SQLAnywhere中trigger语法存放在syscomments表中,直接select出来就可怜看到。
2.调用windowsAPI.具体function我记不清了,查一下visualc++帮助,不难。
24.问题:
使用PB5.0中带的SQLANYWHERE5.0,在一个表中设置了一个列userchar(10)其defaultvalue设为currentuser用于记录谁向该表中加入了新行,但什么也记不下来,另外有无简单的手段记录,谁最后修改了行?
回答1:
SQLAnyWheredefaultvalue=当前用户的语法用userchar(10)defaultuser,而不是defaultcurrentuser,再试试!
回答2:
在此表上ADD一个TRIGGER。
在INSERT和UPDATE时出发。
TRIGGER启动后SELECTUSERINTOVAR1NEW。
USER:
=USER;我也是虾血,你可以试试。
--------------------------------------------------------------------------------
25.问题:
在PB中使用大文本时碰上字符集不能转换的错误,如何处理?
回答1:
用Image类型的列试试。
26.问题:
连接到adaptiveserveranywhere6.0networkdatabaseserver,客户端怎么设置?
回答1:
客户端配置ODBC时注意以下几点:
1)ServerName项写ASA的ServerName
2)DatabaseStarup项内选中Networkradiobutton.
27.问题:
在PB中同时连接两个Informix数据库服务器,怎么配置第二个数据库服务器的Transaction变量。
请指教!
回答1:
第二个Transaction的属性配置和第一个类似,只是在用的时候SQL语句后要加using...;,并且用完后要用Destroy命令删掉。
28.问题:
我在窗口中使用了vb所带的一个ocx控件,用installbuilder制成安装盘并在另一机器上安装后,ocx控件调用不正确。
该机器没有安装vb,我该怎样在安装时注册ocx的相关信息呢?
?
?
回答1:
听说是用windows\system里的REGSVR32命令
29.问题:
我准备用VB中的MSCOMM32.OCX在PB中做串口通信,我在OLE中插入时,提示“InsertofOLEfailed,licensefilerequired”,这是什么原因,我拷的文件还缺吗?
回答1:
是否缺少.lic文件?
30.问题:
PB中如何创建SQLANYWHERE的数据库?
回答1:
打开DatabasePainter,在File菜单项下有CreateDatabase,如果没有,那么可能你装PB的时候没装SQLAnywhere.
31.问题:
PB中鼠标从控件上离开的事件是那个?
回答1:
移入、移出控件我都是用的mousemove,可以在Script中进行区分。
32.问题:
ORACLE数据库的Client/Server连接成功,且Delphi能够连接到ORACLE7.3.4ForNT,但是,PB连接ORACLE时,出现如下错误:
没连接接口驱动程序---功能未执行?
回答1:
sqlca.servername='@'+ORACLE数据库别名
sqlca.dbms='o72'
sqlca.login='SYSTEM'
sqlca.loginpass='MANAGER'
33.问题:
PB5,PB6中DataBase中Table的columnName等属性不能修改,ataBase中Table不能删除,提示错误"ThefollowingDDLcommandisnosupported:
Droptable",为什么?
回答1:
droptable不对,应该是droptable,PB对sybase自身的数据库产品的支持应该是没有问题的,连接oracle或者db2等一般不能直接修改列名或者列类型,另外,对于大型数据库而言,一般不允许将列长度变小,如:
col1numeric(8,2)-->colnumeric(10,2)ok,
col1numeric(8,2)-->colnumeric(8,0)no
R回答1:
我的数据库是SYBASESQLAnywhere,开始在PB5.0下建的表,而且能修改ColumnName等属性.后来因其它原因重装后便不可以了.硬盘格式化后重装也不行.便安装了PB6.0,刚用时是正常的.过了几天再用便又不行了.
AR回答1:
实在不行的话,如果你用sqlanywhere,使用SybasesqlCentral也可以修改列名等,规则和我上次谈的一样
34.问题:
由于服务器没正常关机,导致数据库脱机,用sp_helpdb命令得到“cinms"数据库被标记为"offline",请问如何去掉这个标记,使得数据库能工作?
回答1:
不妨试试如下命令(在交互式环境下)
onlinedatabasecinms
go
看看是否可以解决问题!
!
!
回答2:
手工更改master库中的sysdatabases表,它有两个状态栏status,status2,可以去掉SUSPECT位,具体数值意义可以看SYBASE的参考资料.
35.问题:
我在一台Decalpha1200上的DigitalUnix4.0D平台上安装SybaseServer(安装文件是从原盘上tar下来的),结果每次输入CAS后提示:
PleaseconfirmthatyouhaveselectedtheNON-rewindingtapedeviceifapplicable.Ifyouhavedoneso,informSybaseTechnicalSupportthatthereisaproblemwiththistapeandciteerrorcondition803.然后退出,不知是什么原因?
另外Sybase非得在光碟上或磁带上安装吗?
如何备份原盘?
回答1:
你的sybload后没加-D的参数或CAS不对。
36.问题:
我正做一应用程序,需动态计算数据窗口不同列的数据值,不但有数值计算,而且有条件语句,我试图用DW表达式及俄EVALUTE函数解决,没有成功,请赐教!
!
!
回答1:
可考虑自己在程序中计算,最后insertrow(0),并Setiem.
37.问题:
在对有Identity字段的table进行数据import时,identity字段数据不能导入,用setidentity-insert属性也没用,怎么办?
回答1:
用setidentity_inserton改变设定后,insert语句中identity列的值是显式指定identity列将从这个值开始递增,或用这个值填充identity列值中的空隙。
如果不影响逻辑的话,能不能drop再create?
38.问题:
我用的是PB5.0,源程序在开发环境中运行,正常无比,但编译后执行EXE文件却发现:
程序实现的功能莫名其妙的不行了.现象:
源程序中有一句dw_userquery.DataObject="d_pacuser2",在EXE文件执行时好象根本不显示数据窗口对象d_pacuser2的内容.而在开发环境中却是好好的!
请问为何?
回答1:
是这样,当你用到一个对象是动态加入的,如你程序中的类似dw_userquery.DataObject="d_pacuser2"的情况,编译是PB不会将数据窗口d_pacuser2自动编译到EXE文件中去,解决办法有两个:
1)将此数据窗口所在的PBL文件编译成DLL或PBD,(即编译时选中此PBL文件后面的DLL多选框)
2)创建资源文件(以PBR结尾)
例如:
创建文件dw_list.pbr
内容如下:
c:
\sample\myapp.pbl(d_pacuser2)
将此文件写在ResourceFile处。
39.问题:
最近搞个统计表,录入浮点数时的问题已在另外一篇帖说了,打印时更麻烦,几个浮点数一合计,最后一位小数后又多出几位,这是不是一个BUG,有PATCH吗?
回答1:
这是PB的问题,如果要求严格的话,请不要使用转换函数.解决的办法只有用两个整数来代替一个浮点数的整数及小数部份,在有关处理中,只能人工解决
40.问题:
在PB6下的DW输入浮点数9.112,光标离开输入框后,数字就变成9.1120005,在UPDATE保存后也是9.1120005。
怎么会这样?
回答1:
这种现象我也遇到过,可以采用设置EDITMASK来解决将mask设为###.##而不是000.00
41.问题:
如何动态修改DATAWINDOWS的SQL?
回答1:
1>dw_1.setSqlSelect或
2>dw_1.object.datawindow.table.select=...
42.问题:
在PB中生成的动态SQL的运行速度很慢,有没有药救?
回答1:
如果多次调用,则最好Prepare一次,再在循环中Open,不要每次都Prepare.
43.问题:
composite型datawindow有一报表rep,rep的datasource有参数,如何在程序中传递参数,用retrieve(value)不行。
请高手指教!
回答1:
在COMPOSITEREPORT设计过程中,双击COMPOSITE报表的空白处,设置compositereport的检索参数(value),然后双击rep,把刚才设置的参数赋于rep,最后用dw_composite_report.RETRIEVE(VALUE)
44.问题:
请教高手一个问题:
composite型的datawindowdw_1中有个报表rep1,rep1中有个statictext型对象st_1,如何在程序中给st_1附值?
我用dw_1.object.rep1.st_1.text=value,运行时出错。
这么做?
回答1:
试试这样:
dw_1.object.rep1.object.st_1.text=value
45.问题:
怎样屏蔽PB6,datawindow中操作错误时产生的英文信息
回答1:
通过判断默认事务对象sqlca的属性sqlcode来决定.
ifslqca.sqlcode=**then
messagebox('','中文提示')
endif
当然要了解pb的错误级别.
46.问题:
我在TreeView的constructor事件中声明并使用dataStore的实例,通过该实例检索datawindowobject得到数据后使用TreeView的InsertItem()可在控件加入根一级的数据显示项,在加入下一级数据项时,我使用了TreeView的Itempoplate事件,声明另一个datastore检索另一个数据窗口对象,得到数据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- pb 问题 解答