配色: 字号:
open office base 的使用
2016-03-24 | 阅:  转:  |  分享 
  
OpenOfficebase的使用

数据库的连接









打开一个空的FORM



左边是工具箱可以任意拖拽。









































(1)



它框里内容的设置



(2)















(3)



按钮的执行在于macros的编写





macros的编写





(1)变量的定义:dim变量名

(2)Form中控件的取得:oDrawpage=oEvent.Source.getModel().getParent()

txtJCL=oDrawpage.getByName("txtJCL")

值的取得:txtJCL.text

(3)数据库的连接:

dbs=ThisDatabaseDocument.DataSource

oCon=dbs.getConnection("","")(用户名和密码)

oStatement=oCon.CreateStatement()

recs=oStatement.executeQuery(strSQL)(SQL执行后的结果)

(4)出力CSV:

DimfileAccessService,textOutputStream,outputStream,showString,oData2,n,i

fileAccessService=createUnoService("com.sun.star.ucb.SimpleFileAccess")

textOutputStream=createUnoService("com.sun.star.io.TextOutputStream")

outputStream=fileAccessService.openFileWrite(pmxCurDir()&"/XXX.csv")

textOutputStream.setEncoding("SJIS")

outputStream.truncate()

textOutputStream.setOutputStream(outputStream)

表中字段名的取得

oMeta=recs.getMetaData()

n=oMeta.getColumnCount()

Fori=1Ton

oData2(i)=oMeta.getColumnName(i)

textOutputStream.writeString(oData2(i)+",")

Next

textOutputStream.writeString(chr(10))

表中值得取得

DoWhilerecs.next()

FornCol=1Ton

oData(nCol)=recs.getString(nCol)

textOutputStream.writeString(oData(nCol)+",")

Next

textOutputStream.writeString(chr(10))

loop

textOutputStream.closeOutput()

4、关闭一个FORM(FORM中的关闭按钮)

SubcmdClose

dimoForm

oForm=ThisDatabaseDocument.FormDocuments.getByName("FORM

")

oForm.Close

EndSub

打开一个FORM(FORM中的打开按钮)

SubCOMD3

oForm=ThisDatabaseDocument.FormDocuments.getByName("FORM

")

oForm.Open

EndSub







最后一个完整实例

REMBASIC

OptionExplicit

DimtxtJCL,txtJOB

DimcmbLIB,cmbPROG,cmbFILE,cmbINSERT,cmbRUN,cmbSUBJOB,cmbJM,cmbSTART

DimtxtCFROM,txtCTO,txtUFROM,txtUTO,txtCOUNT,cmdDISP



PrivateFunctiongetController(oEvent)

''控件值得取得

oDrawpage=oEvent.Source.getModel().getParent()

txtJCL=oDrawpage.getByName("txtJCL")

txtJOB=oDrawpage.getByName("txtJOB")

cmbLIB=oDrawpage.getByName("cmbLIB")

cmbPROG=oDrawpage.getByName("cmbPROG")

cmbFILE=oDrawpage.getByName("cmbFILE")

cmbINSERT=oDrawpage.getByName("cmbINSERT")

cmbRUN=oDrawpage.getByName("cmbRUN")

cmbSUBJOB=oDrawpage.getByName("cmbSUBJOB")

cmbJM=oDrawpage.getByName("cmbJM")

txtCFROM=oDrawpage.getByName("txtCFROM")

txtCTO=oDrawpage.getByName("txtCTO")

txtUFROM=oDrawpage.getByName("txtUFROM")

txtUTO=oDrawpage.getByName("txtUTO")

txtCOUNT=oDrawpage.getByName("txtCOUNT")

cmdDISP=oDrawpage.getByName("cmdDISP")

cmbSTART=oDrawpage.getByName("cmbSTART")

EndFunction



PrivateSubcmdSELECT_Click(oEvent)

DimWKAsString

DimCOND_NUMAsInteger

DimJoinTableAsString

DimJoinProgAsBoolean

DimJoinFileAsBoolean

DimJoinJclAsBoolean

DimCONDAsString

DimResourceAsString

DimRtypeAsString



getController(oEvent)



''检索条件

JoinTable="[库名]"



乱七八糟的检索条件SQL语句



dimdbs,oCon,oStatement,recs,nCount

dbs=ThisDatabaseDocument.DataSource

oCon=dbs.getConnection("","")

oStatement=oCon.CreateStatement()



''件数的取得

strSQL="SELECTDISTINCT[库名].FROM"&JoinTable

IfCOND<>""Then

strSQL=strSQL&"WHERE"&COND

EndIf



recs=oStatement.executeQuery(strSQL)



IfIsNull(recs)ORIsEmpty(recs)Then

txtCOUNT.text=0

Else

nCount=0

DoWhilerecs.next

nCount=nCount+1

Loop

txtCOUNT.text=nCount

EndIf



IftxtCOUNT.text=0Then

cmdDISP.Enabled=False

Else

strSQL=strSQL&"ORDERBY[库名].JCL名"

cmdDISP.Enabled=True

EndIf

oCon.close()



EndSub



PrivateSubcmdDISP_Click()(用.csv输出检索的结果)

dimoCon,dbs,oStatement,recs,oMeta,nCol,oData

dbs=ThisDatabaseDocument.DataSource



oCon=dbs.getConnection("","")

oStatement=oCon.CreateStatement()

recs=oStatement.executeQuery(strSQL)



''csv文件的做成

DimfileAccessService,textOutputStream,outputStream,showString,oData2,n,i

fileAccessService=createUnoService("com.sun.star.ucb.SimpleFileAccess")

textOutputStream=createUnoService("com.sun.star.io.TextOutputStream")

outputStream=fileAccessService.openFileWrite(pmxCurDir()&"/XXX.csv")

textOutputStream.setEncoding("SJIS")

outputStream.truncate()

textOutputStream.setOutputStream(outputStream)



''csv文件字段的取得

oMeta=recs.getMetaData()

n=oMeta.getColumnCount()

Fori=1Ton

oData2(i)=oMeta.getColumnName(i)

textOutputStream.writeString(oData2(i)+",")

Next

textOutputStream.writeString(chr(10))



''csv文件值的取得

DoWhilerecs.next()

FornCol=1Ton

oData(nCol)=recs.getString(nCol)

textOutputStream.writeString(oData(nCol)+",")

Next

textOutputStream.writeString(chr(10))

loop

textOutputStream.closeOutput()

oCon.close()

EndSub



FunctionpmxCurDir()AsString

DimoPathSettings

oPathSettings=CreateUnoService("com.sun.star.util.PathSettings")

pmxCurDir=oPathSettings.Work

EndFunction



SubcmdClear_Click(oEvent)(clear)

getController(oEvent)



txtJCL.text=""

txtJOB.text=""

cmbLIB.text=""

cmbPROG.text=""

cmbFILE.text=""

cmbINSERT.text=""

cmbRUN.text=""

cmbSUBJOB.text=""

cmbJM.text=""

cmbSTART.text=""

txtCFROM.text=""

txtCTO.text=""

txtUFROM.text=""

txtUTO.text=""



txtCOUNT.text=0

cmdDISP.Enabled=False

EndSub



SubcmdClose

dimoForm

oForm=ThisDatabaseDocument.FormDocuments.getByName("FORM

")

oForm.Close

EndSub





















献花(0)
+1
(本文系小武fover首藏)