定制PB与SQL Anywhere的程序发布

合集下载

pb 12+sqlanywhere程序打包直接运行

pb 12+sqlanywhere程序打包直接运行

Pb12 + sqlanywhere11 应用程序打包指南经过我的摸索,总结出用PB12生成可执行文件,在所用数据库为SQL ANYWHERE11.0,安装程序所在机器无PB环境和数据库环境的情况下,程序能正常运行所需要的文件和注册信息,我在WIN2003和winxp下测试成功。

1、打包所需程序:a、应用程序本身所需的文件:你的应用程序可执行文件和相关的dll文件、数据库文件、程序中要用到的图片文件、cur光标文件和ocx文件等等,这些文件的路径必须与你在程序中指定的路径相同。

b、PB12应用程序所需文件: PBVM120.DLL、libjcc.dll、libjutils.dll、PBSHR120.DLL,这些文件都必须在可执行文件的当前目录下。

c、数据库所需引擎文件:默认安装路径C:\Program Files\SQL Anywhere 11\Bin32下的dbctrs11.dll、dbserv11.dll、dblgde11.dll、dbodbc11.dll、dbeng11.exe,这些文件也最好在可执行文件的当前目录下(当然也可以通过注册表来指定路径)。

2、注册信息:a.在HKEY_CURRENT_USER\Software\ODBC\OBDC.INI\你的数据源名下注册如下信息:Windows Registry Editor Version 5.00[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\easyuse_sqlanywhere11]"Driver"="C:\\PROGRA~1\\SQLANY~1\\Bin32\\dbodbc11.dll""UserID"="dba""DatabaseName"="easyuse""DatabaseFile"="E:\\db\\easyuse12_sybase\\easyuse.db""AutoStop"="YES""Integrated"="NO""EncryptedPassword"="2ff4d70e24d7a332818289aff1c4fc741485e868""Debug"="NO""DisableMultiRowFetch"="NO""DatabaseKey"="52Oskar2012""Compress"="NO"b.SOFTWARE\ODBC\ODBCINST.INI\Adaptive Server Anywhere 11下注册如下信息:Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\SQL Anywhere 11]"Driver"="C:\\PROGRA~1\\SQLANY~1\\Bin32\\dbodbc11.dll""Setup"="C:\\PROGRA~1\\SQLANY~1\\Bin32\\dbodbc11.dll"c.HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\SQL Anywhere 11 Translator下注册如下信息:Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\SQL Anywhere 11Translator]"Setup"="C:\\Program Files\\SQL Anywhere 11\\Bin32\\dbodtr11.dll""Driver"="C:\\Program Files\\SQL Anywhere 11\\Bin32\\dbodtr11.dll"3、用InstallShield能十分方便地注册以上信息,注册后在控制面板中的ODBC数据源配置中也将无法找到你的数据源,有一定的安全性。

《计算机管理信息技术基础》课程教学大纲

《计算机管理信息技术基础》课程教学大纲

计算机管理信息技术基础(学时数:32学时学分:2)一、授课对象全院本科学生。

二、课程的地位、目的和任务本课程是全院本科学生的选修课程。

随着信息技术的发展和普及,管理信息系统在企业经营管理和社会经济生活中所起的作用越来越重要,其理论研究成果和新的应用等受到了各行业的高度重视。

管理信息系统因而也成为高等教育经济管理课程中的主要课程之一。

通过本课程的学习,让普通本科学生对管理信息系统这一新兴学科领域有一个初步的了解;并在此基础上深入了解管理信息系统的基础概念、常用的系统模式、开发方法和管理信息系统的社会环境等知识;通过本课程的教学,使学生把握住管理信息系统比较完整的整体形象,同时具备一定使用信息系统解决经营管理上的实际问题的能力。

三、课程的主要内容及基本要求(一)课程的主要内容1.管理信息系统的基本概念(1)信息化社会、信息系统和管理科学的定义(2)数据、信息的概念及其特征2.相关的计算机技术(1)计算机操作系统(2)数据库系统(3)计算机管理信息系统的常用模式(4)办公自动化技术3.分布式管理信息系统的分类(1)C/S结构的MIS系统(2)B/S模式的MIS系统(3)前/后台模式系统的开发模式4.后台数据库的构建(1)关系数据库的数据库、表、字段和记录的概念(2)常用数据类型(3)数据模型建立和数据组织方式(4)数据完整性和事务处理5.管理信息系统的程序设计方法(PB7.0)(1)面向对象的程序设计概念(2)基于对象的程序设计方法(3)常用的面向对象编程工具介绍(4)PowerBuilder7.0程序设计环境介绍6.管理信息系统前端程序(应用前台)的开发(一)(1)应用对象的创建(2)应用对象的应用(3)应用对象的运行7.管理信息系统前端程序(应用前台)的开发(二)(1)常用对象之一——窗口对象(2)创建新的窗口对象(3)窗口的属性、事件及运行(4)常用的窗口控件(5)常用的控件事件(6)编程实例8.管理信息系统前端程序(应用前台)的开发(三)(1)常用对象之二——函数对象(2)常用对象之三——结构体(3)常用对象之四——菜单对象(4)常用对象之五——数据窗口(5)数据窗口的属性、事件及运行(6)数据窗口的使用及编程(7)编程实例9.管理信息系统后端程序(后台数据服务)的开发(1)常用的后台数据库(2)SQL 7.0、ACCESS97及PB自带SYBASE SQL ANYWHERE数据库(3)ODBC的概念及组成(4)ODBC的设置和使用(5)后台数据库的建立(6)实例编程10.管理信息系统的深入开发(1)数据窗口的深入开发(2)多线程事物对象的处理(3)常见的C/S模式解决方案(4)微软构架下的B/S模式解决方案实例编程(二)课程的基本要求(1)从总体上了解管理信息系统的技术背景和主要研究的内容;准确把握管理信息系统的技术、管理方法和组织行为;(2)了解管理信息系统实施的关键技术和具体的设计思路;(3)掌握可视化编程的概念,学会使用PB编程环境;(4)学生可针对具体问题进行需求分析并提交解决方案,并能在此基础上运用PB设计出包括:后台数据库、前端应用平台、能够实现数据维护、数据管理、并在网络模式下运行的C/S结构的基本分布式信息管理系统。

PB发布程序时需要的动态链接库dll文件

PB发布程序时需要的动态链接库dll文件
PBDWE60.DLL
PBMSS60.DLL
PBVM60.DLL
3.PB+SYBASE SQL SEVER
PBDBL60.DLL
PBDBT60.DLL
PBSYC60.DLL OR PBSYT60.DLL
PB6.5所需文件:
PBVM60.DLL PowerBuilder 虚拟机
PBDWE60.DLL DataWindow 数据窗口引擎
PBRTC60.DLL 超文本控件
PBTRA60.DLL 数据库访问跟踪
PBODB60.DLL PB的ODBC接口
PBIN760.DLL INFORMIX 接口
PBODB70.DLL PBODB70.INI PB的ODBC接口
PB8.0所需文件:
PBVM80.DLL PowerBuilder 虚拟机
LIBJCC.DLL PowerBuilder 库管理
PBDWE80.DLL DataWindow 数据窗口引擎
PBRTC80.DLL 超文本控件
Nnfdnt.dll
NNFNNT.DLL
NSNT.DLL
NTNT.DLL
NTTNT.DLL
OCIW32.DLL
Ora73.dll
OTRACE73.DLL
2.PB+MS SQL SEVER
Dbnmpntw.dll 命名管道支持文件
Dbmssocn.dll TCP/IP 支持文件 (可选)
Dbmsspxn.dll IPX 支持文件 (可选)
Ntwdblib.dll SQLServer核心文件(这个文件最重要)
PBMSS60.DLL Microsoft SQL Server接口

pb问题与解答

pb问题与解答

Q: 如何在PB5中自动生成行号A1:自动生成行号的方法很多,你可以看看PB的例子就知道了。

