日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PB中使用FORMULA ONE

發布時間:2023/12/29 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PB中使用FORMULA ONE 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文是小王整理計算機時找到的,google了一下,網上似乎沒有,發上來與大家分享吧。我將以一個例子來詳細說明F1的用法,以補充前文所述,此例為電力企業停電申請票的上報審批過程,內含過程權限控制,每一權限只能修改F1報表的一個部分,且有做圖功能,采用PB 6.5和F1 6所編,下面將詳細說明:
1.?建一張申請票的F1文件作為模板,如下圖:


為實現權限控制,將I1:P38的單元格設上保護,使右半邊報表不可寫:
1)、選中單元格,鼠標右鍵FORMAT CELLS:PROTECTION下的LOCKED前打勾。
2)、FORMAT菜單下SHEET項的PROTECTION前打勾,這句很重要,否則上句不起作用。
2.?庫中建一停電申請票表DFS_TDSQP:
LRSJ 錄入時間
TDSJ 停電時間
LRDW 錄入單位
GLDW 管理單位
TDSB 停電設備
GZNR 工作內容
KGSJ 開工時間
WGSJ 完工時間
GZR 工作人
ZTM 狀態碼
SQPNR 申請票內容  IMAGE類型
3.?在PB窗口中插入F1控件:
在POWERBUILDER的窗口中點中OLE圖標:會出現“插入對象”對話框,選擇insert control 標簽項(如下圖),


在對象列表中選擇 Vci Formula One Workbook,按確定鍵后,選好插入位置點擊鼠標,即加入了一個名為ole_1的OLE對象,在其上用鼠標右鍵選中OCX Properties項,在Show標簽下可將Row Heading和Column Heading項取消選中,將Tabs的值由Bottom改為Off(如下圖),加入的OLE對象就是一個沒有行頭、列頭及標簽的空白表格。
?
4.?讀模板的內容至控件:
declare instance variables:
BLOB vcf_form
declare global variables:
string gs_ztm,gs_lrdw,gs_gldw
datetime gd_lrsj,gd_tdsj
在窗口的OPEN事件中寫腳本:
datetime sj?
int fh
string ls_dwmc
em_1.text=string(gd_tdsj,"yyyy年mm月dd日hh:mm")
selectblob SQPNR into :vcf_form from DFS_TDSQP
?where LRSJ=:gd_lrsj and LRDW=:gs_lrdw
?using sqlca;//取出庫中申請票內容
if isnull(vcf_form) then
?ole_1.object.Read("模板.vts", ref fh)//把模板讀入OLE控件
?ole_1.object.setactivecell(21,2)
?ole_1.object.Entry=string(gd_tdsj,"mm月dd日hh時mm分至")//填入計劃停電時間
?ole_1.object.setactivecell(4,3)
?select ZZ_DWMC into :ls_dwmc from B04 where ZZ_DWBM=:gs_lrdw;
?ole_1.object.Entry=ls_dwmc//填入計劃停電單位
?ole_1.object.setactivecell(4,6)
?ole_1.object.Entry=xm//填入姓名
else
?if fileexists("c:\book1.vts") then
??filedelete("c:\book1.vts")
?end if
?fh=fileopen("c:\book1.vts",streammode!,write!)//建一臨時文件
?if fh<>-1 then
??filewrite(fh,vcf_form)//把庫中的庫中申請票內容寫入臨時文件
??fileclose(fh)
??ole_1.object.Read("c:\book1.vts", ref fh)//把臨時文件內容讀入控件
?else
??MessageBox("錯誤提示", "打開文件操作錯誤!")
??close(this)
??return
?end if
END IF

CHOOSE CASE qx
?CASE "lr"//權限為二級單位錄入時只能錄入左半邊的報表
??ole_1.object.selection="A1:G38"
??ole_1.object.setprotection(false,false)//將A1:G38的單元格置為可寫,其余不可。
??ole_1.object.enableprotection=true
??ole_1.object.selection="C4"//光標停在C4單元格處
?CASE "gl"
??
?CASE "zd"
??
?CASE "zb"
??
END CHOOSE
5.?鼠標右鍵雙擊OLE_1控件可直接編輯報表,填入內容至可寫的單元格內,可以采用F1的畫圖工具對報表進行簡單的做圖。
6.?將已修改的控件內容寫入數據庫:
int fh
OLEobject? book;
string filename="c:\book1.vts"

book=ole_1.object
book.Write(filename, 12)//將控件內容寫入臨時文件
fh=fileopen( filename, StreamMode!)
IF fh<>-1 THEN
?FileRead(fh, vcf_form)?//將臨時文件內容寫入BLOB變量
?FileClose(fh)
ELSE
?RETURN 0
END IF

if len(vcf_form )>0 then
?UPDATEBLOB? DFS_TDSQP set SQPNR=:vcf_form
?where LRSJ=:gd_lrsj and LRDW=:gs_lrdw
?using sqlca;//將BLOB變量內容寫入庫中
?IF SQLca.sqlcode=0 THEN
??COMMIT using sqlca;
//??MessageBox("提示", "完成對數據庫的申請票存儲操作!")
?ELSE
??ROLLBACK using sqlca;
??MessageBox("提示", "申請票存儲操作失敗!")
??RETURN 0
?END IF
end if

gd_tdsj=datetime(date(left(em_1.text,4)+"-"+mid(em_1.text,7,2)+"-"+mid(em_1.text,11,2)),&
??????? time(mid(em_1.text,15,5)+":00"))
?update DFS_TDSQP set TDSJ=:gd_tdsj , ZTM=:ztm_wf
??where LRSJ=:gd_lrsj and LRDW=:gs_lrdw
??using sqlca;//保存錄入時間和錄入單位的值
?IF SQLca.sqlcode=0 THEN
??COMMIT using sqlca;
??MessageBox("提示", "完成對數據庫的存儲操作!")
??return 1
?ELSE
??ROLLBACK using sqlca;
??MessageBox("提示", "停電時間存儲操作失敗!")
??RETURN 0
?END IF
7、打印控件內容
ole_1.object.fileprint(true)
實際上,read、write、savefiledlg、fileprint等函數都是FORMULA ONE所有的,POWERBUILDER中只需在Ole_1后加一個object即可引用這些函數,函數的定義在F1的幫助中,請自己用時查閱。

總結

以上是生活随笔為你收集整理的PB中使用FORMULA ONE的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。