PB开发Sybase数据库应用技巧集锦[1]

PB开发Sybase数据库应用技巧集锦[1],第1张

;   PowerBuilder(PB)是一种跨平台的且功能强大 性能优异的开发工具 在客户端/服务器系统结构的应用模式中 作为客户端的一种面向对象的可视化设计工具 在与数据相连接 *** 作的系统中得到较为广泛的应用 笔者在使用PB开发Sybase数据库应用 建立企业管理信息系统的过程中 积累了一点经验和技巧 现将其中的一部分在此做点介绍 或许能够对朋友们有点启发和帮助

一 PowerBuilder与Sybase SQL Server的连接

若在连接时出现问题 必须要冷静多思考 首先要检查客户端的情况 确认Open Client已经安装 并正确配置 要注意OPen Client必须与PowerBuilder同为 位 或同为 位 PB与Sybase连不上 常见的几种错误现象及处理方法说明如下

已连接上Sybase数据库 但在PB的数据库(database)画板中却看不到用户已经定义过的表

此时可打开isql或Sybase Advantage 用 sa 登录到 master 数据库 执行pbsyc sql脚本文件(该文件位于PB安装盘的server目录)即可 值得一提的是 对Sybase Adaptive Server的版本号要加以注意 根据资料对有的相关项进行点改动

在打开PB的项目画板(Project)或库画板(Library)时 出现错误信息提示: cannot locate source management dll 这个问题是因为在安装PB时 选择了安装版本控制软件(如PVCS)的接口 实际上该用户的机器上并未安装相应的版本控制软件

解决方法: 在PB的设置中 将版本控制软件的接口去掉 具体 *** 作步骤是 可在PB ini文件中 找到[Library]节 将 SourceVendor= 这一行注释去掉

数据库连接正常 但打开用户表时若该表中有汉字则出现乱码

这个问题通常是由于客户端的缺省字符集设置和服务器端的字符集设置不一致 应修改locales dat文件(该文件位于Sybase安装目录的locales子目录下) 如果在Windows / *** 作系统下 可修改[NT]节下的相关内容

若 *** 作系统平台是Windows x 则修改[win ]节下的内容 在此节有一行文本为locale=default us_english is _ 则说明客户端的缺省字符集设为iso_ 开发中文管理信息系统一般建议将字符集改为cp o 在服务器端必须要做相应的调整

二 PB编程的几点技巧

在数据窗口(Datawindow)中实现数据列自动折行

PB软件在市场上受用户欢迎的原因之一 就是它的数据窗口功能很强 而且方便应用 在使用Datawindow时 常会遇到某列的数据太长 不能同时显示全部的情况 若采用自动水平滚动 *** 作起来又不够简便 有一种方法能实现列数据多行显示(自动折行) 具体步骤如下

① 在Datawindow Panter中打开此DataWindow 在需设定自动折行的列上双击鼠标 d开此列的属性窗口 点Position标签 选中Autosize Heigh多选框; 再选择Edit标签 不选中Auto HorzScroll多选框 单击OK按钮 保存所做的修改

② 点中Detail Band(即写有Detail的灰色长带) 单击鼠标右键 选择Properties 菜单项 选中Autosize Height多选框 单击OK按钮 保存所做的修改

lishixinzhi/Article/program/PB/201311/24574

可以的

既然你知道是不同权限的用户,那么在登录的时候当用户输入完用户名密码后先不要打开主界面,根据登录用户的ID,你肯定可以取到用户的权限类型了,把这个类型放到一个变量中。然后用choose case 变量 或者用 if then elseif then else end这样的形式,来根据不同类型的权限打开不同的登录界面。

代码不能放在主窗体的open中,因为这个时候再判断已经晚了,要加在登录界面的登录按钮点击事件中。

这个东西很好加的,你留下****吧。

数据库连接步骤

1、在powerbuilder软件界面,点击上面数据库图标。

2、d出Database Profiles窗口,在此窗口内,双击图中标注ODBC Administrator项。

3、在d出的ODBC数据源管理器中点击右侧的添加按钮。

4、在d出的创建新数据源窗口中,点击最下方SQL Server Native Client 100项。

5、d出创建到SQL Server的新数据源窗口,输入任意名称、描述,服务器处输入(local),点击下一步。

6、在新的界面最上方“更改默认数据库为”前勾选,下方选择你的程序想要连接的数据库。点击下一步。

