[Base] Access2Base - Last version: 6.3

Discussions about using 3rd party extension with OpenOffice.org

Re: [Base] Access2Base - Last version: 6.3

Postby JPL » Wed Nov 20, 2019 10:47 am

@gelinp

I never experienced myself the need of coordinating the events in a form or in controls with semaphors or similar.

If your own experience is different, you should file a bug in https://bugs.documentfoundation.org/ with a good example of misbehaviour of the events queues.

Regards.
JPL
Kubuntu 20.04 / LibO 7.0
Access2Base (LibO).
BaseDocumenter extension (LibO)
Documentation on http://www.access2base.com and http://www.access2base.com/basedocumenter
JPL
Volunteer
 
Posts: 113
Joined: Fri Mar 30, 2012 3:14 pm

Re: [Base] Access2Base - Last version: 6.3

Postby Villeroy » Wed Nov 20, 2019 11:12 pm

My mouse events are triggered twice with LibreOffice 6.3 but not with LibreOffice 6.2.
My routine starts like this:
Code: Select all   Expand viewCollapse view
Sub onMouseRelease(e)
If e.Buttons = 1 and e.ClickCount = 2 and e.Modifiers = 0 and e.PopupTrigger = False then
msgbox "Yep"

This is called twice with every double-click on a table control. The actual code in place of the msgbox inserts a value from the table control into another table so the table control behaves like a multi-column list box.

Now I try this:
Code: Select all   Expand viewCollapse view
Sub onMouseRelease(e)
Static X As Integer
If X=0 and e.Buttons = 1 and e.ClickCount = 2 and e.Modifiers = 0 and e.PopupTrigger = False then
X=X+1
msgbox X

The msgbox is called only once but if the actual code performs a record insertion, the X variable is reset and 2 records are inserted instead of one.
Then I tried the same trick with a global X which raised very irritating errors about form objects that could not be found anymore. I changed nothing else, just replaced the static X with a global integer X.
I downgraded my database clients to LO 6.2. When I find some hour or two I'll set up a simple test case with embedded HSQL for a detailed bug report.
Please, edit this topic's initial post and add "[Solved]" to the subject line if your problem has been solved.
Ubuntu 18.04, no OpenOffice, LibreOffice 6.4
User avatar
Villeroy
Volunteer
 
Posts: 29139
Joined: Mon Oct 08, 2007 1:35 am
Location: Germany

Re: [Base] Access2Base - Last version: 6.3

Postby Villeroy » Sat Nov 23, 2019 11:20 pm

Possibly I'm off topic here but the bug is real: https://bugs.documentfoundation.org/sho ... ?id=128988
Please move to the Base forum.
Please, edit this topic's initial post and add "[Solved]" to the subject line if your problem has been solved.
Ubuntu 18.04, no OpenOffice, LibreOffice 6.4
User avatar
Villeroy
Volunteer
 
Posts: 29139
Joined: Mon Oct 08, 2007 1:35 am
Location: Germany

Re: [Base] Access2Base - Last version: 6.3

Postby DonaldS » Wed Jan 01, 2020 11:54 pm

With "TT NorthWind.odb" & "TT NorthWind StandAlone.odt" both open, if I click "Start" in "TT NorthWind StandAlone.odt" I get-

Error #91 (Object variable not set) occurred at line 504 in Form.Controls

line 504 has-
iCount = FormsCollection.Count

This error seems to be because FormsCollection has not been initialised when the A2B code is called from "TT NorthWind StandAlone.odt" macro code.

Similar code seems to work from the calculator form (and Dialog) from "TT NorthWind.odb"
How can I fix this or what is the problem?

Using-
Manjaro Linux
KDE
LO Version: 6.4.0.0.beta1

thanks Donald
OOo 3.0.X on Linux-Other
DonaldS
 
Posts: 6
Joined: Tue Apr 21, 2009 1:09 am

Re: [Base] Access2Base - Last version: 6.3

