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
|
|