7、一直点击下一步直到如图界面,到此数据源的添加基本完成,点击下方测试数据源,提示成功后关闭此界面即可;如果不成功请从头再次 *** 作,注意每一个小细节。

8、上个步骤关闭窗口后,回到原来的ODBC数据源管理器窗口,可以看到列表上方出现了刚刚创建的数据源,关闭此窗口。

9、回到Database Profiles窗口,如图,点击ODB ODBC,然后点击右侧New按钮。

10、新d出Database Profile Setup-ODBC窗口,填写Profile Name,下拉列表选择对应Data Source项。(如果你的数据库没有设置登录密码,则下方的user id和password项不需填写)

11、中间穿插一步,如图,在这个窗口上方点击Preview标签,复制下方的一段代码,留待后面使用。点击OK,关闭此窗口。

12、点击新添加的那一项,如图,点击右侧Connect按钮,然后数据库小图标会出现一个绿色小勾。到这里,连接数据库的所有配置已经完成,只需在程序中添加连接数据库的代码就可以了。

13、如图,在一个程序窗口的open事件中添加了刚刚复制的那段代码,这样这个窗口在打开时就可以直接连上数据库了。

当我们把用PowerBuilder(以下简称PB)开发的数据库客户端应用程序交给用户后,还需要在用户的服务器端的数据库系统上进行一系列配置工作,如建立业务数据库和建表、视图、主键、索引等数据对象。只有正确配置了数据库服务器上的数据结构,应用程序才能正常运行。通常由经验丰富的数据库管理员,使用数据库系统提供的工具,手工或通过其他辅助工具,来完成数据库端的配置工作。本文以微软的SQL Server 2000为例,介绍用PB开发一个生成业务数据库及各种业务数据对象的程序,用户只要运行这个程序,就可以建立数据库端的数据结构。

程序功能及结构

程序的主要功能是建立客户应用程序运行时需要的业务数据库和在新建立的业务数据库上建立数据对象。

程序的输入信息通过4个单行编辑文本框获得:

●sle_database:新建立的数据库名称;

●sle_datafile:新建数据库所用的数据文件;

●sle_logfile:新建数据库所用的日志文件;

●sle_script:建立数据库中的数据对象所用的脚本文件。

完成程序功能的两个按钮分别为:cb_create 用于建立数据库;cb_table用于在新建的数据库中建立表、主键等数据对象。

在两个输出窗口中输出结果:dw_database 用于显示新建的数据库名称及数据文件;dw_objects用于显示通过cb_table按钮建立的数据对象。

具体实现

考虑到对于一个特定的应用,在系统分析阶段就已经确定数据库所需要的数据空间、日志空间的大小等一些系统物理信息,不会等到程序运行时由用户确定,所以这些信息不需要用户输入。数据库的名称一般来说也是固定的,用户输入的数据库名称(sle_database),可用来检查数据库系统中是否已经有同名的数据库。数据文件和逻辑文件的物理位置和名称,由用户根据服务器上的磁盘空间空闲情况输入(sle_datafile、sle_logfile),程序中给出了初始值,指定的文件位置是SQL Server通常的数据文件存放位置。

1.建立数据对象的脚本文件(sle_script)

该文件是普通的文本文件类型,其内容由建立表、主键等数据对象的数据定义语言(DDL)组成,其语法符合数据库系统的规则。例如,脚本testsql内容为建立两个带有主键的表:

create table xz_tj_all

( gxjg char(4) not null,

nian smallint not null,

yue tinyint not null,

bz1 tinyint not null,

bz2 tinyint not null,

a1 integer ,

a2 integer ,

a3 integer ,

primary key (gxjg, nian, yue, bz1, bz2)

)

create table xz_tj_4_1

( gxjg char(4) not null,

nian smallint not null,

yue tinyint not null,

bz1 tinyint not null,

bz2 tinyint not null,

a1 integer ,

primary key (gxjg, nian, yue, bz1, bz2)

)

2.窗口的Open事件

应用程序只用到一个窗口(w_create_database),在其Open事件中,对两个全局事务对象进行创建,并利用其中的一个事务对象(tr_sql)与系统数据库(Master)进行连接。此时还没有进行业务数据库的创建工作,业务数据库不存在,所以不能在这里进行与新建业务数据库的连接。w_create_database 的Open事件脚本如下:

//创建与Master系统数据库相连接的事务对象