Postby JPL » Mon Jan 06, 2020 4:12 pm

@DonaldS,

the good news is that I could reproduce the problem.
The bad news is that the functionality of calling Access2Base from a standalone form seems broken at this moment and that I need some time to repair it.

Thanks for your feedback and for your patience.

JPL
Kubuntu 20.04 / LibO 7.0
Access2Base (LibO).
BaseDocumenter extension (LibO)
Documentation on http://www.access2base.com and http://www.access2base.com/basedocumenter
JPL
Volunteer
 
Posts: 113
Joined: Fri Mar 30, 2012 3:14 pm

Re: [Base] Access2Base - Last version: 6.3

Postby gelinp » Sat Nov 07, 2020 9:46 am

Hi,

I'm with Access2Base 6.4.0 and LibreOffice 6.4.6.2 With Linux. I'm using Access2Base shortcuts with an formula into my Base application (not standalone formula).

Code: Select all   Expand viewCollapse view
My formula structure is giving into piece attachment :
FORM_CATALOGUEDOCUMENTAIRES
    + Mainform
         + SubFormPlanClassement


So the problem is that I can't use Shortcut, without errors ...

I've got shortcut context to see it and call it by even like that I get error ! With tutorial I tried getObject like this:
Code: Select all   Expand viewCollapse view
v = Application.getObject("Forms!Mainform!SubFormPlanClassement")

but it's same error ...

Note that when I open a new formula there is no "Mainform" registered into structure, it's totally empty ... So Mainform is added by me, but I'm wondering if it is well registered ...

See uploaded files :
* one fiel for error message
* the other about formula structure

It's not easy to give you the file because database is extern HSQLDB server ...
thank for your help.
Patrick
Attachments
Capture du 2020-11-07 08-37-36.png
Error message
Capture du 2020-11-07 08-20-33.png
Formula structure...
Libreoffice 6.4.6.2, Kernel: 5.4.0-52-generic x86_64 bits: 64
Desktop: Cinnamon 4.4.8 Distro: Linux Mint 19.3 Tricia
gelinp
 
Posts: 29
Joined: Mon Oct 09, 2017 9:27 pm

Re: [Base] Access2Base - Last version: 6.3

Postby JPL » Sat Nov 07, 2020 11:09 am

Hi,

Only a guess:
in
Code: Select all   Expand viewCollapse view
v = Application.getObject("Forms!Mainform!SubFormPlanClassement")

the name of the form seems missing.
I would rather expect something like
Code: Select all   Expand viewCollapse view
v = Application.getObject("Forms!theformname!Mainform!SubFormPlanClassement")


JPL
Kubuntu 20.04 / LibO 7.0
Access2Base (LibO).
BaseDocumenter extension (LibO)
Documentation on http://www.access2base.com and http://www.access2base.com/basedocumenter
JPL
Volunteer
 
Posts: 113
Joined: Fri Mar 30, 2012 3:14 pm

Re: [Base] Access2Base - Last version: 6.3

Postby gelinp » Sat Nov 07, 2020 2:13 pm

Hi,
Thank you for your response. I tried again with absolute path and MainForm Parent's name like this :

v = Application.getObject("Forms!CATALOGUEDOCUMENTAIRES!Mainform")

But the problem is same ... I tried to play with case : MainForm, mainform... but problem is the same ...

I thing problem will come because new main form is created without Mainform and I added it by hand... It's not standalone form, and database connection is active. There is no sections, it's only subforms and grids cascade...

Patrick
Attachments
Capture du 2020-11-07 13-04-21.png
New try with error message
Libreoffice 6.4.6.2, Kernel: 5.4.0-52-generic x86_64 bits: 64
Desktop: Cinnamon 4.4.8 Distro: Linux Mint 19.3 Tricia
gelinp
 
Posts: 29
Joined: Mon Oct 09, 2017 9:27 pm

Re: [Base] Access2Base - Last version: 6.3