目前我用的方法是,先用SQL语句统计表中最大的行号,把结果保存到一个变量中去,然后再对此变量进行加1不就可以了吗?但这种做法只是从最大的行号开始产生行号,产生最小的行号也是类似的。

--------------------------------------------------------------------------------Q: delelte数据窗口中若干行,然后update,出现: “rows changed between retrieve and update No changes made to database... Delete from table where ...." 请教是何缘故,该数据窗口是updatable 的,未设置关键字。

A1 : 试试更改数据窗口的Update Properties中的'Where Clause for Update/Delete'中的选项。

--------------------------------------------------------------------------------Q: 如何能够作到,在打印一个DataWindows后不自动换页,而继续打印下一个DataWindows?谢谢A1:在PrintPage事件中返回0--------------------------------------------------------------------------------Q:我在table中改了一个字段的类型,回来一看,相应的datawindow字段在运行时再也无法输入东西了,请问哪位大虾帮我分析一下.Thanks.A1: datawindow具有自己的SQL语法,该语法和数据库后台中的变化不能时时响应,因此,当后台的数据库发生修改后,应该手工修改datawindow中的列定义,如:将变化的列删除,再次添加就可以了。

SQL Anywhere 10大提速

SQL Anywhere 10大提速

SQL Anywhere 10大提速 ——物化视图、快照隔离、新索引机制Sybase Confidential Propriety.iAnywhere Confidential Proprietary.议程SQL Anywhere 10大提速 大提速物化视图 快照隔离 新索引机制固化视图什么是固化视图固化视图类似于有固化行的表与有查询规范的视图之间的交叉点。

固化视图存储查询结果,且通常用于存储基于其它表和视图数据 的计算结果。

固化视图固化视图与普通视图的异同 • 相同点:这与传统视图非常相似,因为两者均显示计算结果。

•不同点:传统视图仅在调用时生成传统数据,并且不在磁盘上永久存储计 算结果,而固化视图则存储计算结果。

因而,固化视图需要占用 额外的存储空间,这与表相似。

固化视图固化视图与表的异同 • 相同点:需要占用存储空间。

• 不同点:不允许对固化视图使用像INSERT、UPDATE和DELETE这样的 SQL语句和其它数据操纵语言(DML)。

固化视图是只读的,因此 只能对其使用SELECT语句。

固化视图固化视图的功能 • 在数据库中象表一样存储计算结果数据 • 只读,不允许进行数据修改操作 • 可以对其中的列建立索引 • 可以控制数据刷新的频率 • 可以设置查询计划最优化固化视图何时用固化视图 • 当使用大容量的数据库时 • 查询会涉及大量的磁盘数据且处理器能力有限时 • 大量的重复的集合查询时 • 对查询结果的实时性要求不是很高时固化视图使用固化视图的好处 • 提高查询操作的性能 • 提高了并发性固化视图固化视图Demo • 演示由于使用固化视图而加快查询速度固化视图 示例固化视图示例setup.bat 1000000执行时间: 123.194秒dbisql -c "UID=DBA;PWD=sql;ENG=mv"执行select.sql 执行时间: 2.8172执行matview.sql 创建物化视图ALTER MATERIALIZED VIEW demo ENABLE USE IN PTIMIZATION;执行select.sql 执行时间: 0.00172结论结论::使用物化视图使性能提高1600余倍议程SQL Anywhere 10大提速 物化视图快照隔离新索引机制快照隔离事务的4个隔离级别•读未提交•读已提交•可重复读•可串行读不可能不可能不可能可串行读可能不可能不可能可重复读可能可能不可能读已提交可能可能可能读未提交幻读不可重复读脏读隔离级别快照隔离快照隔离的3种类型•快照•语句快照•只读语句快照快照隔离快照隔离的功能•写入用户和读取用户互不妨碍•读取用户使用数据库的快照版本•数据库服务器将返回数据的已提交版本来响应任何读取请求•可以通过全局数据库选项来设置此隔离级别•能显示出当前的活动快照快照隔离何时用快照隔离•在数据库中访问大量行(例如收集统计统计信息)•读取密集的应用•存储过程或业务逻辑中事务长期占用快照隔离快照隔离的好处•减少了数据库中锁现象不同的读取数据的用户互不影响读取用户不阻塞写入用户写入用户不阻塞读取用户更好的数据库性能•在报表应用中保证了操作的连续性快照隔离示例ISOLATION LEVEL 3(隔离级别3)的演示1、建立两个连接DBISQL1和DBISQL22、在DBISQL1中,允许快照隔离:SET OPTION public.allow_snapshot_isolation= ’ON’;3、在DBISQL1中,把隔离级别设置为3,最高级别:SET OPTION isolation_level= 3;4、在DBISQL1 中执行以下命令:SELECT * FROM products WHERE ID >= 200 AND ID <= 500;快照隔离示例5、在DBISQL2 中执行以下命令:INSERT INTO products VALUES(450, 'Jacket', 'Nice Jacket','Large','Green', 50, 100.0,NULL);6、注意此执行会被阻塞,如右图:7、在DBISQL1中执行以下命令:COMMIT;8、在DBISQL2 中执行以下命令:ROLLBACK;快照隔离示例快照隔离))SNAPSHOT(快照隔离1、在DBISQL1中,将隔离级别重置为SNAPSHOT :SET TRANSACTION ISOLATION LEVEL SNAPSHOT;2、在DBISQL1 中执行以下命令:SELECT * FROM products WHERE ID >= 200 AND ID <= 500;3、在DBISQL2 中执行以下命令:INSERT INTO products VALUES (450, ’Jacket’, ’Nice Jacket’, ’Large’, ’Green’, 50, 100.0,NULL);快照隔离示例4、DBISQL2未被阻塞,而且INSERT语句在DBISQL1没有COMMIT和ROLLBACK的情况下成功执行。

IANYWHERE SQL Anywhere Studio 介绍

IANYWHERE SQL Anywhere Studio 介绍

SQL Anywhere® Studio 介绍部件号: DC32073-01-0902-01上次修改时间: 2005 年 1 月版权所有版权所有 © 1989-2005 Sybase,Inc. 部分版权所有© 2001-2004 iAnywhere Solutions,Inc. 保留所有权利。

未经 iAnywhere Solutions,Inc. 的事先书面许可,本书的任何部分不能以任何形式、任何手段(电子的、机械的、手工的、光学的或其它手段)进行复制、传播或翻译。

iAnywhere Solutions,Inc. 是 Sybase,Inc. 的子公司。

Sybase、SYBASE(徽标)、AccelaTrade、ADA Workbench、Adaptable Windowing Environment、Adaptive Component Architecture、Adaptive Server、Adaptive Server Anywhere、Adaptive Server Enterprise、Adaptive Server Enterprise Monitor、Adaptive Server Enterprise Replication、Adaptive Server Everywhere、Adaptive Server IQ、Adaptive Warehouse、AnswerBase、Anywhere Studio、Application Manager、AppModeler、APT Workbench、APT-Build、APT-Edit、APT-Execute、APT-Library、APT-Translator、ASEP、AvantGo、AvantGo Application Alerts、AvantGo Mobile Delivery、AvantGo Mobile Document Viewer、AvantGo Mobile Inspection、AvantGo Mobile Marketing Channel、AvantGo Mobile Pharma、AvantGo Mobile Sales、AvantGo Pylon、AvantGo Pylon Application Server、AvantGo Pylon Conduit、AvantGo Pylon PIM Server、AvantGo Pylon Pro、Backup Server、BayCam、Bit-Wise、BizTracker、Certified PowerBuilder Developer、Certified SYBASE Professional、Certified SYBASE Professional 徽标、ClearConnect、Client Services、Client-Library、CodeBank、Column Design、ComponentPack、Connection Manager、Convoy/DM、Copernicus、CSP、Data Pipeline、Data Workbench、DataArchitect、Database Analyzer、DataExpress、DataServer、DataWindow、DB-Library、dbQueue、Developers Workbench、Direct Connect Anywhere、DirectConnect、Distribution Director、Dynamic Mobility Model、Dynamo、e-ADK、E-Anywhere、e-Biz Integrator、EC Gateway、ECMAP、ECRTP、eFulfillment Accelerator、Electronic Case Management、Embedded SQL、EMS、Enterprise Application Studio、Enterprise Client/Server、Enterprise Connect、Enterprise Data Studio、Enterprise Manager、Enterprise Portal(徽标)、Enterprise SQL Server Manager、Enterprise Work Architecture、Enterprise Work Designer、Enterprise Work Modeler、eProcurement Accelerator、eremote、Everything Works Better When Everything Works Together、EWA、E-Whatever、Financial Fusion、Financial Fusion(及设计)、Financial Fusion Server、Formula One、Fusion Powered e-Finance、Fusion Powered Financial Destinations、Fusion Powered STP、Gateway Manager、GeoPoint、GlobalFIX、iAnywhere、iAnywhere Solutions、ImpactNow、Industry Warehouse Studio、InfoMaker、Information Anywhere、Information Everywhere、InformationConnect、InstaHelp、Intelligent Self-Care、InternetBuilder、iremote、iScript、Jaguar CTS、jConnect for JDBC、KnowledgeBase、Logical Memory Manager、Mail Anywhere Studio、MainframeConnect、Maintenance Express、Manage Anywhere Studio、MAP、M-Business Channel、M-Business Network、M-Business Server、MDI Access Server、MDI Database Gateway、media.splash、Message Anywhere Server、MetaWorks、MethodSet、ML Query、MobiCATS、My AvantGo、My AvantGo Media Channel、My AvantGo Mobile Marketing、MySupport、Net-Gateway、Net-Library、New Era of Networks、Next Generation Learning、Next Generation Learning Studio、O DEVICE、OASiS、OASiS 徽标、ObjectConnect、ObjectCycle、OmniConnect、OmniSQL Access Module、OmniSQL Toolkit、Open Biz、Open Business Interchange、Open Client、Open Client/Server、Open Client/Server Interfaces、Open ClientConnect、Open Gateway、Open Server、Open ServerConnect、Open Solutions、Optima++、Orchestration Studio、Partnerships that Work、PB-Gen、PC APT Execute、PC DB-Net、PC Net Library、PhysicalArchitect、Pocket PowerBuilder、PocketBuilder、Power Through Knowledge、power.stop、Power++、PowerAMC、PowerBuilder、PowerBuilder Foundation Class Library、PowerDesigner、PowerDimensions、PowerDynamo、Powering the New Economy、PowerJ、PowerScript、PowerSite、PowerSocket、Powersoft、Powersoft Portfolio、Powersoft Professional、PowerStage、PowerStudio、PowerTips、PowerWare Desktop、PowerWare Enterprise、ProcessAnalyst、QAnywhere、Rapport、Relational Beans、RepConnector、Replication Agent、Replication Driver、Replication Server、Replication Server Manager、Replication Toolkit、Report Workbench、Report-Execute、Resource Manager、RW-DisplayLib、RW-Library、S.W.I.F.T. Message Format Libraries、SAFE、SAFE/PRO、SDF、Secure SQL Server、Secure SQL Toolset、Security Guardian、SKILS、smart.partners、smart.parts、smart.script、SQL Advantage、SQL Anywhere、SQL Anywhere Studio、SQL Code Checker、SQL Debug、SQL Edit、SQL Edit/TPU、SQL Everywhere、SQL Modeler、SQL Remote、SQL Server、SQL Server Manager、SQL Server SNMP SubAgent、SQL Server/CFT、SQL Server/DBM、SQL SMART、SQL Station、SQL Toolset、SQLJ、Stage III Engineering、、STEP、SupportNow、Sybase Central、Sybase Client/Server Interfaces、Sybase Development Framework、Sybase Financial Server、Sybase Gateways、Sybase Learning Connection、Sybase MPP、Sybase SQL Desktop、Sybase SQL Lifecycle、Sybase SQL Workgroup、Sybase Synergy Program、Sybase User Workbench、Sybase Virtual Server Architecture、SybaseWare、Syber Financial、SyberAssist、SybMD、SyBooks、System10、System11、System XI(徽标)、SystemTools、Tabular Data Stream、The Enterprise Client/Server Company、The Extensible Software Platform、The Future Is Wide Open、The Learning Connection、The Model For Client/Server Solutions、The Online Information Center、The Power of One、TotalFix、TradeForce、Transact-SQL、Translation Toolkit、Turning Imagination Into Reality、UltraLite、、UNIBOM、Unilib、Uninull、Unisep、Unistring、URK Runtime Kit for UniCode、Versacore、Viewer、VisualWriter、VQL、Warehouse Control Center、Warehouse Studio、Warehouse WORKS、WarehouseArchitect、Watcom、Watcom SQL、Watcom SQL Server、Web Deployment Kit、Web.PB、Web.SQL、WebSights、WebViewer、WorkGroup SQL Server、XA-Library、XA-Server 和 XP Server 是 Sybase,Inc. 或其子公司的商标。

pb安装程序如何自动注册ODBC数据源

pb安装程序如何自动注册ODBC数据源

安装程序如何自动注册ODBC数据源(文/张涛)数据库应用系统不同于一般的应用程序,它的分发过程中应该直接实现ODBC数据源的注册与安装,所以它始终是一些初学者经常询问的问题。

本文就以一个使用PB6.5开发的以SQL Any Where 5.5为数据库的应用为例,介绍如何使用InstallShield 6.0制作一个可以完成ODBC数据源注册的安装程序。

ODBC数据源的注册可以通过修改注册表来实现,从InstallShield 5.1以后版本都提供了注册表注册功能,你可以方便的在安装过程中实现注册表的添加与修改。

具体方法如下:首先假设qms.db、qms.log是系统使用的数据库文件(SQL Any Where 5.0),设置安装到< TARGETDIR >目录,也就是用户选择安装的路径,在InstallShied中用< TARGETDIR >表示。

启动数据库引擎所需的文件是:wtr50t.dll、wod50t.dll、wl50ent.dll、dbl50t.dll、dbeng50.exe等,设置安装到<COMMONFILES>\My Shared目录下,也就是Program Files\Common Files\My Shared,这种文件存放位置比较符合规范,大家可以注意到Insprise、Microsoft等大公司的产品需要的共享文件都放在类似的路径下。

然后,在InstallShield中切换到“Resources”页,这里可以设置定量表、注册表、快捷方式等,在“Registry Entries”上单击鼠标右键,选中“New Registry Set”,给它取得名字。

然后就可以像在注册表中添加简直一样添加内容了,如图所示。

如果你使用的是5.1版本,就必须一次写到底,例如创建“HKEY_LO CAL_MACHINE\Software\ODBC\ODBC.INI\Qms”主键时就必须在“HKEY_LOCAL_MACHINE”下添加“Software\ODBC\ODBC.INI\Qms”,然后在它下面添加字符串值、二进制值或者DWORD值。

最新pb学生成绩管理系统(1)

最新pb学生成绩管理系统(1)

学生成绩管理系统一、系统分析与设计在任何高等院校,学生的成绩管理都是学校教务管理的重要环节之一。

随着学校学生人数的增加,学生成绩管理的任务更加繁重,必须借助现代化的管理工具和手段提高学生成绩管理效率。

学生成绩管理系统广泛适用于高校教务管理部门的学生成绩管理。

1、系统功能分析系统功能分析阶段的任务就是确定该系统所要解决的问题及其具体要求。

需要通过与用户的交流和沟通明确用户对系统的功能要求,最终列出系统可以实现的功能由用户确认。

本例中的学生成绩管理系统需要完成的主要功能如下。

⑴班级信息的输入和存储,包括班级编号、班级名称、所属院系、入校时间和学制等。

⑵对已经输入的班级信息的修改、查询。

⑶学生基本信息的输入和存储,包括学号、姓名、性别、出生日期、班级等。

⑷学生基本信息的修改和查询。

⑸每学期初各班所开设课程的输入,包括课程名、学期、学时等。

⑹各班所开设课程信息的修改和查询。

⑺学期末输入每个学生的考试成绩。

⑻学生成绩的修改。

⑼查询某个学生某学期的各科成绩。

⑽查询并打印某班某学期所有学生的各科成绩。

⑾查询并打印某班某学期某科成绩。

⑿系统具有用户和密码的管理。

2、系统功能模块设计通过对上述各项功能的分析、分类、综合,按照模块化程序设计的要求,得到如图1所示的功能模块图。

二、数据库设计与实现数据库在一个管理信息系统中占有非常重要的地位,数据库结构的好坏将直接影响到应用系统的实现效果和数据操作效率以及能否保证数据的一致性、完成性和安全性。

图1 系统功能模块1、数据库设计根据学生成绩管理系统的功能要求,通过分析系统要涉及的相关实体以及要收集、存储和操纵的数据信息,得到如图2所示的系统E-R图。

根据系统E-R图得到以下关系模式。

班级(班级编号,班级名称,所属院系,学制,入学时间,人数)。

学生基本信息(学号,姓名,性别,出生日期,家庭住址,班级编号)。

课程(班级编号,学期,课程名称,学时,教师)。

成绩(学号,学期,课程名称,成绩)。

PB经验总结4

PB经验总结4

2、在打印一个数据窗口时,如果在数据窗口中用函数PAGECOUNT()可以得取该数据窗口的打印页数,但该打印页数跟打印机实际的打印页数并不一样,如何能取得打印机实际的打印页数?3、在打印一个数据窗口时,如果在数据窗口中用函数PAGECOUNT()可以得取该数据窗口的打印页数,但该打印页数跟打印机实际的打印页数并不一样,如何能取得打印机实际的打印页数?4、PB + Sql Anywhere 应用程序,请问如何脱离开发环境运行?用户是否需要安装sqlanywhere?如何编写脚本配置ODBC数据源?请举一例好吗?谢谢!5、复杂报表另存为的技巧一例6、在程序中管理和控制MS SQLServer7、数据窗口中怎样实现旧的数据不可修改8、建立和配置web datawidnow9、建立一个通用的报表处理系统10、转换日期和时间11、比较日期和时间12、鼠标移到数据窗口上时所在行字段改变颜色一页?首先将datawindow的print输出到一个打印文件中,把其他的print也输入这个prn,然后,打印这个打印文件就行了。

如:datawindow_control1.object.datawindow.print.filename="c:\printfilepath\exam_1.prn" datawindow_control2.object.datawindow.print.filename="c:\printfilepath\exam_1.prn"dw_1.print()dw_2.print()run("print //d:\\printservename\sharename "c:\printfilepath\exam_1.prn")//d:\\printservename\sharename打印机名14、在打印一个数据窗口时,如果在数据窗口中用函数PAGECOUNT()可以得取该数据窗口的打印页数,但该打印页数跟打印机实际的打印页数并不一样,如何能取得打印机实际的打印页数?请先预览datawindowdw_1.Modify("DataWindow.Print.preview = true")再用pagecount()就是了。

PB动态SQL语句

PB动态SQL语句

PB动态SQL语句PowerBuilder的嵌入式SQL语句只能支持一些固定的标准的SQL语句,即在进行程序代码编译处理时这些SQL语句必须是确定的,另外这种方式也不能执行像Creat Table,Creat Database等这些数据库定义的语句(DDL)。

因此这种嵌入式SQL语句在实际应用中有一定的局限性。

为克服这种方式的局限性,可以使用动态SQL语句,这种方式可以完成嵌入式SQL语句无法实现的功能。

如建库、建表这一类的数据库定义语句(DDL);其次,由于动态SQL语句允许在执行时才确定到底要执行怎样的SQL语句,因此使用动态SQL语句可以使程序实现参数化设计,具有很大的灵活性和通用性。

一、动态SQL语句的应用分析 PowerBuilder提供了四种格式的动态SQL语句,每种格式都有自己不同的特点和作用。

(一)第一种格式当执行没有输入参数并且没有返回结果集的SQL语句时可以使用这种格式,这种格式使用比较简单,其实现的操作也比较少。

1 语法EXECUTE IMMEDIATE SQLStatement{USING TransactionObject};其中SQLStatement是要执行的SQL语句,可以直接用引号将要执行的SQL 引起来用,或者用字符串变量的形式提供SQL语句。

通过使用字符串变量可以在具体执行的时候才指定要执行什么样的SQL语句。

TransactionObject是用户所使用的事务对象,缺省为SQLCA。

2 应用实例①建立一张数据库表(base),SQL语句的表述用引号引起来直接使用。

EXECUTE IMMEDIATE‘CREATE TABLE base(code char(6),name char(30))’USING SQLCA;②执行对数据库记录的操作,在表base中插入一条记录,SQL语句通过字符串变量传递执行语句。

STRING lsSQLLsSQL=”INSERT INTO TABLE base VALUES(’320201’,’市中区支行’)”EXECUTE IMMEDIATE :lsSQL;(二)第二种格式当执行带输入参数但没有返回结果集时的SQL语句可以采用第二种格式。

pb中odbc建立方法

pb中odbc建立方法

pb中odbc建立方法下面以Powerbuilder内置的Sybase SQL Anywhere5.0数据库为例介绍ODBC的代码配置方法。

1、找出数据库驱动程序及相关文件首先找到相应的数据库驱动程序,这些文件可以在注册表的HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI下相应键中找到。

如Sybase SQL Anywhere5.0为dbeng50.EXE,WOD50T.DLL,以及一些其他相关的动态链接库,此例中为Dbl50t.dll,Wl50ent.dll,Wtr50t.dll,Wodbc.gid,Wtr50t.dll。

这些文件必须与最终的可执行程序一起安装到用户的计算机上,可以与应用程序放在一起,也可以放在一个特定的目录下(本例为Windows 的system目录下)。

在调试时可先将这些文件复制到指定的目录下。

2、在程序中用代码配置ODBC在应用的open事件中对ODBC配置的代码如下:Ulong ul_numIntanswer,answer1,answer2,answer3,answer4,answer5,ansapp String ls_driver,ls_start,ls_location,apppath,db_path,odbcstr //获取操作系统的system目录,并保存到ls_location变量answer=RegistryGet(“KYEY_LOCAL_MACHINE\Software\Mi crosoft\Windows\CurrentVersion\Setup”,”SysDir”,RegString!l s_location)IF answer=-1 THENMessagebox(‘错误’,’应用程序无法获取Windows的系统目录,系统统将终止运行!’,Stopsign!)RETURNEND IF//判断Sybase SQL Anywhere5.0的驱动程序是否正确安装ls_driver=ls_location+’\WOD50T.DLL’ls_start=ls_location+’\dbeng50.EXE’IF NOT (FileExists(ls_driver) AND FileExists(ls_start)) THENMessagebox(‘错误’,’系统中没有安装SQL Anywhere的驱动程序,系统将终止运行!’,StopSign!)RETURNEND IF//设置ODBC\ODBCINST.INI\ODBC DRIVERSanswer=RegistrySet(‘ HKEY_LOCAL_MACHINE\Software\O DBC\ODBCINST.INI\ODBCDRIVER’,’Sybase SQL Anywhere 5.0’,RegString!,’Installed’)IF answer=-1 THENMessagebox(‘错误’,’应用程序无法设置ODBC DRIVERS,系统将终止运行!’,StopSign!)RETURNEND IF//设置ODBC\ODBCINST.INIanswer1=RegistrySet(‘ HKEY_LOCAL_MAC HINE\Software\ODBC\ODBCINST.INI\Sybase SQL Anywhere 5.0’,’CPTimeout’,RegString!,’not pooled’)answer2=RegistrySet(‘ HKEY_LOCAL_MACHINE\Software\ ODBC\ODBCINST.INI\Sybase SQL Anywhere 5.0’,’Driver’,RegString!,ls_driver)answer3=RegistrySet(‘ HKEY_LOCAL_MACHINE\Software\ ODBC\ODBCINST.INI\Sybase SQL Anywhere 5.0’,’Setup’,RegString!,ls_driver)IF answer1=-1 OR answer2=-1 OR answer3=-1 THENMessagebox(‘错误’,’应用程序无法设置ODBCINST.INI,系统将终止运行!’,StopSign!)RETURNEND IF//设置ODBC DATA SOURCE名称(anysql为数据源名)answer=RegistrySet(‘ HKEY_LOCAL_MACHINE\Software\O DBC\ODBCINST.INI\ODBC Data Sources’,’anysql’,RegString!,’Sybase SQL Anywhere 5.0’)IF answer=-1 THENMessagebox(‘错误’,’应用程序无法设置ODBC DATA SOURCE名称,系统将终止运行!’,StopSign!)RETURNEND IF//获取应用程序的安装路径(ybinput为应用程序安装到用户计算机上后在注册表中注册的应用程序名,yibiao.db为应用程序的数据库名,与应用程序在同一目录下,anysql为数据源名)ansapp=RegistryGet(“KYEY_LOCAL_MACHINE\Software\Mi crosoft\Windows\CurrentVersion\AppPaths\ybinput”,”Path”,RegString!app_path)IF ansapp=-1 THENMessagebox(‘错误’,’应用程序无法获取安装路径名,系统将终止运行!’,StopSign!)RETURNELSEdb_path=app_path+’yibiao.db’END IF//设置ODBC.INI的细节answer1=RegistrySet(‘HKEY_current_user\software\odbc\o dbc.ini\anysql’,’driver’,RegString!,ls_driver)answer2=RegistrySet(‘HKEY_current_user\software\odbc\o dbc.ini\anysql’,’start’,RegString!,ls_start)answer3=RegistrySet(‘HKEY_current_user\software\odbc\o dbc.ini\anysql’,’autostop’,RegString!,’yes’)answer4=RegistrySet(‘HKEY_current_user\software\odbc\o dbc.ini\anysql’,’DataBaseFile’,RegString!,db_path) answer5=RegistrySet(‘HKEY_current_user\software\odbc\o dbc.ini\anysql’,’DataBaseName’,RegString!,’yibiao’) IF answer1=-1 OR answer2=-1 OR answer3=-1 OR answer4=-1 OR answer5=-1 THENMessagebox(‘错误’,’应用程序无法设置ODBC.INI细节,系统将终止运行!’,StopSign!)RETURNEND IFodbcstr=’dsn=anysql;databasename=yibiao;database file=’+db_pathsqlca.dbms=’odbc’sqlca.databse=’yibiao’sqlca.dbparm=”connectstring=’”+odbcstr+”;uid=dba; pwd=sql’”connect using sqlca;open(w_main)。

SQL Anywhere安装

SQL Anywhere安装

Sybase SQL Anywhere软件的安装一、准备工作前期的系统安装:2003 需要安装.NET 3.5及4.0,IIS组件,然后安装VS和SQL Server数据库;2008则在功能添加里安装.NET 3.5 SP1,在角色里添加上web服务器即IIS,然后安装VS和SQL Server数据库。

2003截图2008截图总共需要三个安装包:VS2008 SP1/VS2010;SQL Server 2005;SQL Anywhere的安装文件(可以是单独的Anywhere 12或者是PowerBuilder套装)二、安装过程依次按照SQL Server 2005 → VS2008 SP1/VS2010→Anywhere软件的顺序进行安装,否则会出现SQL Server 2005无法打开Management Studio的状况安装SQL Server 2005,按照提示依次进行安装同样使用虚拟光驱进行加载,然后依照图示选择进行安装(本光盘为DVD版,只有一张)2008会提示有兼容性问题,点击“运行程序”即可,接受许可,下一步配置组件,点“安装”进行安装出现向导,下一步检测成功,全部显示成功,开始安装,下一步用户注册信息全选组件,下一步默认实例,下一步下一步,选择服务账户类型身份验证模式,要给sa设定一个密码,下一步本步骤按照默认即可,下一步错误及使用情况报告设置,下一步确认信息,安装安装状态下一步,完成安装至此,SQL Server 2005的安装完成。

安装SP3补丁双击安装包,下一步接受许可协议,下一步选择需要安装的组件选择验证方式为“SQL身份验证”,下一步直接下一步直接下一步准备安装,安装进行安装点下一步,完成安装安装结束状态,下一步完成,需要重启至此SQL Server 2005的SP3补丁包安装完成安装VS2008/2010,按照提示依次进行安装,注意需要进行完整安装使用虚拟光驱加载双击G盘,运行安装程序,点击上面一项,安装Microsoft Visual Studio 2010接受许可条款,下一步继续安装选择安装目录,进行完全安装,点击“安装”进行安装完成安装(VS2008的安装过程类似,不过需要打SP1补丁)安装PowerBuilder,包括三个组件PowerBuilder软件的安装双击安装包双击“Autorun.exe”,选择第二项,安装PowerBuilder 12.5,下一步下一步,安装30天试用版选择区域,下一步接受协议,下一步填写用户信息,下一步选择安装和共享文件位置,下一步选择安装组件,进行安装三个组件会分别安装,安装完成后会提示重启计算机,重启之后即可使用作者:周立博。

pb课程设计作业

pb课程设计作业

Powerbuilder课程设计报告学院:计算机技术与软件工程学院学号:09033699姓名:冯树新班级:计算机信息管理09302指导教师:曹薇一:实训项目名称:小型图书管理系统开发设计二实训地点:凌峰楼B512机房及寝室三:实训目的及要求:掌握利用PowerBuilder开发数据库应用系统的方法、步骤和技能。

主要包括窗口及控件的使用、数据窗口对象的创建、数据窗口控件的使用、应用程序与DBMS的连接、应用程序的发布等技能。

四:实训需求分析:根据所给的基于sql anywhere图书信息数据库设计开发出一个小型简单的图书管理系统。

该图书管理系统主要具有如下五个功能:图书类型信息的查询和编辑,图书信息的查询和编辑,用户信息的查询和编辑,借还书记录的生成和查询,指定用户借还书记录的查询。

此外,可根据思考题(见群共享中压缩文件PB0520)中的要求优化图书管理系统的功能,为程序添加登陆窗口,将程序生成应用程序发布台,实现自动编号等功能。

也可自行对系统进行功能的优化。

五:设计阶段:1,设计环境:在一台安装了PB软件的电脑上创建一个基于sql anywhere的图书信息数据库。

新建一个文件夹PB实训内容,在创建三个子文件夹分别存放图片,程序,数据库。

2,设计任务及步骤:A:在sql anywhere中将数据库book0429连接,连接成功后。

打开PB11.5,新建workplace命名为book.在建立一个应用程序book。

B:在pb中在工具栏中点击database图标,连接数据库并添加数据源,新建new profile 设置好参数后,将连接数据源代码粘贴到应用程序的open事件中。

C: 创建一个登陆窗口,w_password。

在该窗口中的登录按钮中的click事件中编写代码,是程序完成一个使用密码登录到主窗口的功能。

即加强系统的安全性。

代码如下:if sle_1.text="zrr" thenif sle_2.text="123456" thenopen(w_main)close(w_passward)elseint flagstring msg,masmsg="输入密码有误,请重新输入!"mas="输入超过三次,系统将自动关闭!"flag=integer(sle_2.tag)if flag<=1 thenmessagebox("提示",msg)sle_2.text=""setfocus(sle_2)elsemessagebox("提示",mas)haltend ifflag++sle_2.tag=string(flag)end ifelsemessagebox("提示","用户名不正确!")sle_1.text=""end if并且在应用程序的open事件中打开此窗口。

PB仓库管理系统(流程图+ER图+源代码+论文设计)-论文

PB仓库管理系统(流程图+ER图+源代码+论文设计)-论文

PB仓库管理系统(流程图+ER图+源代码+论文设计)-论文PB仓库管理系统(流程图+ER图+源代码+论文设计)一、论文题目:仓库管理信息系统的开发二、题目研究内容:当今社会为信息社会,世界已进入在计算机信息管理领域中激烈竞争的时代。

信息已成为继劳动力、土地、资本之后的又一大资源,谁控制的信息越多,谁利用信息资源的效率越高,谁就会在各方面的竞争中,占有一席之地,谁就会更有优势,这一点已得到举世公认。

随着WTO的加入和我国工业的迅猛发展,为了抓住机遇,在竞争占得先机,作为生产企业的一个必不可少的重要环节—仓库管理的信息化、计算机化也就迫在眉捷了。

开发仓库管理信息系统即有宏观上的意义,那就是顺应时代信息化、现代化潮流,提高效益,促进国民经济结构优化;也有微观上的意义,那就是可以提高管理的现代化程序,加强管理的信息化手段,提高工作效率,增加单位效益。

仓库管理的对象是很多的,广而言之,它可以包括:商业、企业仓库的商品,图书馆仓库的图书,博物馆仓库的展品等等。

在这里本文仅涉及工业企业的产品仓库。

它主要包括下列三部分:1、没有经过企业加工,而为企业生产或其他各方面所需要的原材料、燃料、半成品、部件等,如钢材、轴承、发动机、电动机等。

2、已经过企业加工,但尚未加工完毕的在制品。

3、企业已加工完毕,储而待销的成品与备件等。

仓库管理系统对仓库进行全面的管理和监控,缩短了仓库信息流转时间,使企业的物料管理层次分明、井然有序,为采购、销售和生产提供依据;智能化的预警功能可自动提示存货的短缺、超储等异常状况;减少资金积压。

完善的仓库管理功能,可对企业的存货进行全面的控制和管理,降低仓库成本,增强企业的市场竞争力。

仓库管理信息系统研究的内容涉及仓库管理的全过程,包括入库、出库、仓库余额管理等等。

三、调研情况1、国内外现状研究:网学网是个大垃圾网站,只会抄六维论文上面的论文计算机在管理中的应用开始于1954年,当时美国首先用计算机处理工资单。

PB与各种数据链接

PB与各种数据链接

1.Power script 语言里的事务处理对象怎么理解PowerBuilder程序与数据库之间传递信息的一个结构变量,共有15个成员.你可以详细列表它的所有成员看看它的组成,PB的应用程序会初始化一个全局的结构体变量,SQLCA,当然你也可以自定义一个自己的事务对象.1 DBMS string 所使用的数据库管理系统的名字,如Sybase,Oracle,ODBC。

2 Database string 要连接的数据库名字。

3 UserID string 连接数据库所用的用户名。

有的DBMS不需要此项。

4 DBPass string 用户连接数据库的口令。

5 Lock string 这是数据库的保护级别,一般不必给出。

6 LogID string 登录到数据库服务器上的用户名,有的DBMS不需要此项,但Sybase和Oracle需要指定这个参数。

7 LogPass string 登录到数据库服务器上的用户口令。

这个属性可设可不设,但Sybase和Oracle需要指定口令。

8 ServerName string 数据库服务器名。

9 AutoCommit boolean指定是否将数据库设置成自动提交所有事务。

默认是False,也就是说,必须在应用程序中进行事务管理,并在适当的时候对数据库提交事务。

如果选择True,则每个事务都由系统自动提交。

10 DBParm string 用于向数据库传递特殊信息的属性。

11 SQLCode long 指示最近一次SQL操作失败或成功。

它的取值为:返回结果0 无错误。

-1 出现一个错误。

100没有检索到数据。

12 SQLNRows long 最近一次SQL操作影响的行数,数据库不同其含义也不同。

13 SQLDBCode long 数据库错误代码。

不同的数据库的含义不同。

14 SQLErrText string 相应于SQLDBCode属性中错误码的文字说明。

15 SQLReturnData string 返回DBMS执行SQL的附加信息,不同的DBMS其值不同。

PB简介

PB简介

第1章PowerBuilder简介技术的不断推陈出新,使得当今的商业市场正在以前所未有的速度变化着。

随着Internet和浏览器技术的成熟与普及,形成了一种简便、低成本的信息传播手段,该手段正在改变着传统的产品销售方式和服务方式。

作为能够适应企业全部需求的解决方案,首先应该能够支持Client/Server结构,并且能够把它扩展成为包括HTML和Java的分布式体系结构。

PowerBuilder正是符合该趋势的一种分布式数据库前端开发工具,通过其图形界面可以快速简捷地开发出面向对象的数据库应用程序。

通过其引入的独具特色的数据窗口对象,程序员可以可视化地完成对数据库的操作。

PowerBuilder提供了对目前流行的绝大多数大型数据库和桌面数据库的支持,同时也附带了一个小型的数据库管理系统Sybase SQL Anywhere。

PowerBuilder支持多种软硬件平台,它不仅可以跨平台共享程序中的各种对象,还支持应用程序的跨平台开发和部署,从而可以极大地减轻程序员在不同平台上移植程序的工作量。

1.1 PowerBuilder概述我们知道,数据库应用是当前计算机应用的一个非常重要的方面,而在目前的数据库应用技术中普遍采用的就是客户机/服务器体系结构。

在这种体系结构中,所有的数据和数据库管理系统都在服务器上,客户机通过采用标准的SQL语句等方式来访问服务器上数据库中的数据。

由于这种体系结构把数据和对数据的管理都统一放在了服务器上,因此保证了数据的安全性和完整性,同时也可以充分利用服务器高性能的特点。

正是客户机/服务器体系结构的这些优点,使其得到了非常广泛的应用。

PowerBuilder是著名的数据库应用开发工具生产厂商PowerSoft公司推出的产品(PowerSoft现已被数据库厂商Sybase收购),它完全按照客户机/服务器体系结构研制设计。

在客户机/服务器结构中,它使用在客户机中,作为数据库应用程序的开发工具而存在。

Pb通过jdbc连接mysql的配置及程序发布

Pb通过jdbc连接mysql的配置及程序发布

o
m
w
w
w
w
PD
H F-XC A N GE
PD
H F-XC A N GE
O W !
N
y
bu
to
k
lic
C
m
C
lic
k
to
bu
y
N
.c
O W !
w
.d o
w
o
.d o
c u-tr a c k
c u-tr a c k
.c
pb jdbc
jdbc
mysql
pb 1. 2.
mysql JDBC for Mysql
o
m
w
w
w
w
Java Exception : ng.NoClassDefFoundError: com/sybase/powerbuilder/jdbc/PbjdbcSession pb jdbc jar pbjdbc1190.jar ppp %Sybase_HOME%\Shared\PowerBuilder\ pbjdbc1290.jar copy Could not load class org.gjt.mm.mysql.Driver pb jdbc jar
批注本地保存成功开通会员云端永久保存去开通
PD
H F-XC A N GE
PD
H F-XC A N GE
O W !
N
y
bu
to
k
lic
C
m
C
lic
k
to
bu
y
N
.c
O W !
w
.d o
w
o
.d o

PB数据库连接的问题

PB数据库连接的问题

PB数据库连接的问题connection failed:specified database is invalid一个asa数据库的db文件,移植到别的机器上的时候,使用的目录并不一样,所以就出错了用odbc连接时出标题中的提示,使用一下方法解决通过课程设计实践,对PB中的数据库连接总结如下:在用PB时,我们经常使用它本身携带的数据管理系统Adaptive server anywhere (ASA),并用它来创建(ASA)数据库,在创建数据库后,当我们将数据库移到其他文件夹或者其他电脑时,怎样去连接数据库呢?分为两种情况:第一种:在建该数据库时,没有默认创建数据库日志文件:如下在创建(ASA)数据库时,把那个允许创建日志前面的钩去掉连接步骤如下(1)配置ODBC数据源。

1.双击ODBC中Utilities中的“ODBC Administrator”项2.打开的窗口中,点击“用户DNS”页,点【配置】修改已有数据源或者点【添加】创建新数据源,以新建为例。

填写ODBC中“Date source name”选择Database中“Datebase file”路径,然后点击【确定】完成数据源创建。

(2)配置DB Profile。

1. 右击“ODB ODBC”项,选择“New profile”选择“Connection”选项卡,填写“Profile Name”,名称自定;在“Database Source”中选择刚才创建的数据源。

如果已经设置过,在“user id”、“password”具体填写。

点击【OK】(3)连接数据库。

如图所示,右击刚才创建的“Profile Name”——Admin,选择“connect”即可。

第二种:如果在建数据库时,默认创建数据库日志文件:在建立数据库的时候,勾选了Use Transaction Log选项,导致创建了日志文件。

那么就需要使用数据库的管理工具Sybase Central,将数据库文件与LOG 文件的关联去掉。

install3

install3

简单易学制作powerbuilder程序的安装盘(CreateInstall 2000)作者:金永锋 email: jini@PowerBuilder+ODBC+SQL Anywhere是目前开发数据库应用程序最流行的模式。

辛辛苦苦用PowerBuilder写好一个数据库应用程序,总想包装一下,做成安装盘。

分发到用户手中的时候能够自动安装好后即可使用,省却上门手工安装的麻烦。

然而,ODBC的配置和SQL Anywhere的安装却成了大问题。

虽然可用最常见的InstallShield书写脚本解决。

但是Install Shield的使用比较复杂,介绍Install Shield使用的资料非常又少。

还是会碰到不少困难。

现在就介绍一种简单易学的制作PowerBuilder7.0/8.0+ODBC+SQL Anywhere7.0数据库应用程序程序安装盘的方法。

并能自动安装ODBC驱动程序和配置DSN数据源。

在制作中所使用的安装制作工具是CreateInstall 2000。

他是一个共享软件,支持中文。

能在下载到。

没有注册的话会在制作好的安装盘运行时出现提示信息,但是功能是没有限制的。

下面就让我们一步一步来开始制作:准备工作:首先我们要准备好应用程序的支持文件包括:1、我们要发布的程序的可执行文件以及动态库、资源文件等假设放在c:\myAPP目录下2、PowerBuilder运行库以及ODBC接口包括:必需PBVM80.DLL必需LIBJCC.DLL数据窗口PBDWE80.DLLRich Text PBRTC80.DLL字体映像PBFNT80.INI预定义的数据窗口标签表现风PBLAB80.INI格数据库连接PBTRA80.DLLPB的ODBC接口PBODB80.DLLPB的ODBC接口配置文件PBODB80.INI以上文件可以在C:\Program Files\Sybase\Shared\PowerBuilder取得。

pb常用操作技巧

pb常用操作技巧

这是刚毕业时在某一“大”公司使用PB6.5开发联通营帐系统时的笔记,虽然好久没有也许以后也不会再使用pb开发程序了,但这算是我使用过的唯一一个前端专业开发工具,把笔记记录下来,权当作纪念吧,^_^//PB中标准调用sql语句ls_sql = "select road_name from bb_data_wide_bus_temp_t whereregister_number = '" + ls_register_number + "'"declare cur_get dynamic cursor for sqlsa ;prepare sqlsa from :ls_sql ;open dynamic cur_get;fetch cur_get into :ls_value;if sqlca.sqlcode <> 0 thenmessagebox('操作信息','提取失败!',exclamation!)end ifclose cur_get;//PB中标准循环调用sql语句DECLARE cur_sql DYNAMIC CURSOR FOR SQLSA;PREPARE SQLSA FROM :ls_sql;OPEN DYNAMIC cur_sql;do while sqlca.sqlcode = 0FETCH cur_sql INTO :ls_register_number,:ls_complete_note;ll_sqlcode = sqlca.sqlcodeif ll_sqlcode < 0 thenCLOSE cur_sql;af_disconnect()messagebox('错误提示','检索受理编号错误!',StopSign!) returnelseif ll_sqlcode = 100 thenexitend ifddlb_register_number.additem(trim(ls_register_number + '|' + ls_complete_note))loopCLOSE cur_sql;//窗口open事件通用脚本//置窗口居中af_center_window(this)//连接数据库af_connect()//定义变量dataWindowChild dwc//获取城市代码下拉列表并取值dw_city_code.getChild('city_code',dwc)dwc.setTransObject(sqlca)dwc.Retrieve(gs_citycode,gi_citylevel)dw_city_code.setTransObject(sqlca)dw_city_code.Retrieve()dw_city_code.setItem(1,'city_code',dwc.getItemString(1,'city_code')) is_city_code =dw_city_code.getItemString(dw_city_code.getRow(),'city_code')//获取业务类型下拉列表并取值dw_service_kind.getChild('service_kind',dwc)dwc.setTransObject(sqlca)dwc.Retrieve()dw_service_kind.setTransObject(sqlca)dw_service_kind.Retrieve()dw_service_kind.setItem(1,'service_kind',10)ii_service_kind =dw_service_kind.getItemNumber(dw_service_kind.getRow(),'service_kind') //获取申请事项下拉列表并取值dw_apply_event.getChild('apply_event',dwc)dwc.setTransObject(sqlca)dwc.Retrieve(ii_service_kind)dw_apply_event.setTransObject(sqlca)dw_apply_event.Retrieve()dw_apply_event.setItem(1,'apply_event',dwc.getItemNumber(1,'apply_eve nt'))ii_apply_event =dw_apply_event.getItemNumber(dw_apply_event.getRow(),'apply_event')//激发查询事件cb_query.TriggerEvent(clicked!)//断开数据库af_disconnect()//查询按钮通用脚本//连接数据库af_connect()//定义变量dataWindowChild dwc//dw_1检索数据dw_1.setTransObject(sqlca)dw_1.Retrieve(ii_service_kind)//dw_2检索数据int li_row,li_row_tempdw_2.getChild('action',dwc)dwc.setTransObject(sqlca)dwc.Retrieve(ii_service_kind)dw_2.setRowFocusIndicator(hand!)dw_2.setTransObject(sqlca)li_row_temp =dw_2.Retrieve(ii_apply_event,ii_service_kind,is_city_code)dw_2.scrollToRow(li_row_temp)//如果未检索到数据插入一空行,有数据就过滤string ls_filterint li_actionif li_row_temp = 0 thendw_2.insertRow(0)elsefor li_row = 1 to dw_2.rowCount()li_action = dw_2.getItemNumber(li_row,'action') ls_filter = ' action <> ' + string(li_action)dw_1.setFilter(ls_filter)dw_1.filter()nextend if//断开数据库af_disconnect()//增加按钮通用脚本//变量定义int li_step,li_action,li_auto_status,li_row//确认选择要增加的记录if dw_1.getSelectedRow(0) = 0 thenMessageBox('提示信息','请选择要添加的记录!',exclamation!) returnend if//取出要增加的信息li_step = dw_2.getItemNumber(dw_2.getRow(),'step')li_action = dw_1.getItemNumber(dw_1.getSelectedRow(0),'action')li_auto_status =dw_1.getItemNumber(dw_1.getSelectedRow(0),'auto_status')//添加信息li_row = dw_2.insertRow(0)dw_2.setItem(li_row,'step',li_step)dw_2.setItem(li_row,'action',li_action)dw_2.setItem(li_row,'auto_status',li_auto_status)dw_2.scrollToRow(li_row)//删除按钮通用脚本//删除前先确认IF dw_2.GetRow() = 0 THENMessageBox('提示信息','请选择要删除的记录!',exclamation!) ReturnELSEIF MessageBox("提示信息","确实要删除指定的记录?",Question!,YesNo!,2) = 2 THEN Returndw_2.DeleteRow(dw_2.getRow())END IF//保存按钮通用脚本//连接数据库af_connect()//定义变量string ls_city_code,ls_errorint li_service_kind,li_apply_event,li_row,li_stepdataWindowChild dwc//检测数据是否发生变化dw_2.AcceptText()IF dw_2.ModifiedCount() + dw_2.DeletedCount() = 0 THENMessageBox("操作提示","数据未发生变化,无需保存!",exclamation!)returnEND IF//检测是否为空或零dw_2.setSort('step a')dw_2.sort()FOR li_row = 1 TO dw_2.RowCount()li_step = dw_2.GetItemNumber(li_row,'step')IF IsNull(li_step) OR li_step = 0 THENMessageBox('操作提示','步骤不能为空或零,请重新输入!',exclamation!)dw_2.setRow(li_row)ReturnEND IFNEXT//保存dw_2.SetTransObject(sqlca)if dw_2.update() = 1 thencommit;messagebox("提示信息","保存成功!")dw_2.ScrollToRow(dw_2.RowCount())elsels_error = sqlca.sqlErrTextrollback;messagebox("提示信息","保存失败!" + char(13) +ls_error,stopSign!)returnend if//断开数据库af_disconnect()//打印按钮通用脚本if dw_1.rowCount() > 0 thenif PrintSetup() = -1 thenmessagebox('提示信息','打印机设置出错!',Exclamation!)returnelseif dw_1.print(true) = 1 then //显示可以取消打印的对话框Messagebox('提示信息',"打印成功!")elseMessagebox('提示信息',"打印失败!",stopSign!) end ifend ifelseMessagebox('提示信息',"没有数据可以打印,请先查询数据!",exclamation!)returnend if//导出按钮通用脚本if dw_1.rowcount() <= 0 thenmessageBox('提示信息','没有数据可以导出,请先查询!',exclamation!)returnend ifif dw_1.SaveAS('',text!,true) = 1 thenmessageBox('提示信息','导出成功!')end if//导入按钮通用脚本//变量定义string ls_pathfile,ls_file,ls_title,ls_ext,ls_filterint li_pos,li_fileidlong ll_buffer//变量赋值ls_title = "请选择数据文件"ls_ext = "txt"ls_filter = "文本文件(*.txt),*.txt,全部文件(*.*),*.*"li_fileid =GetFileOpenName(ls_title,ls_pathfile,ls_file,ls_ext,ls_filter)if(li_fileid = 0 or ls_file = "") thenreturnend ifsle_file_name.text = ls_pathfilecb_ok.enabled = true//退出按钮通用脚本close(parent) 或 closeWithReturn(parent,returnvalue)//调用过程通用脚本if dw_wp.rowcount() <= 0 then return//变量定义string ls_sql,ls_err_infostring ls_register_number,ls_accept_city,ls_department,ls_op er_personinteger li_err_code,li_apply_event//变量赋值ls_register_number = dw_wp.getitemstring(1,'register_number')ls_accept_city = gs_citycodeli_apply_event = dw_wp.getitemnumber(1,'apply_event')ls_department = gl_dealeridls_oper_person = gs_workerid//连接数据库af_connect()//调用配号撤单过程ls_sql = "execute bb_pstn_assign_no_repeal_p(?,?,?,?,?)"declare proc_assign_no_repeal dynamic cursor for sqlsa ;prepare sqlsa from :ls_sql ;open dynamic proc_assign_no_repealusing :ls_register_number,:ls_accept_city,:li_apply_event,:ls_departm ent,:ls_oper_person;if sqlca.sqlcode = -1 thenls_err_info = sqlca.sqlErrTextclose proc_assign_no_repeal ;Rollback;Messagebox("错误信息1","执行异常!" + ls_err_info,stopSign!) af_disconnect()returnEnd iffetch proc_assign_no_repeal into :li_err_code,:ls_err_info;if li_err_code < 0 thenclose proc_assign_no_repeal ;Rollback;Messagebox("错误信息2","执行异常!" + ls_err_info,stopSign!) af_disconnect()returnend ifclose proc_assign_no_repeal ;commit ;//断开数据库af_disconnect()//撤单成功后打印工单dw_wp.print()//PB某些控件的中文显示问题假如 PB 的 ListView 不能正常显示中文,则应该将ListView 的 FontCharSet 属性设置成其他类型。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

定制PB与SQL Anywhere的程序发布
2001-03-26 15:14作者:出处:yesky责任编辑:用PB开发程序,并以SQL Anywhere作为后台数据库,这是PB的一种典型应用。

通常情况下,要将程序发布给用户,就先要分别为这两者安装驱动,这样做既麻烦而且效果也不好——占用的空间太大,总共需要近十多二十兆。

现在的我们的目标是,如何脱离PB开发环境以及SQL Anywhere数据库接口,发布自己的程序,并且身段"苗条"。

经过多次测试,本人发现了一个只需3M左右的解决方案,并在
Pwin98/Ewin98/PwinMe下调试通过。

一选择必要的支持文件
1. PB主程序涉及的动态链接库(Runtime Library),以PB6.x(PB6.0、PB6.5)为例:
(1) PBVM60.DLL (PB虚拟机;必需)
(2) PBDWE60.DLL (PB程序的DataWindow控件引擎;可选)
(3) PBRTC60.DLL (RichText控件;可选)
(4) PBTRA60.DLL (跟踪调用;可选)
(5) PBODB60.DLL (ODBC接口;可选)
在我编制的一个程序中,使用了DataWindow控件、ODBC数据接口,因此选择(1)、(2)、(5) 这三个文件;
2. SQL Anywhere 的ODBC接口,以SQL Anywhere 5.0 /5.5为例,至少要包含这些文件:
DBENG50.EXE、DBL50T.DLL、WL50ENT.DLL、WTR50T.DLL、WOD50T.DLL;以上这些是准备必要的文件,但是要使程序能够真正运行起来,还不能缺少数据接口的支持。

源文档</10/166510.shtml>
二定制SQL Anywhere 数据接口
1. 修改文件:
修改Windows目录中的ODBC.INI文件,加入下列两行:
[Pzgl] //假设数据源名称为pzgl (下同)
Driver32=C:\pzgl\Wod50t.dll //假设程序运行路径为C:\pzgl
用PB进行以上修改,涉及到PB的内部函数和Win32API函数调用:
API:getwindowsdirectory() //得到Windows的具体路径
PB:PB中打开、写入和关闭文件的函数分别是:
fileopen()、filewrite()、fileclose()。

2. Windows注册表支持:
在"Hkey_Current_User\Software\ODBC\ODBC.INI\Pzgl\" 和"Hkey_Users\.Default\
Software\ODBC\ODBC.INI\Pzgl\" 这两个分支下分别创建以下字符串(左边引号内为键名,右边引号内为字串值):
a."AutoStop" = "Yes"
b."DatabaseFile" = "c:\pzgl\pzgl.db"
c."DatabaseName" = "Pzgl"
d."Driver" = "c:\pzgl\wod50t.dll"
e."UID" = "dba"
f."PWD" = "sql"
g."Start" = "c:\pzgl\dbeng50.exe"
顺便说一下,PB对注册表的操作要涉及到一下函数:
registryget() //从注册表中取值
registryset() //创建修改键或键值
registrydelete() //删除键或分支
综上所述,通过发布必要的支持文件、并进行数据接口的准备,这个PB数据库程序就可以独立运行了。

虽然上述文件规模都不小,但我们将其压缩一下,不过才3M左右。

若使用CreateInstall (一个小巧的安装文件制作工具),把所需文件都一起包含进去,制作成一个单独的安装程序,这样看起来不就更专业了吗^_^。

(需要实例程序的朋友,可以email给我:rjc@)。

相关文档
最新文档