tr_sql = create transaction

tr_sqlDBMS =“MSS Microsoft SQL Server 6x”

tr_sqlDataBase = “Master”

//数据库系统管理员

tr_sqlLogPass = “sa”

//服务器名

tr_sqlServerName = “station4”

//系统管理员口令

tr_sqlLogId = “sa”

tr_sqlAutoCommit = False

tr_sqlDBParm = “”

//连接到Master系统数据库

connect using tr_sql;

if tr_sqlsqlcode <> 0 then

MessageBox (“数据库连接错误”,“不能连接到SQL Server数据库Master。请确认SQL Server数据库是否启动。~n~r” + “错误信息:” + tr_sqlsqlerrtext)

return

end if

//从系统表sysdatabases中检索数据库信息

dw_databaseSetTransObject(tr_sql);

//创建与新建业务数据库相连接的事务对象

tr_newBase = create transaction

tr_newBaseDBMS =“MSS Microsoft SQL Server 6x”

tr_newBaseLogPass =“sa”

tr_newBaseServerName =“station4”

tr_newBaseLogId =“sa”

tr_newBaseAutoCommit = False

tr_newBaseDBParm =“”

3.cb_create按钮的单击事件

根据业务需要,这里创建的数据文件和日志文件的初始大小为100MB,最大值为200MB,增量为20MB。按钮cb_create根据输入参数构造动态SQL语句,创建数据库。cb_create的clicked事件脚本如下:

//数据库名

string ls_database

//数据文件路径及文件名

string ls_dataFile

//日志文件路径及文件名

string ls_logFile

//创建数据库的SQL语句

string ls_mySql

//逻辑数据文件名

string ls_logicalFileName

//逻辑日志文件名

string ls_logicalLogName

SetPointer(Hourglass!)

//取得用户输入的数据库名称

ls_database = trim(sle_databasetext)

//取得数据文件位置和名称

ls_dataFile = trim(sle_dataFiletext)

//取得日志文件位置和名称

ls_logFile = trim(sle_logFiletext)

ls_logicalFileName = ls_database + “Arch1”

ls_logicalLogName = ls_database + “Archlog1”

tr_sqlAutoCommit = True

//建立数据库的语句

ls_mySql=“CREATE DATABASE ”+ls_database+“ON”&

+“( NAME =”+ls_logicalFileName+“,”&

+“FILENAME = ‘”+ls_dataFile+“',”&

+“SIZE = 100MB,”&

+“MAXSIZE = 200,”&

+“FILEGROWTH = 20)”&

+“LOG ON ”&

+“( NAME = ”+ls_logicalLogName+“,”&

+“FILENAME = ‘”+ls_logFile+“',”&

+“SIZE = 100MB,”&

+“MAXSIZE = 200,”&

+“FILEGROWTH = 20)”

EXECUTE IMMEDIATE :ls_mySql Using tr_sql;

tr_sqlAutoCommit = False

//检索出刚刚建立的数据库

dw_databaseRetrieve(ls_database)

cb_tableEnabled = True

SetPointer(Arrow!)

4.cb_table按钮的单击事件

按钮cb_table从指定的脚本文件(sle_scripttext)中读取内容,构造动态的SQL语句,创建数据对象。为简化程序,对于脚本文件大于32765字节的情况,本文没做处理,读者可用多次读文件等技术自行处理。

cb_table的clicked事件脚本如下:

//创建数据对象前的时间

datetime ldt_create

//数据库名

string ls_database

//创建数据对象的SQL语句

string ls_sql

//存储脚本文件名

string ls_fileName

//打开文件的文件号

int li_fileNo

//文件长度,读取的文件字节数

long ll_fileLength, ll_number

//取得新建的数据库名称

ls_database = trim(sle_databasetext)

if MessageBox(“请确认”,“将要在”+ls_database+“数据库中生成表结构?”, Question!,YesNO!,2) = 2 then

return

end if

SetPointer(HourGlass!)

//为连接业务数据库的事务对象设置数据库值

tr_newBaseDataBase = ls_database

connect using tr_newBase;

if tr_newBasesqlcode <> 0 then

MessageBox (“数据库连接错误”,“不能连接到SQL Server数据库:” +ls_database + “ 。~n~r”+“错误信息:”+ tr_newBasesqlerrtext)

return

end if

//取得建立数据对象的时间,并从系统表sysobjects中提取建立的数据对象

Select distinct getDate()

into :ldt_create

from sysobjects

using tr_newBase;

//此数据窗口将显示新建事务对象

dw_objectsSetTransObject(tr_newBase)

//从输入中取得脚本文件名

ls_fileName = trim(sle_scripttext)

ll_fileLength = FileLength(ls_fileName)

//对大于32765字节的文件不做处理

if ll_fileLength > 32765 then

MessageBox(“”,“脚本文件太大”)

DISCONNECT USING tr_newBase;

return

elseif ll_fileLength > 0 then

//读取文件内容,执行动态SQL语句

li_fileNo = FileOpen(ls_fileName, StreamMode!)

ll_number = FileRead(li_fileNo, ls_sql)

if ll_number > 0 and ll_number <= 32765 then

tr_newBaseAutoCommit = True

EXECUTE IMMEDIATE :ls_sql

Usingtr_newBase;

tr_newBaseAutoCommit = False

end if

FileClose(li_fileNO)

else //不能正确读取文件信息

sle_scriptsetFocus()

sle_scriptSelectText(1,len(sle_scripttext))

MessageBox(“打开脚本文件出错”,“请输入正确的表结构脚本文件名称”)

DISCONNECT USING tr_newBase;

return

end if

//检索刚刚建立的数据对象

dw_objectsRetrieve(ldt_create)

DISCONNECT USING tr_newBase;

SetPointer(Arrow!)

首先要新建一个数据库窗口,打开NEW窗口,选择 datawindow 选项卡,会有多种数据表显示样式可以选择,这里演示一下常用的 grid 样式

选择 grid ,然后选择选择数据表的方式,这里演示一下 sql select方式

选择 sql select 之后,选择要显示的表,例表:ssc

接下了,选择需要显示的列

这个界面菜单的 design 选项卡下面有 retrievel arguments 可以设置筛选的参数,convert to syntax 可以切换到 sql脚本方式选择表

选择好表和列就可以点击 return 按钮来进一步设置表格的显示

return 完可以,设置一下字体颜色之类的,也可以直接 next 在设计界面设置这些属性

设计界面,可以设置的项目非常多,这里就不详细说明了,直接保存为 d_test 数据库窗口

保存后在 workspace 里就可以看到我们保存的 d_test 数据库窗口

这样就可以在我们的窗口里添加数据库窗口,新建一个窗口,添加一个数据库窗口控件

在 dataobject 属性设置 要显示的数据库窗口

在窗口需要刷新数据的地方,写刷新数据的代码,我们写在 open 事件

这样就完成了数据表的显示,运行效果

PB连接数据库很容易,不知道你是哪个版本的PB,一般如果你装了PB,在PB上的DATABASE那项,新建一个连接,填写上数据库和登录用户名密码,PB本身就可以连接数据库了。如果写在程序中,在登录时,把刚才新建连接时候,点属性把里面的一段代码COPY下来就行了。

使用run函数可以实现。

举个例子,比如打开新浪

:string ls_ie

ls_ie = '>

写在按钮的点击代码里,另外,你还可以设置一个singlelineedit控件来输入网址

通过以上的代码,就可以调用IE打开网页。

PB的特点:

利用PB开发中大型的MIS应用系统,一般采用三层C/S的体系结构在这种结构下,系统可分为两部分,即后台数据库部分和前台应用程序部分,后台采用非面向对象的关系数据库管理系统RDBMS(如SQL Server等)实现对应用数据的组织,安全性、完整性维护,以及存取控制;前台应用程序部分利用PB提供的可视化编程技术实现用户的各种需求。

其特点表现在,利用PB提供的窗口、菜单及数据窗口等对象很方便地实现友好的用户界面,系统的各种功能以窗口对象为主线,利用PB 提供的Script语言,通过对窗口的各控件的事件描述来实现。

与传统的面向过程的语言相比较,PB支持面向对象的程序设计方法,其用户界面的元素都是对象,所以都有属性、事件和方法,具有继承、封装和重用等面向对象的特性。

以上就是关于PB开发Sybase数据库应用技巧集锦[1]全部的内容,包括:PB开发Sybase数据库应用技巧集锦[1]、用PB制作数据库,不同权限的用户登录,则打开不同的界面,可以实现吗。望PB高手指教、powerbuilder如何连接sql数据库,需要具体的 *** 作过程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9800951.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存