Obrigado
REM ***** BASIC *****
Dim oDialogo As Object
Dim oTabela As Object
Sub pick_city_list
Dim oForm as Object
dIM oKeyEvent AS oBJECT
Dim countryText as string
Dim cityList as Object
Dim cityBox as Object
Dim oCountryList as Object
Dim oCountryBox as Object
Dim idebugCode as integer
Dim DatabaseContext As Object
Dim DataSource As Object
Dim Connection As Object
Dim InteractionHandler as Object
Dim Statement As Object
Dim ResultSet As Object
Dim Names As Object
Dim I As Integer
Dim sDSCENTIDAD As String
Dim oQuery, oResult As Object
Dim sSql As String
’ oKeyEvent = createUnoService(“com.sun.star.awt.Key”)
REM Determine if the countrylist text box has a value
oForm = ThisComponent.DrawPage.Forms.GetByName(“dsPhotoInfo”)
oCountryBox = oForm.getByName(“birthCountry”)
IF oCountryBox.text <> “” THEN
’ Connect to database
DatabaseContext = createUnoService(“com.sun.star.sdb.DatabaseContext”)
Names = DatabaseContext.getElementNames()
’ For I = 0 To UBound ( Names())
’ MsgBox Names(I)
’ Next I
DataSource = DatabaseContext.getByName(“GestACRA”) 'C:\Users\MREIS\Documents\GestACRA.odb
If Not DataSource.IsPasswordRequired Then
Connection = DataSource.GetConnection(“SYSDBA”,“minhachave****”)
Else
InteractionHandler = createUnoService(“com.sun.star.sdb.InteractionHandler”)
Connection = DataSource.ConnectWithCompletion(InteractionHandler)
End If
ELSE
Print “No Country”
EXIT SUB
ENDIF
’ Controle-tabela-dialogo.ods
DialogLibraries.LoadLibrary(“Standard”)
‘Usando a variável declarada no começo do módulo’
oDialogo = CreateUnoDialog( DialogLibraries.Standard.getByName(“Dialog1”) )
'Criar controle tabela
oTabela = oDialogo.Model.createInstance(“com.sun.star.awt.grid.UnoControlGridModel”)
with oTabela
.PositionX = 10
.PositionY = 10
.Width = 171
.Height = 85
end with
oColunas = oTabela.ColumnModel
oCol = oColunas.createColumn()
oCol.Title = " NIF "
oCol.ColumnWidth = 12 ‘Definir largura’
oCol.Flexibility = False ‘Para fixar largura’
oColunas.addColumn(oCol)
oColunas = oTabela.ColumnModel
oCol = oColunas.createColumn()
oCol.Title = " C.ID "
oCol.ColumnWidth = 10 ‘Definir largura’
oCol.Flexibility = False ‘Para fixar largura’
oColunas.addColumn(oCol)
oColunas = oTabela.ColumnModel
oCol = oColunas.createColumn()
oCol.Title = " Desc.Empresa "
oCol.ColumnWidth = 45 ‘Definir largura’
oCol.Flexibility = False ‘Para fixar largura’
oColunas.addColumn(oCol)
oColunas = oTabela.ColumnModel
oCol = oColunas.createColumn()
oCol.Title = " Morada "
oCol.ColumnWidth = 45 ‘Definir largura’
oCol.Flexibility = False ‘Para fixar largura’
oColunas.addColumn(oCol)
‘Inserir o controle tabela no diálogo’
oDialogo.Model.insertByName(“Tabela”, oTabela)
oQuery = Connection.createStatement()
'This allows forward & back scrolling & the necessary checking of ‘isBeforeFirst’
oQuery.ResultSetType = com.sun.star.sdbc.ResultSetType.SCROLL_INSENSITIVE
’ Talvez c/ uma inpubox pq a tabela ainda é grande e só quero pegar parte para ficar mais leve
sDSCENTIDAD = “‘TAP’”
'deveria ser parâmetro **:**DSCENTIDAD ainda não descobri com fazer.
‘Tem como passar parâmetros para o Sql aqui
’ colunas 0 1 2 3 etc…
sSql = "Select FIRST 10 CENTIDAD_ID,DSCENTIDAD, NIF, TPMORA||’ '||MORADA AS MORADA " & _
" From Empresas E WHERE E.DSCENTIDAD CONTAINING upper("+sDSCENTIDAD +")"
oResult = oQuery.executeQuery(sSql)
oTabela = oDialogo.getControl(“Tabela”).Model
oDadosTab = oTabela.GridDataModel
oDadosTab.removeAllRows
’ No exemplo do o Grafeno usa uma Planilha e se bem percebo vai pegar as colunas 0, 1, 3, Ultima(linha)
’ Numa DB Table que método ou função substiui o código da linha abaixo :
’ oIntervalo = oPlan.getCellRangeByPosition(0,1,3,UltimaLinha(oPlan))
oIntervalo = oResult.??? Deve ter como fazer aqui para carregar as colunas a pegar e o Cursor LastRecord
mDados = oIntervalo.DataArray
For i= 0 to UBound( mDados)
oDadosTab.addRow("", mDados(i)) '// Só agora vai carregar os dados! Sto Deu, no Delphi faço isto com 3/4 Cliks Em 20 minutos e fica um primor…
’ aqui sou um novato é só arranhar mas tem que ser!
Next i
’ Esta parte aqui é só para testes??? REMOVER:
If Not IsNull(oResult) Then
while oResult.next() ’ Tem dados…
msgBox “NIF: " +oResult.getLong(“NIF”) +”|" & _
“ID: " +oResult.getInt(1) +”|#|" & _
“DSCENTIDAD: " + oResult.getString(2) +”|" & _
oResult.getString(4)
wend
End If
Connection.close()
End Sub ’
Quem puder ajudar agradecido.
Felipe Alé via Ask LibreOffice <noreply@ask.libreoffice.org> escreveu no dia sexta, 30/09/2022 à(s) 20:52: