一、powerbuilder如何连接sql数据库,需要具体的操作过程
1、在powerbuilder软件界面,点击上面数据库图标。

2、弹出Database Profiles窗口,在此窗口内,双击图中标注ODBC Administrator项。
3、在弹出的ODBC数据源管理器中点击右侧的添加按钮。
4、在弹出的创建新数据源窗口中,点击最下方SQL Server Native Client 10.0项。
5、弹出创建到SQL Server的新数据源窗口,输入任意名称、描述,服务器处输入(local),点击下一步。
6、在新的界面最上方“更改默认数据库为”前勾选,下方选择你的程序想要连接的数据库。点击下一步。
7、一直点击下一步直到如图界面,到此数据源的添加基本完成,点击下方测试数据源,提示成功后关闭此界面即可;如果不成功请从头再次操作,注意每一个小细节。
8、上个步骤关闭窗口后,回到原来的ODBC数据源管理器窗口,可以看到列表上方出现了刚刚创建的数据源,关闭此窗口。
9、回到Database Profiles窗口,如图,点击ODB ODBC,然后点击右侧New按钮。
10、新弹出Database Profile Setup-ODBC窗口,填写Profile Name,下拉列表选择对应Data Source项。(如果你的数据库没有设置登录密码,则下方的user id和password项不需填写)
11、中间穿插一步,如图,在这个窗口上方点击Preview标签,复制下方的一段代码,留待后面使用。点击OK,关闭此窗口。
12、点击新添加的那一项,如图,点击右侧Connect按钮,然后数据库小图标会出现一个绿色小勾。到这里,连接数据库的所有配置已经完成,只需在程序中添加连接数据库的代码就可以了。
13、如图,在一个程序窗口的open事件中添加了刚刚复制的那段代码,这样这个窗口在打开时就可以直接连上数据库了。
二、powerbuilder中使用excel使用的属性方法
没教程的,我教你一个方法:你打开EXCEL,"工具—>宏—>录制新宏"然后在EXCEL表格里随便输入几个东西,然后停止录制,然后"工具—>宏—>运行宏—>编辑",这时候打开了一个VB编辑器,里面有以下代码:
'宏由 Jenkit录制,时间: 2009-8-29
对于上面的执行代码,全部都可以在PB里调用,不懂的地方你就用宏跟踪。具体我贴一个代码(导出到EXCEL)给你参考:
string ls_colname,ls_coltext,ls_coltype
long ll_columncount,ll_rowcount
long ll_col,ll_row,ll_validcol= 1
string ls_filepath,ls_filename
datastore lds_tmp//临时存储,用于放所有数据
datastore lds_buff//用于缓冲数据的存储区
WNetGetUser(lsname,username,strlen)
ls_filepath="C:\Documents and Settings\"+username+"\桌面\"+string(gd_sysdate,'yyyymmdd')
li_ret= getfilesavename('选择报盘文件',ls_filepath,ls_filename,'XLS','EXCEL文件(*.XLS),*.XLS')
if li_ret<> 1 then return-1
IF fc_isnull(ls_filepath,'')='' THEN return-1
li_ok= ExcelServer.ConnectToObject("","excel.application")
li_ok= ExcelServer.ConnectToNewObject("excel.application")
messagebox("提示","您的电脑可能没装EXCEL,所以不能导出!")
If FileExists(ls_filepath) Then
IF MessageBox("提示","文件"+ ls_filepath+"已经存在,是否继续?",Question!,YesNo!)=2 Then
//检查给定的文件路径是否可以写入
ll_row=FileOpen(ls_filepath,StreamMode!,Write!,LockWrite!,Replace!)
IF ll_row=-1 OR IsNull(ll_row) THEN
MessageBox("提示","指定的文件路径不能写入数据,请检查!",StopSign!)
openwithparm(w_wait,'正在缓冲...')
auo_dw.getfullstate(lb_fullstate)
lds_tmp.setfullstate(lb_fullstate)
lds_buff.setfullstate(lb_fullstate)
openwithparm(w_wait,'正在打开EXCEL文件...')
ExcelServer.Application.Workbooks.add()
ExcelServer.Application.Visible= false
ExcelServer.ActiveSheet.Cells.Select()
//ExcelServer.Selection.ColumnWidth= 16//刚好容纳身份证宽度
ExcelServer.Selection.Font.Name="宋体"
ExcelServer.Selection.Font.size= 10
ExcelServer.Selection.Font.Strikethrough= False
ExcelServer.Selection.Font.Superscript= False
ExcelServer.Selection.Font.Subscript= False
ExcelServer.Selection.Font.OutlineFont= False
ExcelServer.Selection.Font.Shadow= False
ExcelServer.Selection.Font.Underline=-4142
ll_columncount= long(lds_tmp.Object.DataWindow.Column.Count)
ll_rowcount= lds_tmp.rowcount()
openwithparm(w_wait,'格式化EXCEL文件...')
for ll_col= 1 to ll_columncount
ls_colname= lds_tmp.describe("#"+string(ll_col)+".name")
ls_coltext= lds_tmp.describe(ls_colname+"_t.text")
if left(ls_coltext,1)='"' then
ls_coltext= mid(ls_coltext,2,len(ls_coltext)- 2)
ls_coltype= Lower(lds_tmp.Describe("#"+ string(ll_col)+".ColType"))
if lds_tmp.describe(ls_colname+".visible")<>'1' then
lds_tmp.MODIFY("destroy column"+ls_colname)
lds_tmp.MODIFY("destroy"+ls_colname+'_t')
lds_buff.MODIFY("destroy column"+ls_colname)
lds_buff.MODIFY("destroy"+ls_colname+'_t')
ls_col_exl= char(ASC("A")+ll_validcol-1)+":"+char(ASC("A")+ll_validcol-1)
ExcelServer.Columns(ls_col_exl).Select()//整列选取,用于设置数据格式
li_bit= int((ll_validcol-1)/26)//进位
li_mod= mod((ll_validcol-1),26)//余数
ls_col_exl= char(ASC("A")+li_bit-1)+char(ASC("A")+li_mod)+':'+char(ASC("A")+li_bit-1)+char(ASC("A")+li_mod)
ExcelServer.Columns(ls_col_exl).Select()
ExcelServer.Selection.HorizontalAlignment=-4108
ExcelServer.Selection.VerticalAlignment=-4108
CHOOSE CASE Left( ls_coltype, 4)
ExcelServer.Selection.NumberFormatLocal="@"
ExcelServer.Selection.HorizontalAlignment=-4131//居左
ExcelServer.Selection.NumberFormatLocal="yyyy-m-d"
ExcelServer.Selection.HorizontalAlignment=-4108//居中
ExcelServer.Selection.NumberFormatLocal="0.00_"
ExcelServer.Selection.HorizontalAlignment=-4152//居右
CASE"int","long","numb","ulon"
ExcelServer.Selection.NumberFormatLocal="0_"
ExcelServer.Selection.HorizontalAlignment=-4108//居中
ExcelServer.Selection.Font.ColorIndex=-4105
ls_col_exl= char(ASC("A")+ll_validcol-1)+'1'
ExcelServer.Range(ls_col_exl).Select()
ls_col_exl= char(ASC("A")+li_bit-1)+char(ASC("A")+li_mod)+'1'
ExcelServer.Range(ls_col_exl).Select()
ExcelServer.Selection.Borders(7).LineStyle= 1
ExcelServer.Selection.Borders(7).Weight= 2
ExcelServer.Selection.Borders(8).LineStyle= 1
ExcelServer.Selection.Borders(8).Weight= 2
ExcelServer.Selection.Borders(9).LineStyle= 1
ExcelServer.Selection.Borders(9).Weight= 2
ExcelServer.Selection.Borders(10).LineStyle= 1
ExcelServer.Selection.Borders(10).Weight= 2
ExcelServer.Selection.Interior.ColorIndex= 15
ExcelServer.Selection.HorizontalAlignment=-4108//标题行居中
ExcelServer.Selection.VerticalAlignment=-4108//垂直居中
ll_colwidth= long(lds_tmp.describe(ls_colname+'.width'))*3.2/100
if not isnull(ll_colwidth) and ll_colwidth>0 then
ExcelServer.Selection.ColumnWidth= ll_colwidth
ls_col_exl= char(ASC("A")+ll_validcol-1)+'1'
ExcelServer.Range(ls_col_exl).FormulaR1C1= ls_coltext
ls_col_exl= char(ASC("A")+li_bit-1)+char(ASC("A")+li_mod)+'1'
ExcelServer.Range(ls_col_exl).FormulaR1C1= ls_coltext
/*2008-10-28更新-------------------/
auo_dw—>lds_tmp—>lds_buff———→Excel
\*---------------------------------*/
openwithparm(w_wait,'正在写入EXCEL文件...')
long ll_rowsread= 500//缓冲行数
do while lds_tmp.rowcount()> 0
if ll_rowsread> lds_tmp.rowcount() then
ll_rowsread= lds_tmp.rowcount()
lds_tmp.rowsmove( 1, ll_rowsread, Primary!, lds_buff, 1, Primary!)
if lds_buff.SaveAs('',Clipboard!,false)=-1 then goto lb_exit
ExcelServer.Range("A"+string(ll_rows+1)).Select()
ExcelServer.ActiveSheet.Paste()
ls_col_exl="A2:"+char(ASC("A")+ll_validcol-2)+string(auo_dw.rowcount()+1)
ExcelServer.Range(ls_col_exl).Select()
ls_col_exl="A2:"+char(ASC("A")+li_bit-1)+char(ASC("A")+li_mod)+string(auo_dw.rowcount()+1)
ExcelServer.Range(ls_col_exl).Select()
if auo_dw.rowcount()> 0 then
ExcelServer.Selection.Borders(7).LineStyle= 1
ExcelServer.Selection.Borders(7).Weight= 2
ExcelServer.Selection.Borders(8).LineStyle= 1
ExcelServer.Selection.Borders(8).Weight= 2
ExcelServer.Selection.Borders(9).LineStyle= 1
ExcelServer.Selection.Borders(9).Weight= 2
ExcelServer.Selection.Borders(10).LineStyle= 1
ExcelServer.Selection.Borders(10).Weight= 2
ExcelServer.Selection.Borders(11).LineStyle= 1
ExcelServer.Selection.Borders(11).Weight= 2
if auo_dw.rowcount()> 1 then
ExcelServer.Selection.Borders(12).LineStyle= 1
ExcelServer.Selection.Borders(12).Weight= 2
ExcelServer.Range("A1").Select()
////////////////////////////////////
ExcelServer.Application.ActiveWorkbook.SaveAs(ls_filepath,-4143,"","",False, False)
gs_err_v_text[1]="已经成功将数据导出到"+ls_filepath+",是否打开查看?"
if fc_disp_msg(10010,2)= 1 then
ExcelServer.Application.Visible= true
ExcelServer.Application.Workbooks.close()
ExcelServer.DisConnectObject()
三、powerbuilder9.0版本的程序能否用PB12.0打开..
1、你最好不要使用PB12来打开PB9的文件,因为PB是向上兼容,也就是PB12可以打开并且运行PB9的程序,但是一旦使用PB12打开以后,就无法再使用PB9打开了。这样会是程序的版本提高了。每个版本都有自己相关的动态链接库文件,也就是DLL文件,而你升级到12后,就要使用12的DLL文件才可以执行。
2、您还是找一个PB9装上吧,现在PB9的程序下载应该还有很多的。
3、如果一定要使用PB12运行,那么用PB12打开,打开后会提示你编译,编译一下。这样源代码就可以用了。另外你还要重新生成可执行程序,也就是EXE文件和PBD或者DLL文件,在新建,然后选择PROJECT,选第一个,默认往下就行了。
如果你还想了解更多这方面的信息,记得收藏关注本站。









