前往Shuct.Net首页

Shudepb PB反编译专家长时间以来,为业内同类软件事实上的唯一选择.细节,彰显专业.态度,决定品质.

关于PowerBuilder的搜索

关于PowerBuilder的另类FAQ - CSDN论坛 - CSDN.NET --> 首页 论坛帮助 论坛牛人 论坛地图 CSDN > CSDN论坛 > PowerBuilder > 基础类 管理菜单 置顶 推荐 锁定 移动 编辑 删除 帖子加分 帖子高亮 结帖 发帖 回复 tianhaiyise 关于PowerBuilder的另类FAQ [问题点数:50分,结帖人tianhaiyise] 不显示删除回复 显示所有回复 显示星级回复 显示得分回复 只显示楼主 收藏 tianhaiyise tianhaiyise 等级: 结帖率:100% 楼主 发表于: 2001-12-23 15:10:00 Q: 如何在PB5中自动生成行号 A1:自动生成行号的方法很多,你可以看看PB的例子就知道了。目前我用的方法是,先用SQL语句统计表中最大 的行号,把结果保存到一个变量中去,然后再对此变量进行加1不就可以了吗?但这种做法只是从最大的行号 开始产生行号,产生最小的行号也是类似的。 -------------------------------------------------------------------------------- Q: delete数据窗口中若干行,然后update,出现: “rows changed between retrieve and update No changes made to database... Delete from table where...." 请教是何缘故,该数据窗口是updateable 的,未设置关键字。 A1 : 试试更改数据窗口的Update Properties中的 'Where Clause for Update/Delete'中的选项。   -------------------------------------------------------------------------------- Q: 如何能够作到,在打印一个DataWindows后不自动换页,而继续打印下一个DataWindows?谢谢 A1:在PrintPage事件中返回0   -------------------------------------------------------------------------------- Q:我在table中改了一个字段的类型,回来一看,相应的datawindow字段在运行时再 也无法输入东西了,请问哪位大虾帮我分析一下.Thanks.   A1: datawindow具有自己的SQL语法,该语法和数据库后台中的变化不能时时响应,因此,当后台的数据库 发生修改后,应该手工修改datawindow中的列定义,如:将变化的列删除,再次添加就可以了。 -------------------------------------------------------------------------------- Q:我没安装watercom C++,连用模板生成的PBL都不能正确编成EXE运行,生成的EXE在 windows95 中远行时报程序启动错误,望各位高手帮忙。   A1:不用安装Watcom C++,编译器内置于pb6文件中,估计你和我以前的错误一样,在win98中编译后在win95中运行报启动错, 解决方法: 1.在本站点下载pb6.5 patch,它可使你的pb6升级到pb6.5,可解决win98下很多问题. 2.在win95下编译.   A2:原因是PB在执行时找不到运行库必须将\powersoft\shared加入路径或将它的内容拷入运行目录 -------------------------------------------------------------------------------- Q:大虾你好。我刚安装好nt40中文版 及sybase system 11.0.1无任何错误提示,启动SSM时给提示:无法找到DNETW.DLL于指定路径 C:\SYBASE\BIN C:\WINNT\SYSTEM32.....但还能启动SSM。 打开SERVER时提示:NO LANGUAGE HANDLER INSTALL这与NT有关吗?如何解决?盼赐教!...... A1:first:you must restart your system second:perhaps you need running SQLEDIT.   -------------------------------------------------------------------------------- Q : 缩小含较少数据的Sybase数据库的规模,如2G的数据库,其中含200M的数据,如何将其转换为500M 左右的数据库。望饱学志士不吝赐教! A1:高级方法:不用BCP,使用修改系统表SYSUSAGES的方法。详细方法在SYSBASE NEWSGROUP 有。你可以在www.sybase.com找到administrator 论坛。   -------------------------------------------------------------------------------- Q:请教两个sybase sql server 之间复制数据的方法 A1: SYBASE有一个东东叫Replication Server,专用来复制Sybase SQL Server,不过就是对维护人员要求高(没有sybase帮你,我看你日子不好过)   -------------------------------------------------------------------------------- Q: 如何将Excle文件中的数据倒入PB5.0的Database A1:将该xls文件建立ODBC数据源,在PB里打开,存成sql文件,在打开sqlanywhere的库,运行 此sql文件即可。 A2:采用DDE或OLE编程。将PB置成DDE server 或ole server.在EXCEL中进行VBA编程,可实现对特定数据的处理和传送。   -------------------------------------------------------------------------------- Q: Pb5.0应用程序编译后,运行时出现非法页面操作:(发生在datawindow Itemchanged 事件脚本) A1:检查你的DATAWINDOW是否与TABLE 相符。最好此DATAWINDOW重新生成。   -------------------------------------------------------------------------------- Q:我手中的PB是6.0企业版(试用),Sql AnyWhere 5.0.03,问题是:1、PB调试器Debug经常出现非法操作(无效页面)错!2、Sybase Central带有Sql AnyWhere 5.0.03的Plug-in,运行某些功能和退出时,出现非法操作(无效页面)错! A1:第一个问题现已出现不多,可能是书写程序不规范所致。第二个问题是Sybase Central 在中文环境下的问题,如果你用西文Win95, 外挂的汉字系统,并且将区域设置(regional setting) 设成英语国家,就可以了。A2:PB出现无效页面错,是和某些软件的冲突,如运行cstar 2.97则Sybase Central退出时出错,若在纯净的英文win95,win98下PB6.5很稳定,说明PB在中文下测试不够,本身 抗干扰能力差,至少出错信息少,特别程序本身的底层出错检验差. A2:我同意您的观点。但我的情况是刚刚装完Win95后立即装PB,同样出问题。友人建议我使用PB5.0 不要追求高版本。但Sybase中国可能已不出售这个版本的PB了。   -------------------------------------------------------------------------------- Q: 怎么将NT上的SYBASE SQL SERVE10数据转入小型机上的SYBASE SQLSERVER11!!!(不要告诉我用pipeline!) A1:1,在SSM里生成DDL 2,把所有数据BCP出来(提示,可以先生成一个BAT文件,不用我说了吧?) 3,在小型机的SQL Server里运行DDL 4,把所有数据BCP进去(提示,可以先生成一个BAT文件)   -------------------------------------------------------------------------------- Q: 我们用VC编写一动态连接库,函数形式为 int ecrtx(string cmd,word i,string retval),在Delphi中正常调用,但在PB6中就是出错提示: 1.指定的参数类型和需要的参数类型不一致, 2.从函数调用中返回无效的堆栈指针。我们的调用方法是: int j uint i(用int i也不同) string a,b j=ecrtx(a,i,b) 函数好象能够运行,就是出错。劳烦各位大虾出手相救 A1:在VC中, int 是32位. 而在PowerBuilder 中int 是16位, long则是32位.   -------------------------------------------------------------------------------- Q: PB6程序编译为EXE时,菜单和对话框会出乱字符,该怎么办 A1:编译时不要选编为本机代码。 A2:下载补丁版   -------------------------------------------------------------------------------- Q: 我使用Infomaker 5.0.0.01 转换Foxpro25 DBF文件到MS SQL SERVER6.5时,发 现转入不能成功。其中Foxpro的ODBC driver 为 Pb Intersolv 2.12.0000 32Bit DBASEFile 96.1.15, SQL Server ODBC Driver使用MS SQL Server 自带的。问题如下:1.转换两个字段都为char的一个表示,转入成功,用各种T-SQL工具发现转入是成功的 2.如果使用如下的表结构的DBF文件,发现失败。 slsj date slno char 6 spjg char 8 qymc char 70 fddbr char 20 hzrq date sldh char 3 slname char 10 现象有:字段内容“审批通过”用Infomaker Query 工具发现变成“审批通?”,用SQL Server 自身带的SQL Query Tool发现“审批通过”变成“悽彛柱?”为什么是这样?快帮帮我。 A1:不要使用PB的ODBC驱动,用MS的 A2:将SQL SERVER的CHAR类型改成VARCHAR类型   -------------------------------------------------------------------------------- Q:这段期间,我正在用 PB 6.5 研究 PB 的三层结构开发方式,在开发中遇到一个不可理解的问题,我认为是 PB 6.X 中的 Bug.是这样的: 当你在 PB 的开发环境中开发服务端(中间层)的应用时,必定会用到transport (用来监听用户请求)connection (用来取得连接用户信息)transaction (用来连接数据库)0.settranspool(5, 10, 0) 设置缓冲池 1. transport.listen() 启动中间层 2. connection.getserverinfo(connectioninfo) 监控连接用户 { 3. userobject.call() 客户段用户服务请求 4. userobject.connecttoserver 中间层连接到数据库 5. userobject.retrieve() 中间层取数据返回给客户端 6. dw_1.importstring(string) 客户端得到数据 7. destroy userobject 客户端释放远程(中间层)对象 } 8. connection.disconnectserver() 关闭监控连接 9. transport.stoplistening() 关闭中间层 当你在开发环境中编写了这样类型的应用,然后运行它, 然后关闭应用(不要关闭PB 开发环境),然后再次在开发环境中运行该应用当你运行到 connect using transaction; 时, 系统就会告诉你 PB60.EXE 运行错误,然后就关闭 PB 开发环境。 A1:我没有出现这种情况啊?不过在PBCGI60正在运行时,即网页正在刷新时,如果关闭服务器应用 会产生这种情况(100%)。我认为这是PB的BUG,可能是PBCGI与应用通迅时是通过共享内存来实现 的,而内存是由应用分配而来,当应用关闭时,所分配的内存也就释放了,这时PBCGI60。EXE还是 去这块内存取数据的话,操作系统就会认为非法操作(因为这块内存已经归还给操作系统了,PBCG I60。EXE没有操作的权限)   -------------------------------------------------------------------------------- Q: 1、当数据窗口是由两个表的不同字段组成,两者通过一个相关字段进行关联,当改变某一个表的字段 (此字段为关联字段)值时,如何使另一个表的其他字段值进行刷新 ? 2、能否使计算域的值由两条以上记录的某字段值计算而得? 3、在程序中如何获得某计算域的值? 4、在数据窗口中,能否使两个字段间建立对应关系:一个字段的值随着另一字段的值发生变化 A1:1,在DW的ItemChanged写Script实现 2,computedField本来就可以由两条以上记录的某字段值计算而得,例如sum,count等。如果你想指定 某几条记录来作计算,可以用IF,例如要统计第一个记录和第二个记录的值:sum(if(getrow()=1 or getrow()=2),字段名,0) 3,给ComputedField一个名字,然后用getitemXXX(1,名字) 4,要在ItemChanged里写Script   -------------------------------------------------------------------------------- Q:我所用的Sybase数据库的一张表已输入大量数据,现遇到一个字段的宽度不能够满足一个记录的宽度 ,请问如何处理 A1:BCP is another way. A2:不能修改,可以另外建一个表,用PIPELINE将数据倒过去。   -------------------------------------------------------------------------------- Q: 我的一个系统用PFC 5.0.4书写,Full Complile无问题,但编译成机器码时失败,原因不明.从Log中自得到如下信息: CGEN: Compiling 'C:\DOS\main.c' CGEN: Linking... __imp__VirtualQuery@12 偼枹掕媊嶲徠偱偡 而生成PBR版本无问题. A1:在Infobase里按出错的关键字查一下,应该可以找到原因。 A2:按PBD编译吧!   -------------------------------------------------------------------------------- Q: PB6如何显示JPG? A1:在win95 osr2版里选装附件中的‘映像’,即可得到WANG系列的image控件,非常好用,请试一试。   -------------------------------------------------------------------------------- Q: 请问各位大虾有没有办法将对Sybase或MSSQL中某表查询后显示的记录在表中的记录号显示出来? A1:没有纪录号的概念啦!   -------------------------------------------------------------------------------- Q: pb分布式计算求助 ,在三层c/s结构下,APPLICATION SERVER 端使用DATASTORE封装了对数据库的访问,如何将RETRIEVE的结果返回CLIENT? A1:这要看你是使用同步还是异步调用,同步你可以传递一个REF STRING 参数、然后用 IMPORTSTRING 函数引入数据,如果是异步调用你需要使用 SERVER PUSH 技术返回一个STRING,然后在用IMPORTSTRING。详细处理看 PB ONLINEBOOKS A2:用 datastore.object.datawindow.syntax 得到语法,用 datastore.object.datawindow.data 得到数据   -------------------------------------------------------------------------------- Q: 1、如何在PB状态下查看数据库的触发器程序 2、如何改写系统日期和时间 A1:1.具体与你使用的数据库有关,在SQL Server及SQL Anywhere中trigger 语法存放在syscomments表中,直接select出来就可怜看到。 2.调用windows API.具体function我记不清了,查一下visual c++帮助,不难。   -------------------------------------------------------------------------------- Q: 我在使用PB5.0中带的SQL ANYWHERE 5.0.. ,我在一个表中设置了一个列 user char(10 ) 其default value 设为current user用于记录谁向该表中加入了新行,但经试验什么也记不下来,请教各位帮忙.另外,有无简单的手段记录,谁最后修改了行? A1:SQL AnyWhere default value=当前用户 的语法用user char ( 10 ) default user,而不是 default current user,再试试! A2:在此表上ADD一个TRIGGER。在INSERT 和UPDATE时出发。TRIGGER启动后SELECT USER INTO VAR1 NEW。USER := USER;我也是虾血,你可以试试。   -------------------------------------------------------------------------------- Q:在PB中使用大文本时碰上字符集不能转换的错误,前台用PowerBuilder开发数据库时,用了大文本 属性,对应的OLE控件是WORD,由于后端用的是SYBASE,所以大文本对应的列的属性为‘TEXT’。可 每次在更新存储大文本一列时,PB总会报错内容如下“Error converting client character into server's character set.Some character(s) could not be converted!"。sqldbcode为2402.对应程序在PB自带的数据库下运行正确,所以排除程序出错的可能! 请各位高手们多多指教!先行谢过!万分火急,速速告之!! A1:用 Image 类型 的列试试。   -------------------------------------------------------------------------------- Q:连接到adaptive server anywhere6.0 network database server ,客户端怎么设置? A1:客户端配置 ODBC 时注意以下几点: 1)Server Name 项写 ASA 的 Server Name 2) Database Starup 项内选中 Network radio button.   -------------------------------------------------------------------------------- Q:在PB中同时连接两个Informix数据库服务器,怎么配置第二个数据库服务器的Transaction变量。请指教! A1:第二个 Transaction 的属性配置和第一个类似,只是在用的时候 SQL 语句后要加 using ...; ,并且用完后要用 Destroy 命令删掉。   -------------------------------------------------------------------------------- Q: 我在窗口中使用了 vb 所带的一个ocx 控件,用install builder 制成安装盘并在另一机器上安装后,ocx 控件调用不正确。该机器没有安装vb,我该怎样在安装时注册 ocx 的相关信息呢??? A1:听说是用windows\system里的REGSVR32命令   -------------------------------------------------------------------------------- Q:我准备用VB中的MSCOMM32.OCX在PB中做串口通信,我在OLE中插入时,提示“Insert of OLE failed,license file required”,这是什么原因,我拷的文件还缺吗? A1:是否缺少.lic文件?   -------------------------------------------------------------------------------- Q: PB中如何创建SQL ANYWHERE的数据库? A1:打开Database Painter, 在 File 菜单项下有Create Database,如果没有,那么可能你装PB的时候没装 SQL Anywhere.   -------------------------------------------------------------------------------- Q: PB中鼠标从控件上离开的事件是那个? A1:移入、移出控件我都是用的 mousemove, 可以在 Script中进行区分。   -------------------------------------------------------------------------------- Q:ORACLE数据库的Client/Server连接成功,且Delphi能够连接到ORACLE 7.3.4 For NT,但是,PB连接ORACLE时,出现如下错误:没连接接口驱动程序---功能未执行? A1:sqlca.servername = '@' + ORACLE数据库别名 sqlca.dbms='o72' sqlca.login = 'SYSTEM' sqlca.loginpass = 'MANAGER'   -------------------------------------------------------------------------------- Q:PB5,PB6中DataBase中Table的column Name等属性不能修改,在PB6刚装好后是可以修改的,而且可以添加新字段.还有:DataBase中Table不能删除,提示错误"The following DDL command is no supported:Droptable" A1:droptable不对, 应该是drop table,PB对sybase自身的数据库产品的支持应该是没有问题的,连接oracle或者db2等一般不能直接 修改列名或者列类型,另外, 对于大型数据库而言, 一般不允许将列长度变小, 如: col1 numeric(8,2) --> col numeric(10, 2) ok, col1 numeric(8,2) --> col numeric(8, 0) no RA1:我的数 据 库 是SYBASE SQL Anywhere,开始在PB5.0下建的表,而且能修改Column Name等属性.后来因其它原因重装后便不可以了.硬盘格式化后重装也不行.便安装了PB6.0,刚用时 是正常的.过了几天再用便又不行了. ARA1:实在不行的话, 如果你用sql anywhere, 使用Sybase sql Central 也可以修改列名等, 规则和我上次谈的一样   -------------------------------------------------------------------------------- Q: 由于服务器没正常关机,导致数据库脱机,用sp_helpdb命令得到“cinms"数据库被标记为"offline", 请问如何去掉这个标记,使得数据库能工作? A1:不妨试试如下命令(在交互式环境下) online database cinms go 看看是否可以解决问题!!! A2:手工更改master库中的sysdatabases表,它有两个状态栏status,status2,可以去掉SUSPECT位, 具体数值意义可以看SYBASE的参考资料.   -------------------------------------------------------------------------------- Q:我在一台Dec alpha 1200上的Digital Unix 4.0D平台上安装Sybase Server(安装文件是从原盘上tar下来的),结果每次输入CAS后提示: Please confirm that you have selected the NON-rewinding tape device if applicable. If you have done so, inform Sybase Technical Support that there is a problem with this tape and cite error condition 803. 然后退出,不知是什么原因?哪位高手还指教,拜托! Sybase非得在光碟上或磁带上安装吗?如何备份原盘? A1:你的sybload后没加-D的参数或CAS不对。   -------------------------------------------------------------------------------- Q: 我正做一应用程序,需动态计算数据窗口不同列的数据值,不但有数值计算,而且有条件语句,我试图 用DW表达式及俄EVALUTE函数解决,没有成功,请赐教!!! A1: 可考虑自己在程序中计算,最后insertrow(0),并Setiem.   -------------------------------------------------------------------------------- Q: 在对有Identity字段的table进行数据import时,identity字段数据不能导入,用set identity-insert 属性也没用,请指教! A1:用 set identity_insert on 改变设定后,insert 语句中 identity 列的值是显式指定 identity 列将从这个值开始递增,或用这个值填充 identity 列值中的空隙。如果不影响逻辑的话,能不能drop再create?   -------------------------------------------------------------------------------- Q: 我用的是PB5.0,源程序在开发环境中运行,正常无比,但编译后执行EXE文件却发现:程序实现的功能莫名 其妙的不行了.现象:源程序中有一句dw_userquery.DataObject ="d_pacuser2",在EXE文件执行时好象根本不显示数据窗口对象d_pacuser2的内容.而在开发环境中却是 好好的!请问为何? A1:是这样,当你用到一个对象是动态加入的,如你程序中的类似 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) 将此文件写在 Resource File 处。   -------------------------------------------------------------------------------- Q : 最近搞个统计表,录入浮点数时的问题已在另外一篇帖说了,打印时更麻烦,几个浮点数一合计,最 后一位小数后又多出几位,这是不是一个BUG,有PATCH吗?各位行家快点帮手!!! A1:这是PB的问题,如果要求严格的话,请不要使用转换函数.解决的办法只有用两个整数来代替一个浮 点数的整数及小数部份,在有关处理中,只能人工解决   -------------------------------------------------------------------------------- Q: 在PB6下的DW输入浮点数9.112,光标离开输入框后,数字就变成9.1120005,在UPDATE保存后也是9.1120005。怎么会这样? A1: 这种现象我也遇到过,可以采用设置EDITMASK来解决 将mask设为###.##而不是000.00   -------------------------------------------------------------------------------- Q: 如何动态修改DATAWINDOWS的SQL? A1: 1>dw_1.setSqlSelect 或 2>dw_1.object.datawindow.table.select=...   -------------------------------------------------------------------------------- Q:在PB中生成的动态SQL的运行速度很慢,有没有药救? A1:如果多次调用,则最好Prepare一次,再在循环中Open,不要每次都Prepare.   -------------------------------------------------------------------------------- Q: composite型datawindow有一报表rep,rep的datasource有参数,如何在程序中传递参数,用 retrieve(value)不行。请高手指教! A1:在COMPOSITE REPORT 设计过程中,双击COMPOSITE 报表的空白处,设置composite report的检索参数(value),然后双击rep,把刚才设置的参数赋于rep,最后用 dw_composite_report.RETRIEVE(VALUE)   -------------------------------------------------------------------------------- Q: 请教高手一个问题: composite型的datawindow dw_1中有个报表rep1,rep1中有个statictext型对象st_1,如何在程序中给st_1附值?我用 dw_1.object.rep1.st_1.text=value,运行时出错。这么做? A1:试试这样:dw_1.object.rep1.object.st_1.text=value   -------------------------------------------------------------------------------- Q:怎样屏蔽PB6,datawindow中操作错误时产生的英文信息 A1:通过判断默认事务对象sqlca的属性sqlcode来决定. if slqca.sqlcode=** then messagebox('','中文提示') end if 当然要了解pb的错误级别.   -------------------------------------------------------------------------------- Q: 我在TreeView的constructor事件中声明并使用dataStore的实例,通过该实例检索data window object得到数据后使用TreeView的InsertItem()可在控件加入根一级的数据显示项,在加入? 乱患妒菹钍?我使用了TreeView的Itempoplate事件,声明另一个datastore检索另一个数 据窗口对象,得到数据并加入下一级item,在脚本中我使用了for next 循环以得到同一级的多个数据项.现在需要在这一级下面再加入子项,该怎样做?如果在for next 循环中嵌套一个for next循环,回出现很奇怪的现象,请参考PB5 的online books的Application technique中的chapter 12 using Lists in a window 关于treeview的部分.多谢指点! A1:完全可用多重循环来实现。插入可用函数insertitemlast()来完成,注意其语法为: treeviewname.InsertItemLast(handleparent, item ) 其中handleparent为要插入Item其父项的句柄(第插入一项都返回一个句柄,long型),item 为treeviewitem。 for example: for i = 1 to row1 step 1 name = dept_datastore.getitemstring(i,"dept_name") code = dept_datastore.getitemnumber(i,"dept_code") xt_tvitem.label = name xt_tvitem.data = dept_datastore.getitemnumber(i,"dept_code") xt_tvitem.pictureindex = 2 xt_tvitem.selectedpictureindex = 2 ll_newitem = tv_1.insertitemlast(ll_rootitem,xt_tvitem)//返回一个句柄ll_newitem ,作其子项父句柄。ll_rootitem为根句柄 for j = 1 to row2 step 1 xt_tvitem.label = emp_datastore.getitemstring(j,"name") xt_tvitem.data = emp_datastore.getitemnumber(j,"em_code") xt_tvitem.pictureindex = 3 xt_tvitem.selectedpictureindex = 3 tv_1.insertitemlast(ll_newitem,xt_tvitem)//用到父句柄 next next 分享到: 更多 对我有用[0] 丢个板砖[0] 引用 | 举报 | 编辑 删除 管理 回复次数:4 tianhaiyise tianhaiyise 等级: 结帖率:100% #1 得分:0 回复于: 2001-12-23 15:10:24 Q: 我用的是ORACLE数据库,PB中想动态修改DW的select语句的条件部分:string newwhere newwhere = 'where (~~"table1~~".~~"field1~~" = ' + ' ~'Y~')'是正确的.如果想把常量'Y'改为一个变量该怎么办?请各位大虾指教。 A1:可以这样写: string ls_Y ls_Y = 'Y' newwhere = "where (~~table1~~.~~field1~~ = '" + ls_Y + "')" A2:pb倒是没有提供标准的modify接口,可能要用死办法直接修改syntax的table区,具体格式可以看 SRD   -------------------------------------------------------------------------------- Q:请问PFC是什么? A1: PFC是一些基本类库,PFC功能强大,使用PFC开发程序,需要写的代码很少,时间可以大大减少, 界面也比较好。 A2: PowerBuilder Fundamental Classes, 是这个意思吧,就是和微软的MFC差不多的东东。   -------------------------------------------------------------------------------- Q:SYBASE_SQL_SERVER 11.2的sa口令忘记了怎么办? A1:好像在RUN_SYBASE文件内加一个 -m 然后,重新启动,会自动产生一个新的SA口令。一定要用笔记住。再用sp_password改成自己的口 令。的自己加的-m去掉,重启动就可以了。 A2:为了安全,SYBASE 确认了你的身份后才能帮你解决。有时需要正式介绍信。   -------------------------------------------------------------------------------- Q: 是关于修改显示器分辩率的ChangeDisplaySetting, 请指教:) A1:The first function returns the color of a specific pixel(像素;显示器的最小分辨单元). The SetPixel function changes the targeted pixel to the color sent. There is no PowerBuilder equivalent. Global External Function: FUNCTION ulong GetPixel(ulong hwnd, long xpos, long ypos) LIBRARY "Gdi32.dll" FUNCTION ulong SetPixel(ulong hwnd, long xpos, long ypos, ulong pcol) LIBRARY "Gdi32.dll" Script: long lx, ly ulong rtn ulong l_handle, l_device lx = 100 ly = 100 l_handle = handle(w_main) l_device = GetDC(l_handle) rtn = GetPixel(l_device, 100, 100) MessageBox("Position " + string(lx) + "," + string(ly),"Color = " + string(rtn)) SetPixel(l_device, lx, ly, 0) // This call will set the pixel at lx, ly to black.   -------------------------------------------------------------------------------- Q :请问在PB中如何利用PBCATTBL,PBCATCOL,PBCATFMT,PBCATEDT,PBCATVLD五个系统表?请说明各字段的中主含义。谢谢! A1:There five table is used to loaded "Lable","validation","head" and "tablename" and others table information whose in PB.We can used to show "table name" in our application and delete "died tabled " in Database'   -------------------------------------------------------------------------------- Q: 如何播放动画G胛试赑B中除了用RUN或外部函数SHELLEXECUTEA播放外,有没有其他方法? A1:使用VB5.0所带ActiveX control.安装vb后在pb OLE control中即可见.   -------------------------------------------------------------------------------- Q : 如果做个窗口放报表,显示多行时好象不舒服。请高手指点,谢谢。 A1:使用如下语句显示DW dw1.object.datawindow.print.prview = True ================================================================== Q : 我使用DataWindow增加一笔记录时,出现Can't allocate space for object 'Syslogs' in database 'bkacedb' because the logsegment' segment is full. If you ran out of space in Syslogs, dump the transaction log. Otherwise, use ALTER DATABASE or sp_extendsegment to increase the size of the segment.No changes made to database.因为我的DATABASE已经有400M了,不想再扩大。所以我想dump the transaction log.但不知从何下手,请个位高手指点,先谢了。 A1:很简单,你在Sql Enterprise Manager中对你的数据库右击,再点edit,再点Truncate,就可以将数据库中已完成的事务清掉. 或者用DUMP TRANSACTION ... WITH TRUNCATE就可以了 A2: 您的DATAWINDOW是不是有很多个TABLE的复杂关连?它将导致临时表空间不够,若是,那你就要改变 DATAWINDOW的做法了,例如,你可以在VIEW或者STORE PROCEDURE中将多个TABLE关联起来,然和建立一个用VIEW或者STORE PROCEDURE作为数据源的DATAWINDOW.   -------------------------------------------------------------------------------- Q:在PB中如何实现音乐的播放! 方法一 1、声明外部函数 FUNCTION boolean sndPlaySoundA (string SoundName, uint Flags) LIBRARY "WINMM.DLL" Function Uint LoadLibraryA(String As_Library) Library "kernel32.dll" Subroutine FreeLibrary (Uint Hinstance) Library "kernel32.dll" 2、程序如下: Uint Lu_instance Lu_instance = LoadLibraryA("winmm.dll") if Lu_instance = 0 then SndPlaySoundA("c:\windows\media\chimes.wav",1) FreeLibrary(Lu_instance) end if 3、存在问题: 如何播放格式的音乐? 方法二: 1、声明外部函数 Function Uint ShellExecuteA (Uint hwndId,ref string op,ref string file,ref string parms,ref string dir,Uint show) library "shell32.dll" Function Uint LoadLibraryA (String As_Library) Library "kernel32.dll" Subroutine FreeLibrary (Uint Hinstance) Library "kernel32.dll" 2、程序如下: String Ls_path,ls_file,ls_parms,ls_dir,ls_command Uint lu_return,lu_instance SetNull(ls_parms) //check to see if the dll is available.Return number < 32 if not Lu_Instance = LoadLibraryA("shell32.dll") if Lu_Instance <> 0 then MessageBox("操作提示","SHELL32.DLL动态库不存在!") else //Shell32.dll is here.Get a filename from the user GetFileOpenName("打开文件",ls_path,ls_file,"*","All Files (*.*),*.*") if ls_path <> "" then SetPointer(HourGlass!) //Examine the checkbox for open or print configuration if cbx_print.checked then ls_command = "print" else ls_command = "open" end if //call the function.pass the parent as the ower.run normal. Lu_return = ShellExecuteA(Handle(parent),ls_command,ls_path,ls_parms,ls_path,1) //check for errors from function if lu_return < 32 then MessageBox("操作提示","程序执行非法操作! ~r~n" + ls_path) end if end if //free the resources from the dll since it was loaded with the loadlibrary call FreeLibrary(lu_instance) end if 注:本方法可运行任何文件,当然可以播放音乐文件 和动画文件。在sndPlaySoundA() 的函数定义中,把 string SoundName 定义成 ref string SoundName,再试试,反正这个函数的原型就是有 ref 的。   -------------------------------------------------------------------------------- Q: 如何让数据窗口只显示表的最后几条记录? A1: 加 filter ;根据索引加 where 条件;或者干脆用 rowsmove 把其他记录移到 filter buffer 中。   -------------------------------------------------------------------------------- Q : 我本人最近遇到了这么一个问题!pb6.0在win95中文环境下一切正常,但是移植到win98时汉字出现 的却全都是乱码,请问如何解决这个问题?谢谢!!! A1:请您使用黑体或楷体,否则在无盘工作站和WIN98中都会出现字体显示不出来的情况.   -------------------------------------------------------------------------------- Q: 我如何能动态地在一个grid风格的datawindow中加一个标题行,该datawindow也是动态创建的。多谢! A1:用grid风格的datawindow想加标题行比较麻烦,因为grid风格中的标题band中也会显示网格线,而且 要将text控件的band属性设为Foreground.你可以用Create语句创建一个text控件,然后指定它的位置 和band属性.create的语法如下: dw_1.Modify('create text(band=foreground alignment="2" name=datetext text="text" border="0" color="0" x="0" y="0" height="69" width="650" font.face="Arial" font.height="-9" font.weight="400" font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="16777215" )') 其中text的属性大部分为必需的,如果不完整的话,该text可能不能显示.据我所知,用grid风格的datawindow 时要想加上标题,而且要显示得比较好看,只能用text控件将显示出的多余的网格线给盖住,这样做语法上比较 麻烦,因为你要得到这个datawindow中最后一个列的y值和width,以控制text的width,特别是你这个datawindow 和text是动态创建的.当然这些都是可以实现的,多多钻研吧!   -------------------------------------------------------------------------------- Q: 我遍的程序在PB5中运行的好好的.但是编译好的.EXE文件运行时却提示缺少settransobject or settrans fuction.请问这是怎么回事? A1:该错误大多是由于Transaction没有正确的Connect,你Connect后,应检查sqlcode的值Put transaxtion parameters in scripts .or copy pb.ini to the directory of the *.exe file. A2:应用在pb开发环境中运行时,系统会自动去找需要的库,但编译成.exe文件后运行就需要手工设置路 径或copy这些库到当前目录。一般这些库都能在pb的shared目录下找到。具体可参看“可执行文件调用 动态链接库问题”一帖的答复。已有几位高手详细解释。 A3:可能全局变量与局部变量,事例变量冲突   -------------------------------------------------------------------------------- Q:请问:因为要用连续纸打印发票和报表,在PWIN95中打印机设置处,用自定义纸张设好特定大小发票, 用于打印发票。但是当打印完一张发票以后,打印机自动切纸以后,再打第二张发票时,继续重新打在 第一张发票的位置上,不知如何是好?是否要在PB中用调用外部函数设置自定义纸张大小,才起作用? A1: I had a solution, like follows, void WINAPI PrintSet(LPCTSTR PrinterName, DWORD PaperSize, DWORD Height, DWORD Width, LPDWORD ret_code, LPTSTR errortext) { DEVMODE* lv_devmode; DEVMODE* lv_devmode_2; PRINTER_INFO_2* lv_printer_info; LPTSTR lv_str, pDeviceName; HANDLE phPrinter; DWORD pcbNeeded, lv_dword; lv_printer_info = malloc( 500 ); if (!OpenPrinter(PrinterName, &phPrinter, NULL)) { free(lv_printer_info); *ret_code = GetLastError(); lv_str = "打开打印机失败 !"; strcpy(errortext, lv_str); return; } if (!GetPrinter(phPrinter, 2, lv_printer_info, 500, &pcbNeeded )) { free(lv_printer_info); *ret_code = GetLastError(); ClosePrinter(phPrinter); lv_str = "无法得到打印机参数 !"; strcpy(errortext, lv_str); return; } lv_devmode = lv_printer_info->pDevMode; pDeviceName = lv_devmode->dmDeviceName; lv_dword = DocumentProperties(0, phPrinter, pDeviceName, lv_devmode, 0, DM_OUT_BUFFER); if (lv_dword<0) { free(lv_printer_info); *ret_code = GetLastError(); ClosePrinter(phPrinter); lv_str = "无法取得打印机参数 !"; strcpy(errortext, lv_str); return; } // 修改DEVMODE结构, 设置纸张大小及其高度和宽度 lv_devmode->dmFields = lv_devmode->dmFields|DM_ORIENTATION|DM_PAPERLENGTH|DM_PAPERWIDTH|DM_PAPERSIZE; lv_devmode->dmOrientation = DMORIENT_PORTRAIT ; lv_devmode->dmPaperSize = PaperSize ; lv_devmode->dmPaperLength = Height; lv_devmode->dmPaperWidth = Width; // 通过调用DOCUMENTPROPERTIES函数传会修改的DEVMODE结构, // 在调用时指定DM_IN_BUFFER|DM_OUT_BUFFER lv_devmode_2 = malloc(500); lv_dword = DocumentProperties(0, phPrinter, pDeviceName, lv_devmode_2, lv_devmode, DM_IN_BUFFER|DM_OUT_BUFFER); if (lv_dword<0) { free(lv_devmode_2); free(lv_printer_info); *ret_code = GetLastError(); ClosePrinter(phPrinter); lv_str = "无法设置打印机参数 !"; strcpy(errortext, lv_str); return; } if (!SetPrinter(phPrinter, 2, lv_printer_info, NULL)) { free(lv_printer_info); *ret_code = GetLastError(); ClosePrinter(phPrinter); lv_str = "无法设置打印机参数 !"; strcpy(errortext, lv_str); return; } free(lv_devmode_2); free(lv_printer_info); ClosePrinter(phPrinter); lv_str = "设置打印机参数成功 !"; strcpy(errortext, lv_str); *ret_code = 1; return ; }   -------------------------------------------------------------------------------- Q:如何动态创建控件 ,虽然能够用CREATE来创建构件, 但无法在窗口中显示。 A1:原因是你创建控件的语法不完整,一些必须的属性没有说明,如X,Y,band.你可以先将控件的语法先输 出到文本里,再替换为你的控件的属性.以下为一个text控件的最基本的语法. create text(band=detail alignment="0" text="aaaa:" x="691" y="52" height="77" width="426" name=aaaa font.face="Arial" font.height="-12" font.family="2" font.charset="0" background.mode="1" ) A2: 我又看了看帮助,找到了答案:现在公布: window.openUserObject () 参数请查看帮助   -------------------------------------------------------------------------------- Q:PB做报表时,如何使表格线连续 不同记录之间的表格线总是断的! A1:请将竖线画长点! A2:在报表的属性中设置Units项为1/1000cm或Pixels,这样报表的上下线就可以连续了。   -------------------------------------------------------------------------------- Q:如何取出DDDW中的Display Column的内容。 A1:string ls_value ls_value=dw_1.describe("Evaluate('lookupdisplay(column_name)',1)") column_name=列名 ,'1'表示第一行;看看Help中的Describe   -------------------------------------------------------------------------------- Q:变量je 是decimal {2} 型,语句je=real(data)是从一column object 取得数据。此column 是number(8,2),data是事件itemchange的参数,string型。当string data = "212122.26"时,je=212122.27。这么会这样?请高手指点! A1:用dec()函数转换   -------------------------------------------------------------------------------- Q: 如何在PB6.0中实现图形数据窗口的水平,垂直滑杆拖动(有时数据项很多,满屏显示不下!) A1: 把图形 datawin object的 border 设为可调大小,即resize。然后把datawindow控件选上水平,垂直 滚动条属性即可。   -------------------------------------------------------------------------------- Q:在PowerBuilder中如何释放分配给游标的资源。SQL Server中如何计算master和tempdb的大小。 A1: 用close cursor 可以关闭游标,用deallocate cursor 可以释放分配给游标的资源   -------------------------------------------------------------------------------- Q : 在SCO UNIX OPEN SERVER 3.0 下安装SYBASE10.0.2,当运行SYBINIT到最后要启动SQL SERVER时失败,errorlog出现: kdrdconfig: Invalid config checksum, unable to use config kdconfig: unable to read primary master device kdconfig:read of config block failed 机器情况:P200,16M,2.1G,其中800M分给WIN98,1200M分到UNIX 请问,为什么会出现上述错误?如何解决? A1:看看share memory could not directly allocated在SCO UNIX OPEN SERVER 3.0 下安装SYBASE10.0.2,当运行SYBINIT到最后要: 1, 增加操作系统的Max Shared Memory 2,修改SQL Server的配置 a. Set Total Memeory . ex:32M b. Create Cache for Database or append the default data cache c. 其它需要根据你的具体情况配置 3, 增大tempdb的容量 4, 建立合适的index 根据你的应用建立index,避免大的表扫描。   -------------------------------------------------------------------------------- Q::我的情况是:安装SYBASE,运行SYBINIT进行各项设置时,没有什么异常,SYBINIT运行到最后,BUILD THE MASTER 成功,当它试图Boot the sql server 时出错,boot fail.这是安装的最后一步却失败了,配置中止,安装失败,而不是使用过程中的问题。在这样的情况下, 我能做第二第四点吗?至于第三点我也迷糊……我曾经在SCSI硬盘上和不大于1.2G的IDE硬盘上安装,均成功, 这次不同的是用了2.1G的IDE硬盘,并用了LBA模式,还同时安装了WIN98(想到什么说什么了),而且奇怪的是, 如果我把master建立在文件系统时,安装是成功的,但如果和以前一样将其建立在原始分区上时,就不行了, 出现了那些错误信息,不知道如何解决,请帮我分析一下,我知错了……我以后要好好读书…… A1:你 3 明白, 当然Server已经升起。2,4一定可以。至于你的问题: 1,Unix 的IDE H.D.一般应该为Normal. 2, SYBASE在UNIX下要配置几个参数。前面有过回答。SYBINIT运行到最后,BUILD THE MASTER 成功,当它试图Boot the sql server 时出错,boot fail.这是安装的最后一步却失败了,配置中止,安装失败,而不是使用过程中的问题。设好环境变量后, 试试以下几步: 1, cd /etc/conf/cf.d 用configure 设 16.shared data 为32000000 2, cd /usr/libvi aiomemlock加sybase=32000000 3, cd /etc/conf/sdevice.d 改suds 的第二项'N'为'Y' 4, cd /etc/conf/cf.d link_unix   -------------------------------------------------------------------------------- Q: 在datawindow的itemchanged事件中有如下代码: integer li_rt if dwo.name='col_1' then li_rt=this.setitem(row,'col_2','1') end if 其中col_2是一checkbox表现形式的列,等于'1'时为on;但这段程序执行后,col_2并没on, why? how? A1: 我试过了,没问题呀,工作非常正常.是不是别的地方有错?   -------------------------------------------------------------------------------- Q:1.sybase之数据库除过磁带机备份,还有何方便的方式?用镜像如何恢复?其它方式? 2.假设本地亦有数据库(sybase或sql anywhere),通过拨号定期用数据管道更新sybase服务器,且需更新的表较多,如何制定更新策略,如 何在速度及可操作性两方面取得很好的折中,用统一的方式进行? A1: 1, 备份方法最简单的是畚份为文件。 ex: isql下用 dump database pub2 to pub2980911 镜像设备如果是文件设备,把文件cp一下就可以(我没用过)。CD-RW是一个不错的备份方法。 2,用bcp要比pipeline快很多。   -------------------------------------------------------------------------------- Q: 大家好!在下有几个有关pb.ini的问题请教: 1。在哪里可以找到该文件中各段作用及意义的详细解释?或者哪位仁兄能为在下稍作说明, 在下不胜感激! 2。是否每各application都必须有一个ini文件? 其中哪些内容是必须的? A1: 您完全可以不要INI文件,只不过用INI文件方便一些,当与数据库连接的信息或配置信息变 化时不用修改程序而已。一般在WIN95中用注册表代替。   -------------------------------------------------------------------------------- Q: 我所用的后台是sql server 11.5,对于违反DBMS 数据一致性的错误信息如何用中文错误信息代替?常见的如数据录入时,不能为空的字段没 有输入数据。请各位高人指点迷津。 A1:在DW的dberror事件中,用MessageBox写上自己的Error Message,最后,关键的一点, return 1(或>0的数)。   -------------------------------------------------------------------------------- Q: 请详细说一下用PB5.0访问LAN上另一台PC上FOXPRO数据库的步骤 Map the director which your Fox data located to a local drive, such F:.When you install PB, you can install the Intersolve ODBC driver for dBASE. It includes the FoxPro format.Use Config ODBC to set up the data source. It is very easy. Just refer the data source director, for example F:\fox, the fox will be a database. The .dbf files in fox directory will be tables. A1: 最好不要映射网络驱动器,因为它经常变配置ODBC直接写: \\server_zhhz\zhhz_dbfiles\...\zhhz_test.db机器名 目录 文件   -------------------------------------------------------------------------------- Q : 在PB编程中,可以定制用户事件,请问如果想采用WINSOCK API编程,当网络上数据来时, 哪个WINDOWS消息会被触发?PB中对应的事件ID是什么? A1:PowerBuilder does not support Socket programming. You can use VB or Power++ to create an ActiveX which encapsulates all socket methods. Then integrates this ActiveX into PowerBuilder. Note: If you call the receive method. The method will block until all data are received   -------------------------------------------------------------------------------- Q : 请问PB5如何连接LAN上另外一台PC上的FOXPRO文件? A1:使用ODBC连接当文件名不确定时,可以动态修改注册表中的ODBC信息及OBDC.INI文件中的信息,再用 transaction连接。   -------------------------------------------------------------------------------- Q: PB5.0中生成*.exe文件后执行时报错: DataWindow Error Database transaction information not available. Call SetTrans or SetTransObject function. 请帮助解释一下。 A1:在DataWindow Retrieve之前应该用Settransobject函数,即: Connect using sqlca; dw_1.settransobject(sqlca) dw_1.retrieve()   -------------------------------------------------------------------------------- Q : 通过Winsock已实现调用Web页面的功能,但在拨号时win95自动启动的拨号网络程序会出现: ‘如果建立了此连接,当前使用的NetWare服务器将无法访问。 请单击"确定"继续拨号。如果此时不想拨号,请单击"取消"。’的信息 ,从而需要人手工点击一下,并且无法自动收线。 请问Winsock中是否有自动拨号和收线的函数? A1:PB原本是不支持WINSOCK编程的,但POWERSOFT提供了pslib5.dll和winsock.pbl两个工具.前者是winsock 2.0的DLL,后者是PB的用户对象集,提供了winsock的所有函数.   -------------------------------------------------------------------------------- Q:PB6 的应用生成可执行文件后,怎么知道它需要哪些动态连接库?是否所有库都能在shared目录下找到? A1:(only for win95) 一、shared ALL PBVM60.DLL; Datawindow and report PBDWE60.DLL;Richtext PBRTC60.DLL;OLE win95 PBAEN60.TLB 二、DB interface MS SQL server 6.0 PBMSS60.DLL;PB ODBC PBODB60.DLL;PBODB60.INI;Oracle 7.1 PBO7106.DLL;Oracle 7.2 PBO7206.DLL;Oracle 7.3 PBO7306.DLL;Sybase SQl Server 11.x PBSYC60.DLL 三、数据库驱动DLL这个太多了,查查相应的HLP文档。 shared DLL、DB interface、DB driver 三者缺一不可,把所有的这些文件放入\window目录下是可以的,因为该目录是window的缺省目录, QA1:但是不能把所有的应用程序的DLL都放这里吧? 有两种Solution: 1>>把工作路径加入Windows注册表中应用程序的PATH中,(V_V); 2>>把工作路径加入Autoexec.bat中(*^_^*)。 这样,这些DLL放在那里都可以了!   -------------------------------------------------------------------------------- Q:我使用PWIN95 OSR2, PB5.0, SQL ANYWHERE本地库.在PB下使用自己的配置文件,可以访问本地库.但是编译生成EXE后,无法访问.错误如下: SQLCODE = -1 SQLERRTEXT : SQLState = IM004 [Microsoft] [ODBC Driver Manager] Driver's SQLAllocEnv failed! 另外,我的APP如果同时访问网络DB和本地DB,程序打包时应该注意什么问题,我总是无法将本地数据库打包成功. A1: 1》这些库都包括了吗?(PB在windows注册表中包含了DLL的路径,所以他的DLL可以不必放在PB60.EXE下,yours?) 2》SQLCA直接写吧,不要从PB.ini中读。 3》一定要找到SQLANY50和oracle 7.3的DB driver,并放置到合适的路径下。SQLANY50 WOD50T.DLL,WL50ENT.DLL,WTR50T.DLL,WODBC.HLP 4》你的DLL包含了MS的DB driver了吗?DS16GT.DLL,DS32GT.DLL, MSCVRT40.DLL,ODBC32.DLL,ODBC16GT.DLL, ODBC32GT.DLL, ODBCCP32.CPL, ODBCCR32.DLL,ODBCINT.DLL,ODBCINST.CNT,ODBCTRAC.DLL,ODBCAD32.EXE 5》试试控制面板中的ODBC32,是不是有什么问题。 6》如还有问题,请再说详细些。   -------------------------------------------------------------------------------- Q: 我使用PWIN95 OSR2, PB5.0, SQL ANYWHERE本地库.在PB下使用自己的配置文件,可以访问本地库.但是编译生成EXE后,无法访问.错误如下: SQLCODE = -1 SQLERRTEXT : SQLState = IM004 [Microsoft] [ODBC Driver Manager] Driver's SQLAllocEnv failed! 另外,我的APP如果同时访问网络DB和本地DB,程序打包时应该注意什么问题,我总是无法将本地数据 库打包成功. A1: 其实,如果编译没有错误,只要在pb目录中shared子目录下,把Pbvm60.dll拷贝到win95的目录下 ,然后在把pbdwe60.dll、pbodb60.dll、pbrtc60.dll、pbtra60.dll、pbodb050.dll、pbmss60.dll 这几个动态连接库,拷贝到你编译后的工作目录下,就可以了。   -------------------------------------------------------------------------------- Q : 请教pb6.0如何调用win95的输入法问题。比如:当光标在编辑框中,系统能自动的显示当前的输入 模式,不用Ctrl+space组合键来显示当前的输入法,请问怎么实现这一方法。谢谢!!! A1:先在Local extenal function定义下列API Function function boolean ImmSimulateHotKey (UnsignedLong hWnd,UnsignedLong dwHotKeyID) library "IMM32.dll" function unsignedlong GetKeyboardLayout (unsignedlong wLayout)library "user32.dll" function boolean ImmIsIME(unsignedLong hklKeyboardLayout)library "IMM32.DLL" 如果是使用datawindow, 在itemchangedfocus event中: ulong hklKeyboardLayout Choose Case dwo.name Case "chinese_text" // 需要中文输入的字段 hklKeyboardLayout=GetKeyboardLayout(0) if not ImmIsIME(hklKeyboardLayout) then ImmSimulateHotKey(handle ( parent,112) end if Case "Englist_text" // 英文输入字段 hklKeyboardLayout=GetKeyboardLayout(0) if ImmIsIME(hklKeyboardLayout) then ImmSimulateHotKey(handle ( parent ),112) end if End Choose 在windows 编辑框中类似。   -------------------------------------------------------------------------------- Q:DataWindow控件Find函数的查询条件好象只能有一个like,而且有了like就不能和其他条件组合. A1: 1》可以用方法POS(str1,str2)>0 and ...; 2》把like子句()。即:(col1 like '%ggg%') and (col2 like '___WW')。   -------------------------------------------------------------------------------- Q:PB可以调用ORACLE中的存储过程或存储函数。但我试过多次,PB无法调用定义在PACKAGE中的函数 或过程,此时这些函数或过程在PB中根本看不到。不知是PB的问题还是我用的不对。 A1:首先在PACKAGE声明方法(Function,受JAVA的“METHOD”的影响不习惯叫“函数”, HEHE..)这个声明把该方法声明成公共 (Public)方法。然后在PACKAGE BODY中定义该方法。(如果仅在PACKAGE BODY中定义该方法,则被认为是私有(Private)方法,将不能被包外的应用访问,OOP的典型应用)例如:定义包,并声明一个 procedure pro_1: Package p_zhhz is procedure pro_1(v1 in number); end p_zhhz; 定义包体,在包体中定义这个 procedure pro_1: Package BODY p_zhhz is procedure pro_1(v1 in number) is begin delete from a_zhhz_test where zhhz_number = v1; end pro_1; end p_zhhz; 在PB中调用: int li_v1 //声明procedure,并且置初值 li_v1=5 DECLARE sel_zp_zhhz_1998_9_2 procedure for p_zhhz.pro_1(:li_v1) ; EXECUTE sel_zp_zhhz_1998_9_2; CLOSE sel_zp_zhhz_1998_9_2; // (zhhz 1998-9-2) // zhhz_zhhz@hotmail.com A2: 感谢你的帮助.由于我的存储过程是个函数,所以没采用EXECUTE;在TRANSACTION对象中声明时采用 "RFCFUNC"定义为一个函数,加上包名.问题已得到解决.   -------------------------------------------------------------------------------- Q:为何在一个TabPage上建一个DATA WINDOW 后不能COMMIT? A1:commit是嵌入SQL语句,update()函数把对数据库的修改写到日志,commit递交到数据库,因此 不存在无法commit的问题。可能您没有把TabPage上的update()函数要写成Tab_?.TabPage_?.dw_?.update() A2:能够!可能是你的data window的属性(update)没有设置!   -------------------------------------------------------------------------------- Q: 我本人曾在pb的Datawindow中遇到了日期格式的困扰。每次要输入不同的日期时都要先删除它前面或者 是后面的数据,才能进行输入使用起来很不方便。比如:1998-01-02这个日期,当光标定位在1998的前 面时,要更改为2001时,必须先删除1998这四个数据才能正常输入2001,这样使用起来很不方便。方便 的作法应是,当光标定位到1998时就可以直接的输入2001,不用Del键就能把1998替代为2001。我本人 也在格式输入方面做了很多的尝试,但一直没能实现。那位pb族的朋友们做过这一方面的输入。能否给 予指教,不胜感激。 A1:我用PB的EDITMASK 时,可以直接修改无须用DEL先删除。不知你的属性如何设置 -------------------------------------------------------------------------------- 对我有用[0] 丢个板砖[0] 引用 | 举报 | 编辑 删除 管理 ldy ldy 等级: 结帖率:100% #2 得分:20 回复于: 2001-12-23 15:25:25 Merry Christmas To EveryOne! 对我有用[0] 丢个板砖[0] 引用 | 举报 | 编辑 删除 管理 daluobo daluobo 等级: 结帖率:100% #3 得分:20 回复于: 2001-12-23 20:59:16 有空就看看 对我有用[0] 丢个板砖[0] 引用 | 举报 | 编辑 删除 管理 junyong junyong 等级: 结帖率:97.78% #4 得分:10 回复于: 2001-12-24 09:00:54 好长啊,看起来有点累 对我有用[0] 丢个板砖[0] 引用 | 举报 | 编辑 删除 管理 管理菜单 置顶 推荐 锁定 移动 编辑 删除 帖子加分 帖子高亮 结帖 发帖 回复 写出你眼中的IE11 赢取新年好礼! 勇敢写出你的爱 赢莫文蔚签名大礼 2014年4月微软MVP申请开始了! 陈勇- 敏捷开发现状及发展之路 CSDN高校俱乐部 高校全新改版邀你来学习和挑战 本帖子已过去太久远了,不再提供回复功能。 核心技术类目 全部主题 Java VPN Android iOS ERP IE10 Eclipse CRM JavaScript Ubuntu NFC WAP jQuery 数据库 BI HTML5 Spring Apache Hadoop .NET API HTML SDK IIS Fedora XML LBS Unity Splashtop UML components Windows Mobile Rails QEMU KDE Cassandra CloudStack FTC coremail OPhone CouchBase 云计算 iOS6 Rackspace [关闭] [关闭]