Postby JPL » Sat Nov 07, 2020 3:52 pm

Ooops, I was wrong.

"MainForm" should be left out.
Code: Select all   Expand viewCollapse view
v = Application.getObject("Forms!CATALOGUEDOCUMENTAIRES!SubFormPlanClassement")

should do the job if CATALOGUEDOCUMENTAIRES is the name of the form and SubFormPlanClassement one of its controls.

Read http://www.access2base.com/access2base.html#%5B%5BShortCut%20Notation%5D%5D
and http://www.access2base.com/access2base.html#ShortcutNotationMore.

JPL
Kubuntu 20.04 / LibO 7.0
Access2Base (LibO).
BaseDocumenter extension (LibO)
Documentation on http://www.access2base.com and http://www.access2base.com/basedocumenter
JPL
Volunteer
 
Posts: 113
Joined: Fri Mar 30, 2012 3:14 pm

Re: [Base] Access2Base - Last version: 6.3

Postby gelinp » Thu Nov 26, 2020 7:19 pm

Thanks, it's OK :-)

Now I've got an other problem accessing a form at same base level that 'MainForm', a parallel Form... I tested With sample which screen capture attached in file. The second Base Form is 'SubFormFiltre'. So the error is below :

Code: Select all   Expand viewCollapse view
Application.getObject("Forms!FORM_TACHES_A_FAIRE!SubFormFiltre.Form!CTRL_PERIODES") >> Error, Access2Base can't find SubFormFiltre, because it look for a suib form of MainForm...


I'll need something like ..\relativePathtoSomething :

Code: Select all   Expand viewCollapse view
Application.getObject("Forms!FORM_TACHES_A_FAIRE!..!SubFormFiltre.Form!CTRL_PERIODES") >> I need a go up one level up to MainForm before to down to SubFormFilter...


Using a Second Form like "MainForm" is a good practice for Navigation or Filter. It's not a hierarchical dependency. Also a base form look's like independent Form and content is not refresh cascading from MainForm. If I put a ListBox in 'SubFormFilter' without table but only Value List Content, Then if I put Document into icon and I restore it, the ListBox content is empty If it's a subform of Mainform, but it's OK if it is a 'independent Form'.

Thank you for your help
Patrick
Attachments
Capture du 2020-11-26 18-14-51.png
Libreoffice 6.4.6.2, Kernel: 5.4.0-52-generic x86_64 bits: 64
Desktop: Cinnamon 4.4.8 Distro: Linux Mint 19.3 Tricia
gelinp
 
Posts: 29
Joined: Mon Oct 09, 2017 9:27 pm

Re: [Base] Access2Base - Last version: 6.3

Postby JPL » Fri Nov 27, 2020 11:59 am

I'm afraid that the described configuration of forms/subforms cannot be handled with the shortcut notation (which is an MSAccess concept ...).

BTW, when a subform is not related to a table and contains a listbox with hard values, I don't see why the listbox should not be initialized with what you expect ??

Regards.
JPL
Kubuntu 20.04 / LibO 7.0
Access2Base (LibO).
BaseDocumenter extension (LibO)
Documentation on http://www.access2base.com and http://www.access2base.com/basedocumenter
JPL
Volunteer
 
Posts: 113
Joined: Fri Mar 30, 2012 3:14 pm

Re: [Base] Access2Base - Last version: 6.3

Postby gelinp » Fri Nov 27, 2020 5:51 pm

Ok. Thank you for your response.

About my listbox in Subform not related to a table, it is well initialised, but it's a refresh problem, when I put windows as icon and go back to original size. Problem is coming only if this subform as a parent Form with database source. I think that Parent Form refresh and then cascade refresh event-s to all subforms. And I think that problem will be that subform looks for master-s field-s values to synchronise with parent form, but slaves fields are empties, because subform doesn't use a table source ... Because refresh procedure will be a data source without any table it will miss refresh procedure, or something like that... But I tested same subform at first level (like mainform), without any more refresh problems... Best pracrtices recomand to use a navigation form at same Mainform level, then synchronize Mainform with item selected into Navigation form. So I could retrieve old basic source code I writed already to do the job to find all first levels forms ...

Thank you.
Patrick
Libreoffice 6.4.6.2, Kernel: 5.4.0-52-generic x86_64 bits: 64
Desktop: Cinnamon 4.4.8 Distro: Linux Mint 19.3 Tricia
gelinp
 
Posts: 29
Joined: Mon Oct 09, 2017 9:27 pm

Re: [Base] Access2Base - Last version: 6.3

Postby Villeroy » Fri Nov 27, 2020 7:34 pm

[Base, Python] Tiny Macro Refreshing Forms, List/Combo Boxes refreshes anything refreshable on any (sub/parent) form when some record has been updated, deleted or inserted. Just install (one click) and create a list of refreshables in a hidden control named "AutoRefresh" and assign the "record modified" event.
Please, edit this topic's initial post and add "[Solved]" to the subject line if your problem has been solved.
Ubuntu 18.04, no OpenOffice, LibreOffice 6.4
User avatar
Villeroy
Volunteer
 
Posts: 29139
Joined: Mon Oct 08, 2007 1:35 am
Location: Germany

Re: [Base] Access2Base - Last version: 6.3

Postby Raggy » Tue Dec 22, 2020 11:14 pm

Hi,
I try the Dlookup function in a database under Firebird.
This involves retrieving the name of an interpreter based on the id of a recording.
I receive in return the following message (in french at home):
Error # 1510 (DFunction execution failed, SQL = SELECT TOP 1 "Nom interprete" AS "TEMP83032" FROM "req_liste_par_inter_princ" WHERE "RefEnregistrement" = '364') occurred in DLookup

A search tells me that this message would correspond to a bug (bug 118767) ... but it has been fixed since 6.2.0... Moreover, this bug only affected the Firebird version; however, a test with HSQLDB gives me the same result. It is therefore surely something else… but I cannot find a solution. What's wrong ?
Thanks for your help !
I specify that I use 6.4.7.2, and Firebird Engine 12.
LibreOffice 6.4.7.2 / Ubuntu 18.04.5 LTS
Raggy
 
Posts: 3
Joined: Mon Dec 21, 2020 11:36 pm

Re: [Base] Access2Base - DLookup

Postby JPL » Wed Dec 23, 2020 1:33 pm

Hi Raggy,

my suggestion to diagnose the issue further is:

1. In the mentioned bug, follow the instructions to reproduce the bug. There is a test file available.

2. If you can reproduce the bug as described, please tell it below in this forum
or
2. If you cannot reproduce it, it is probably something new. Open then a new bug in bugzilla and put me in the CC List
Note, however, that, if the bug is confirmed, I will probably not be able to correctit in LO 6.4 because I doubt there will be an additional release in 6.4 after 6.4.7.2: the 7.1 version is coming soon and the 7.0 will become the next stable release.

Regards.
JPL
Kubuntu 20.04 / LibO 7.0
Access2Base (LibO).
BaseDocumenter extension (LibO)
Documentation on http://www.access2base.com and http://www.access2base.com/basedocumenter
JPL
Volunteer
 
Posts: 113
Joined: Fri Mar 30, 2012 3:14 pm

Re: [Base] Access2Base - Last version: 6.3

Postby Raggy » Wed Dec 23, 2020 11:30 pm

Thank you JLP for responding so quickly.
I tested the FB Northwind.odb database by following the instructions. I confirm the error message: I reproduce the bug.
Thanks for your help.
LibreOffice 6.4.7.2 / Ubuntu 18.04.5 LTS
Raggy
 
Posts: 3
Joined: Mon Dec 21, 2020 11:36 pm

Re: [Base] Access2Base - Last version: 6.3

Postby JPL » Thu Dec 24, 2020 3:36 pm

