
segunda-feira, 2 de maio de 2011
sexta-feira, 25 de março de 2011
Possivel Virus, Malware ou Spyware
ATENÇÃO:
A minha filha recebeu hoje um email em tudo igual ao da imagem acima que retirei da net, exactamente aqui.
Por distracção carregou no link e não foi para lado nenhum, dando impressão que algo se terá instalado no computador, está a correr o anti-vírus e até agora nada foi detectado, mas, por precaução, aconselho a que se receberem um igual, NÃO ABRAM.
É muito tosco, é certo, mas...
terça-feira, 8 de fevereiro de 2011
Já está disponível a Versão 3.3 do Openoffice em Português
A Oracle já disponibilizou a versão definitiva em Português do OpenOffice 3.3.
Pode fazer o download aqui
quinta-feira, 27 de janeiro de 2011
Testando o Base do OpenOffice 3.3 RC10
Vinha utilizando o seguinte código para obviar ao facto de o “Base” não possuir querys de update, delete e insert:
Sub Contabiliza
Dim DatabaseContext As Object
Dim DataSource As Object
Dim Connection As Object
Dim Statement As Object
Dim ResultSet As Object
'Inicia o processo de contabilização
Msgbox "A iniciar o processo de Contabilização"
'Limpa todos os movimentos contabilisticos
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("contabilidade")
Connection = DataSource.GetConnection("","")
Statement = Connection.createStatement()
ResultSet = Statement.executeQuery("DELETE FROM ""tMOVIMENTOS_CONTA"";")
'Contabiliza os movimentos a Débito
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("contabilidade")
Connection = DataSource.GetConnection("","")
Statement = Connection.createStatement()
ResultSet = Statement.executeQuery("INSERT INTO ""tMOVIMENTOS_CONTA""(""ID_MOV"",""COD_CONTA"",""DATA_MOV"",""DESC_MOV"",""DEBITO"",""CREDITO"")SELECT ""ID_MOV"",""CONTA_DEB"" AS ""COD_CONTA"",""DATA_MOV"",""DESC_MOV"",""VALOR"" as ""DEBITO"",0 AS ""CREDITO"" FROM ""tMOVIMENTOS"";")
'Contabiliza os movimentos a Crédito
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("contabilidade")
Connection = DataSource.GetConnection("","")
Statement = Connection.createStatement()
ResultSet = Statement.executeQuery("INSERT INTO ""tMOVIMENTOS_CONTA""(""ID_MOV"",""COD_CONTA"",""DATA_MOV"",""DESC_MOV"",""DEBITO"",""CREDITO"")SELECT ""ID_MOV"",""CONTA_CRED"" AS ""COD_CONTA"",""DATA_MOV"",""DESC_MOV"",0 as ""DEBITO"",""VALOR"" AS ""CREDITO"" FROM ""tMOVIMENTOS"";")
Msgbox "Processo de contabilização concluído"
End Sub
O mesmo funcionou perfeitamente com a base de dados aberta até à versão 3.2.1
Nos testes que tenho efectuado com a RC10 da versão 3.3, vinha dando o seguinte erro na linha
“DataSource = DatabaseContext.getByName("contabilidade")”:
“Erro de execução de basic
Ocorreu um erro de excepção
Type:com.sun.start.container.nosuchelentexception
Message:contabilidade”
Acontecia que, na mesma linha, se substituisse “contabilidade” por uma base de dados não aberta, o erro deixava de ocorrer, o que me levava a crer que o erro apenas ocorria quando estava a agir dentro da propria base de dados.
Alteração surgida com a implementação da versão 3.3? Quase de certeza!
Assim sendo, pensei:
Será que alguem me pode ajudar a encontrar o código correcto para proceder às mesmas operações?
Então decidi recorrer aos foruns que conheço e com a ajuda do RPG ( aqui ) consegui encontrar o código correcto para efectuar os comandos pretendidos na base de dados aberta e que é o seguinte:
'Limpa todos os movimentos contabilisticos
Connection=thisdatabasedocument.CurrentController.activeconnection
Statement = Connection.createStatement()
ResultSet = Statement.executeQuery("DELETE FROM ""tMOVIMENTOS_CONTA"";")
E tudo funcionou perfeitamente!
Por isso aqui fica, para quem sinta o mesmo problema e, como eu, encontre dificuldades em encontrar respostas em português.
quarta-feira, 24 de novembro de 2010
Macro para guardar valor de campo ListBox em variável no Base do OpenOffice
Sub Listbox_select
oDoc = thisComponent
oController = oDoc.getCurrentController()
oform =odoc.drawpage.forms.getbyindex(0)
oList = oForm.getByName("produt")
oListCtr = ThisComponent.CurrentController.GetControl(oList)
oTextCtr = oListCtr.SelectedItem
oPosCtr = oListCtr.SelectedItempos'Este é o valor a guardar
msgbox oTextCtr
msgbox oPosCtr
prod=oPostCtr
End Sub
quarta-feira, 6 de outubro de 2010
Maximizar forms no Base do OpenOffice
sub onWhenLoading( oEvent as object )
MaximizeFrame( oEvent.Source.Parent.Parent.CurrentController.Frame)
end sub
Declare Function ShowWindow Lib "user32" _
(ByVal lHwnd As Long, _
ByVal lCmdShow As Long) As Boolean
sub MaximizeFrame( aFrame as object )
dim frame
dim window
dim handle
window = aframe.getContainerWindow()
handle = window.getWindowHandle(dimarray(), 1)
REM 1=WIN32
ShowWindow( handle, 3 )
end sub
A macro "sub onWhenLoading" deve ser linckada ao evento "durante o carregamento" do forms.
terça-feira, 21 de setembro de 2010
Abrir forms ao abrir um documento do Base do OpenOffice
Esta é uma questão que tenho visto posta em vários foruns e que, portanto, interessará a muitos dos actuais ou futuros utilizadores do Open Office.
Realmente , é normal que depois de atingirmos um determinado nível de programação com o Open Office sejamos nós a desenvolver as aplicações e outros a utilizá-las e não tem nenhum cabimento que, ao abrir uma aplicação, o utilizador seja atirado para o modo de desenho e ter que trabalhar a partir daí.
Aqui chegados, vamos então à forma que costumo utilizar para conseguir este objectivo:
Crio um formulário com os diversos botões que me permitam aceder (atraves de macros, assunto tratado no artigo “Macros para o Base-Open Office”) aos outros formulários ou relatórios
Crio uma macro que associo à abertura do documento e faço abrir o formulário referido no ponto 1
Para criar a macro siga os passos indicados em “Macro para fechar o Openoffice” e crie a seguinte macro:
Sub AutoExec
On Error Goto HandleError
Dim LastFrame As Object
Dim NumFrames As Integer
Static FormDocs As Object
Dim DBDoc As Object
Dim ImpName As String
Dim DataSource As Object
Dim Conn As Object
Dim Args(1) As New com.sun.star.beans.PropertyValue
Dim FormName As String
Dim FormDoc As Object
FormName="fMENU" 'Mude aqui para o Forms de Abertura da Aplicação
ImpName="com.sun.star.comp.dba.ODatabaseDocument"
NumFrames=StarDesktop.Frames.Count
LastFrame=StarDesktop.Frames.getByIndex(NumFrames-1)
If LastFrame.Frames.Count>1 Then
Exit Sub
End If
If Not (LastFrame.Controller.Model.ImplementationName=ImpName) Then
Exit Sub REM not a db doc
End If
DataSource=LastFrame.Controller.DataSource
DBDoc=DataSource.DatabaseDocument
FormDocs=DBDoc.FormDocuments
Conn=DataSource.getConnection("","") REM no user/password
Args(0).Name="ActiveConnection" : Args(0).Value=Conn
if FormDocs.hasByName(FormName) Then
FormDoc=FormDocs.loadComponentFromURL(FormName,"_self",2,Args() )
FormDoc.CurrentController.Frame.ContainerWindow.setFocus()
End If
HandleError:
If Err<>0 Then
Exit Sub
End If
End Sub
Preferimos criar esta macro numa biblioteca a um nível superior pois a mesma irá servir, no futuro, para todas as aplicações criadas no Open Office (se quisermos utilizá-la numa outra máquina podemos sempre exportá-la como ocx) mas a mesma pode ser criada no módulo da aplicação (isso foi testado).
Com a macro criada, abrimos o documento do base onde queremos que a mesma seja utilizada e:
Vamos a Ferramentas → Personalizar e escolhemos o separador Eventos
Escolhemos o evento “Abrir Documento” e em “Atribuir” escolhemos a “Macro” que criámos.
Et Voilá.