@Raggy,

I reopened bug https://bugs.documentfoundation.org/sho ... ?id=118767
You can read there my comment at the bottom.

I prepared a patch for LO 7.0: see https://gerrit.libreoffice.org/c/core/+/108185

In the coming days the patch will be submitted for availability with LO 7.0.5. However LO 7.0.5 will not be released before march 2021 (read https://wiki.documentfoundation.org/ReleasePlan/7.0).
In the meantime, you could eventually apply with a text editor the same correction as what I did myself: change line 1168 (in 6.4, 1170 in 7.0) in ($Install)/share/basic/Access2Base/Database.xba
from
Code: Select all   Expand viewCollapse view
      Case "FIREBIRD"
to
Code: Select all   Expand viewCollapse view
      Case "FIREBIRD", "FIREBIRD (ENGINE12)"

Regards.
JPL
Kubuntu 20.04 / LibO 7.0
Access2Base (LibO).
BaseDocumenter extension (LibO)
Documentation on http://www.access2base.com and http://www.access2base.com/basedocumenter
JPL
Volunteer
 
Posts: 113
Joined: Fri Mar 30, 2012 3:14 pm

Re: [Base] Access2Base - Last version: 6.3

Postby Raggy » Thu Dec 24, 2020 5:40 pm

@JPL
Thank you very much for taking the time to respond to me.
I modified the database.xba as indicated.
With the Northwind test base, I no longer reproduce the error!
But for my own database, the error message is still displayed, with "SELECT FIRST1" instead of "SELECT TOP1" ...
So I imagine the problem is with me, not with the DLookup function in Firebird...
Regards,
Raggy
LibreOffice 6.4.7.2 / Ubuntu 18.04.5 LTS
Raggy
 
Posts: 3
Joined: Mon Dec 21, 2020 11:36 pm

Re: [Base] Access2Base - Last version: 6.3

Postby gelinp » Thu Dec 31, 2020 4:53 pm

Hi,

How to catch Uno DialogBox opend with createDialogWithHandler Uno interface ?

What I attempt is to load ""DlgFondsDesNotices"" dialog box opend with Uno createDialogWithHandler interface, then to access it with Access2BAse API getObject or AllDialogs, but Access2BAse can't find the Dialog box loaded ... And A2B Dialog UnoDialog property is readonly, so I can't use it has copy constructor ... So is it possible to Access a dialog box loaded with Uno ApI ? Or to had createDialogWithHandler has an other way to load Dialogs into Access2Base ?

Thank you For your Help...
Patrick

See my code below, there is 2 tries to focus on :

First try show all dialog box closed, particularlyh the dialog box "DlgFondsDesNotices" I hoped to find open , but nothing is loaded ...
Code: Select all   Expand viewCollapse view
For i =0 to Application.AllDialogs().count-1
   content = content & ";" & Application.AllDialogs(i).Name &  " >> " & Application.AllDialogs(i).IsLoaded & CHR(10)
Next i
MsgBox content


Second try attempt to find "DlgFondsDesNotices" but get error message : unavailable arg n°1 "DlgFondsDesNotices".
Code: Select all   Expand viewCollapse view
Set oDlg = Application.getObject("Dialogs!DlgFondsDesNotices")


All my module (Withour UIDialogs and Dialog to test) :
Code: Select all   Expand viewCollapse view
REM  *****  BASIC  *****

'-----------------------------------------------------------------------------
Sub DlgFondsDesNotices_Show()

    Dim dp as Object ' com.sun.star.awt.DialogProvider2
    Dim dialog As Object ' com.sun.star.awt.XDialog, com.sun.star.awt.XDialogEventHandler
    Dim eventHandler As Object ' com.sun.star.awt.XDialogEventHandler
   
    dp = CreateUnoService("com.sun.star.awt.DialogProvider2")
    dp.Initialize(Array(ThisComponent)) ' si intégrée au document
    eventHandler = CreateUnoListener("HandlerDlgFondsDesNotices_", "com.sun.star.awt.XDialogEventHandler")
    dialog = dp.createDialogWithHandler("vnd.sun.star.script:UIDialogs.DlgFondsDesNotices?location=document", eventHandler)
    dialog.Title = "Fonds des notices"
    'dialog.Start
       _InitDefaultContent()
       dialog.execute()
   
    'Dialog.Terminate
End Sub

'-----------------------------------------------------------------------------
Function HandlerDlgFondsDesNotices_callHandlerMethod(dialog as Object, _
        event As com.sun.star.document.DocumentEvent, _
        method As String) As Boolean
       
    ''' Intercept dialog events using .UNO protocol '''
    DlgFondsNotices_callHandlerMethod = True
    Select Case method
        Case "_UpdateList"
           
        Case "_openHelp"
            MsgBox "Not yet implemented",0 , "Howdy"
            'dialog.endDialog(1) if computer-based dialog
        Case Else : DlgFondsNotices_callHandlerMethod = False
    End Select
End Function ' <Handler>.DlgFondsDesNotices_callHandlerMethod

'-----------------------------------------------------------------------------
Function HandlerDlgFondsDesNotices_getSupportedMethodNames()
    DlgFondsNotices_getSupportedMethodNames = Array("_UpdateList", "_openHelp")
End Function ' <Handler>.DlgFondsDesNotices _getSupportedMethodNames

'-----------------------------------------------------------------------------
Sub _InitDefaultContent()
   Dim ocList As Object
   Dim orsRecords As Object
   Dim content As string
   Dim SEP As String
   Dim oDlg As Object
   Dim v As Variant
   Dim i As Integer
   
   For i =0 to Application.AllDialogs().count-1
      content = content & ";" & Application.AllDialogs(i).Name &  " >> " & Application.AllDialogs(i).IsLoaded & CHR(10)
   Next i
   
   MsgBox content
   
   Set oDlg = Application.getObject("Dialogs!UIDialogs.DlgFondsDesNotices")
   Set ocList = oDlg.Controls("ListTypeFonds")
   SEP = ""
   
   Set orsRecords = Application.CurrentDb().OpenRecordset("SELECT [CATEGORIE], [ID] FROM [AUTLESCATEGORIES] WHERE [SERIE] = 'TYPEFONDS' ORDER BY [CATEGORIE] ASC", , , dbReadOnly)
   With orsRecords
      If Not .BOF Then      '   An empty recordset has both .BOF and .EOF set to True
         Do While Not .EOF
            content = content & SEP & orsRecords.Fields("CATEGORIE").value
            SEP = ";"
            .MoveNext
         Loop
      End If
      .mClose()
   End With
   
   ocList.RowSource = content
   ocList.ListIndex = 0
End Sub
Libreoffice 6.4.6.2, Kernel: 5.4.0-52-generic x86_64 bits: 64
Desktop: Cinnamon 4.4.8 Distro: Linux Mint 19.3 Tricia
gelinp
 
Posts: 29
Joined: Mon Oct 09, 2017 9:27 pm

Re: [Base] Access2Base - Last version: 6.3

Postby JPL » Thu Dec 31, 2020 5:44 pm

@gelinp,

a dialog box is always started by some code, either with UNO or via the Access2Base library.

If you open it with A2B, you can use the provided properties and methods (incl. "Controls") or access its UNO interface with UnoDialog.
If you open it with UNO directly, you have to stay with UNO for the whole lifetime of the dialog.

JPL
Kubuntu 20.04 / LibO 7.0
Access2Base (LibO).
BaseDocumenter extension (LibO)
Documentation on http://www.access2base.com and http://www.access2base.com/basedocumenter
JPL
Volunteer
 
Posts: 113
Joined: Fri Mar 30, 2012 3:14 pm

Previous

Return to Extensions

Who is online

Users browsing this forum: No registered users and 1 guest