Access2Base/README | 10 + Access2Base/index.html | 373 +++++++++++++++++++++++-------------------------- 2 files changed, 189 insertions(+), 194 deletions(-)
New commits: commit b8c78f5c815bbcece65e38fd6e6c9741a7feeec0 Author: JP Ledure <[email protected]> AuthorDate: Tue May 5 15:44:09 2026 -0300 Commit: Olivier Hallot <[email protected]> CommitDate: Tue May 5 23:08:26 2026 +0200 Access2Base relocation on access2base.libreoffice.org Remove references to - access2base.com replaced by access2base.libreoffice.org - BaseDocumenter this extension is found on the extensions site. Does not fit here. Help and its image files are removed. - OpenOffice and AOO nobody knows how Access2Base behaves with OpenOffice. - Access2Base as an extension comments in help and oxt file are removed. To make the site 100% operational, all files present in the directory dev-tools/Access2Base must be accessible from the web. Otherwise images and frame contents may malfunction. Change-Id: I4e393c5fc8f5100174a3b8cc4dfde02bdc35855a Reviewed-on: https://gerrit.libreoffice.org/c/dev-tools/+/204834 Tested-by: Olivier Hallot <[email protected]> Reviewed-by: Olivier Hallot <[email protected]> diff --git a/Access2Base/README b/Access2Base/README index b2c2b327..479dad68 100644 --- a/Access2Base/README +++ b/Access2Base/README @@ -13,3 +13,13 @@ 08:56:53 AM - cloph: perfect. 09:00:26 AM - ohallot: guilhem: JP Ledure told me the project is stable since a decade. I can add a REDAME in the repo with your comment 09:01:43 AM - guilhem: alright + + +Files for production website +---------------------------- +README +_howtos +_outputto +_wikiimages +index.html + diff --git a/Access2Base/index.html b/Access2Base/index.html index 5304ea3d..299c5678 100644 --- a/Access2Base/index.html +++ b/Access2Base/index.html @@ -576,7 +576,7 @@ See also [[Design a generic DMedian function|DMedian function]]</pre> <div title="Access2Base" modifier="YourName" created="201112251405" modified="201203161136" tags="NoTag"> <pre><<tiddler "Home">></pre> </div> -<div title="Access2Base and Python" creator="YourName" modifier="YourName" created="201907221041" modified="201911171539" tags="NoTag" changecount="123"> +<div title="Access2Base and Python" creator="YourName" modifier="YourName" created="201907221041" modified="202605031512" tags="NoTag" changecount="125"> <pre>!Working with Python scripts in ~LibreOffice If your intent to program Python scripts for ~LibreOffice is very recent, to know how to start, ... read first: >''[[LibreOffice Python Scripts Help|https://help.libreoffice.org/6.3/en-US/text/sbasic/python/main0000.html]]'' on the //~LibreOffice Help wiki//. @@ -657,12 +657,12 @@ Above statement has the effect to ''import next variables'' in your own environm |XSCRIPTCONTEXT |Reference to 'uno' module.<br />Cfr. the [[XScriptContext Interface Reference|https://api.libreoffice.org/docs/idl/ref/interfacecom_1_1sun_1_1star_1_1script_1_1provider_1_1XScriptContext.html]]|>| |COMPONENTCONTEXT |The context manager (dependent on Python process in- or outside ~LibreOffice).<br />The result of {{{XSCRIPTCONTEXT.getComponentContext()}}} in the usual interactive mode | |DESKTOP |The desktop manager.<br />The result of {{{XSCRIPTCONTEXT.getDesktop()}}} in the usual interactive mode, {{{None}}} otherwise.| -|SCRIPTPROVIDER |To run external scripts, use {{{SCRIPTPROVIDER.getScript(...).invoke((args,), (), ())}}}.<br />More info on [[Scripting Framework URI Specification|https://wiki.openoffice.org/wiki/Documentation/DevGuide/Scripting/Scripting_Framework_URI_Specification]]. | +|SCRIPTPROVIDER |To run external scripts, use {{{SCRIPTPROVIDER.getScript(...).invoke((args,), (), ())}}}.<br />More info on [[Scripting Framework URI Specification|https://wiki.documentfoundation.org/Documentation/DevGuide/Scripting_Framework#Scripting_Framework_URI_Specification]]. | |THISDATABASEDOCUMENT |Equivalent to ~ThisDatabaseDocument in Basic ({{{None}}} if Python outside ~LibreOffice).<br />It is available after the execution of the [[Application.OpenConnection()|OpenConnection]] method | |~A2BConnect |Function establishing the connection between the Python and the ~LibreOffice processes.<br />To be used only when Python is run in a separate process: {{{A2BConnect(hostname='localhost', port = ####)}}} | |Basic |A helper class gathering a collection of functions (like {{{MsgBox, InputBox, ... }}}) having an identical behaviour as their Basic counterparts | |acConstants |The list of all the symbolic constants used in the ~Access2Base API and their value.<br />E.g. {{{acConstants.acTable}}} | -|[[Application]] |Cass for all methods stored in Basic in their respective modules | +|[[Application]] |Class for all methods stored in Basic in their respective modules | |[[DoCmd]] |~| |[[DebugPrint]]() |Direct calls to the Basic counterparts of the [[error handling|Error Handler]] routines | |[[TraceConsole]]() |~| @@ -752,8 +752,8 @@ The error messages exist in english only. |~AttributeError |type object 'FORM' has no attribute '~IsLoaoded' | |~AttributeError |type object 'FORM' has no editable attribute '~IsLoaded' |</pre> </div> -<div title="Access2Base vs. VBA" modifier="YourName" created="201106251419" modified="201906170810" tags="[[Snippets of Code]]" changecount="10"> -<pre>~LibreOffice/~OpenOffice Base with ~Access2Base +<div title="Access2Base vs. VBA" modifier="YourName" created="201106251419" modified="202605031516" tags="[[Snippets of Code]]" changecount="11"> +<pre>~LibreOffice Base with ~Access2Base * ''BASIC'' //{{{ REM Open a form ... @@ -1143,7 +1143,7 @@ Dim ofForm As Object Basic.MsgBox(ofForm.Name) //}}}</pre> </div> -<div title="AllModules" creator="Jean-Pierre Ledure" modifier="Jean-Pierre Ledure" created="201612181139" modified="201612181346" tags="Collections" changecount="11"> +<div title="AllModules" creator="Jean-Pierre Ledure" modifier="YourName" created="201612181139" modified="202605031519" tags="Collections" changecount="12"> <pre>The //~AllModules// collection describes instances of all [[modules|Module]] present in the currently loaded Basic libraries. <<tiddler "ApplyApplication">> !!!Syntax @@ -1152,7 +1152,7 @@ Dim ofForm As Object {{{[Application.]AllModules(modulename)}}} | !Argument #1 | !Type |!Returned value | || absent |A [[Collection]] object | -| index | integer<br>long |A [[Module]] object corresponding to the index-th item in the ~AllModules() collection. The 1st module is ~AlModules(0), the 2nd is ~AllModules(1) and so on ... The last one is ~AllModules.Count - 1.| +| index | integer<br>long |A [[Module]] object corresponding to the index-th item in the ~AllModules() collection. The 1st module is ~AllModules(0), the 2nd is ~AllModules(1) and so on ... The last one is ~AllModules.Count - 1.| | modulename | string |A [[Module]] object having the argument as name. The argument is NOT case-sensitive.| !!!Remarks *//~Access2Base// will scan first the modules present in the current Base document (".odb" file) or current non-Base document containing one or more [[standalone forms|Standalone Forms]] (".odt", ".ods", ... file) and continue the search thru all currently loaded libraries. __The //~Access2Base// library itself however will be skipped__. @@ -1164,7 +1164,7 @@ To manage potential homonyms among libraries, the ''name'' of a module consists //}}} , the first two being optional. *The //SCOPE// is either -**''{{{GLOBAL}}}'' grouping both the ''~LibreOffice/~OpenOffice Macros and Dialogs'' and the ''My Macros and Dialogs'' catalogs of libraries. +**''{{{GLOBAL}}}'' grouping both the ''~LibreOffice Macros and Dialogs'' and the ''My Macros and Dialogs'' catalogs of libraries. **''{{{DOCUMENT}}}'' grouping the libraries stored in the current document. __This is the default__. *The //LIBRARY// component is the name of the library. __The default is "''Standard''"__. As such, @@ -1304,7 +1304,7 @@ Dim ofForm As Object !!!Example <<tiddler "Chunk example">></pre> </div> -<div title="Application" modifier="YourName" created="201301111725" modified="201910081403" tags="Objects" changecount="16"> +<div title="Application" modifier="YourName" created="201301111725" modified="202605031525" tags="Objects" changecount="18"> <pre>{{firstletter{ @@color:#930;T@@ }}}he //Application// class is the root class from which the initial [[collections|Collection]] are derived. @@ -1339,14 +1339,14 @@ and |[[Events]] |Returns the currently running [[event|Event]] as an object. | |[[Forms]] |Collection of open forms. | |[[OpenDatabase]] |Returns a [[database|Database]] object giving access to the data stored in that database. | -|[[TempVars]] |Collection of temporary variables available thru the whole ~LibreOffice/~OpenOffice session. | +|[[TempVars]] |Collection of temporary variables available thru the whole ~LibreOffice session. | !!Properties | !Property | !Type | !Description | |[[CurrentUser]] | String |The logon name of the current user. | |[[DAvg]]<br />[[DCount]]<br />[[DLookup]]<br />[[DMin, DMax]]<br />[[DStDev, DStDevP]]<br />[[DSum]]<br />[[DVar, DVarP]] | Any |The database functions. | |[[HtmlEncode]] | String |Returns an Html encoded string. | |[[ProductCode]] | String |Returns "~Access2Base x.y.z" where x.y.z equals the version number of the library. | -|[[Version]] | String |Returns "~LibreOffice x.y.z" or "~OpenOffice x.y.z" where x.y.z is the version number. | +|[[Version]] | String |Returns "~LibreOffice x.y.z" where x.y.z is the version number. | !!Methods |[[OpenConnection]] |To be run to connect the application to the database. | |[[CloseConnection]] |To be run to disconnect the application from the database. | @@ -1365,7 +1365,7 @@ and | !Object | !Description | |[[DoCmd]] |Root class. When present, its name must be "{{{DoCmd}}}". The object name is optional in BASIC but mandatory in PYTHON. |</pre> </div> -<div title="ApplyFilter" creator="Jean-Pierre Ledure" modifier="Jean-Pierre Ledure" created="201410261037" modified="201412301558" tags="Actions" changecount="25"> +<div title="ApplyFilter" creator="Jean-Pierre Ledure" modifier="YourName" created="201410261037" modified="202605041450" tags="Actions" changecount="27"> <pre>{{firstletter{ @@color:#930;U@@ }}}se the //~ApplyFilter// action to apply a filter, a query, or an SQL WHERE clause to a table, form, subform or query to restrict the records in the table or query, or the records from the underlying table or query of the form/subform. @@ -1379,11 +1379,10 @@ and !!!Remarks *The //~ApplyFilter// action must not be called from a [[standalone form|Standalone Forms]]. *The //~ApplyFilter// action is applied on the current window. To make a window current, use the [[SelectObject]] action. If the current window is neither a form, a table datasheet or a query datasheet, the //~ApplyFilter// action return {{{False}}} and ignores the request. -*The //~ApplyFilter// action, when applied to a table or a query datasheet, __does NOT work in //~OpenOffice//__ (//~LibreOffice// OK). *To apply a filter on a table or a query with //~ApplyFilter//, the table or the query must be open. Eventually use therefore the [[OpenTable]] or [[OpenQuery]] actions. *If //controlname// is present, the active window is expected to be a form. Otherwise //~ApplyFilter// refurns {{{False}}} and the request is ignored. The //controlname// is NOT case-sensitive. If //controlname// does not exist in the active form or is not the name of one of its [[subforms|SubForm]] then the action generates a run-time error. *When a filter is applied with //~ApplyFilter// the first record (if it exists ...) becomes the current record. -*Once applied, the filter is preserved for subsequent table or query openings during the same //~LibreOffice/~OpenOffice// session. It will become persistent when the database file ("*.odb") is saved. +*Once applied, the filter is preserved for subsequent table or query openings during the same //~LibreOffice// session. It will become persistent when the database file ("*.odb") is saved. *In the filter argument, record and field names may be surrounded by square brackets. They will be replaced with the correct character surrounding such names in SQL statements targeted to be run on the concerned RDBMS (Relational Database Management System). *Giving the null-length string ("") as filter argument resets any pre-existing filter. !!!Error messages @@ -1420,12 +1419,12 @@ Const cstQueryName = "myQuery" DoCmd.ApplyFilter(sApplyFilter) //}}}</pre> </div> -<div title="AskBeforeSaving" modifier="Jean-PierreLedure" created="201212231635" modified="201308161222" tags="HowTo"> +<div title="AskBeforeSaving" modifier="YourName" created="201212231635" modified="202605041541" tags="HowTo" changecount="1"> <pre>(Q) How can I control when a record is saved in a form ? (R) Use the form's //Before record change// event to run code each time Base tries to save a record. This way, if the user doesn't want to save a record, you can issue an Undo command instead of saving the record. -For strange reasons the //Before record change// form event is fired twice by //AAO/~LibO// while in most cases one occurrence would be sufficient. That's where the //Recommendation// property becomes useful. +For strange reasons the //Before record change// form event is fired twice by //~LibreOffice// while in most cases one occurrence would be sufficient. That's where the //Recommendation// property becomes useful. Read [[Roberto Benitez's Forms and Dialogs document|http://www.baseprogramming.com/FormsAndDialogs.pdf]] about this strange behaviour (p. 20+). !!!Solution @@ -2419,10 +2418,10 @@ The //~BackColor// property can be set at [[grid control|GridControl]] level, no [[CommandBarControl]] </pre> </div> -<div title="BookMarkTiddler" modifier="Jean-Pierre Ledure" created="201212311155" modified="201407130938" tags="excludeLists" changecount="11"> +<div title="BookMarkTiddler" modifier="YourName" created="201212311155" modified="202605051412" tags="excludeLists" changecount="13"> <pre><script> if (!window.story) window.story=window; -var url="http://www.access2base.com/access2base.html"; //store.getTiddlerText("SiteUrl"); +var url=store.getTiddlerText("SiteUrl"); if (!url) url=document.location.href; var title=story.findContainingTiddler(place).id.substr(7).replace('_',' ') //var title=story.findContainingTiddler(place).id.substr(7) var permalink=encodeURIComponent(String.encodeTiddlyLink(title)); @@ -2430,14 +2429,14 @@ return " "+"|Bookmark this page » » [["+title+"|&quo </script> </pre> </div> -<div title="BookMarksList" modifier="Jean-PierreLedure" created="201212311322" modified="201301162009" tags="excludeLists"> +<div title="BookMarksList" modifier="YourName" created="201212311322" modified="202605031408" tags="excludeLists" changecount="1"> <pre>*sitemap.xml <script> var out="" var tids=store.getTiddlers("title","excludeLists"); var d="" for (var t=0; t<tids.length; t++) { - var url="http://www.access2base.com/access2base.html"; //store.getTiddlerText("SiteUrl"); + var url="https://access2base.libreoffice.org/access2base.html"; //store.getTiddlerText("SiteUrl"); if (!url) url=document.location.href; var permalink=encodeURIComponent(String.encodeTiddlyLink(tids[t].title)); d = tids[t].modified.getFullYear() + '-'; @@ -2454,7 +2453,7 @@ return "{{{ "+out+" }}} "; var out="" var tids=store.getTiddlers("title","excludeLists"); for (var t=0; t<tids.length; t++) { - var url="http://www.access2base.com/access2base.html"; //store.getTiddlerText("SiteUrl"); + var url="https://access2base.libreoffice.org/access2base.html"; //store.getTiddlerText("SiteUrl"); if (!url) url=document.location.href; var permalink=encodeURIComponent(String.encodeTiddlyLink(tids[t].title)); out+=url+"#"+permalink+" "; @@ -2730,8 +2729,8 @@ It makes clear: !!!Example <<tiddler "CommandBar example">></pre> </div> -<div title="CalculatedField" modifier="Jean-PierreLedure" created="201206051612" modified="201308161051" tags="HowTo"> -<pre>(Q) How do I simulate a calculated field on a form ? //AOO/~LibO// does not support such fields in forms while //~MSAccess// does. +<div title="CalculatedField" modifier="YourName" created="201206051612" modified="202605041542" tags="HowTo" changecount="2"> +<pre>(Q) How do I simulate a calculated field on a form ? //~LibreOffice// does not support such fields in forms while //~MSAccess// does. (R) *Make the calculated field {{{Enabled = False}}} in the Control properties sheet. @@ -3493,13 +3492,13 @@ Processing is never interrupted when the //~CloseAllrecordsets// method is invok [[Standalone Forms]] </pre> </div> -<div title="Coding Conventions" modifier="Jean-Pierre Ledure" created="201106251413" modified="201405240738" tags="[[Snippets of Code]]" changecount="1"> +<div title="Coding Conventions" modifier="YourName" created="201106251413" modified="202605031534" tags="[[Snippets of Code]]" changecount="2"> <pre>This page details the conventions used in the coding of the //~Access2Base// API. !!Library and Modules *The acConstants module lists constants that are used in the API. They are defined as //Global//. Their name is identical as in ~MSAccess. Their value is in most cases identical to that of ~MSAccess, however not always. The scope of global constants is limited to one single library. As a consequence their definition may freely be copied and pasted to make them available in user libraries. *The reserved words are //~Proper-Cased// showing the same appearance as in the IDE of ~MSAccess. !!Functions and Subroutines -*~OpenOffice/~LibreOffice ignores the Private/Public attribute in Functions or Subs declarations. Nevertheless the attribute must be present. Rules for use are: +*~LibreOffice ignores the Private/Public attribute in Functions or Subs declarations. Nevertheless the attribute must be present. Rules for use are: | !Attribute | !Sub/Function Naming | !When | |Public |Starts with a letter |The Sub/Function belongs to the ~Access2Base API. As such it may be called from any other library developed by the user. | |Public |Starts with an underscore "_" |The Sub/Function must be called only from within the ~Access2Base library. As such it MUST NOT be called from another library as there is no guarantee about the arguments, the logic or even the existence of that piece of code in a later release. | @@ -3548,7 +3547,7 @@ The //Goto// statement is forbidden. It is however highly recommended for __error__ and __exception__ handling. </pre> </div> -<div title="Collection" modifier="Jean-Pierre Ledure" created="201106251010" modified="201612181348" tags="Definitions" changecount="15"> +<div title="Collection" modifier="YourName" created="201106251010" modified="202605041542" tags="Definitions" changecount="17"> <pre>A //Collection// contains a list of other objects. The individual members of the collection are accessible either via their index or via their name. The name is NOT case-sensitive. !!!Collections @@ -3557,7 +3556,7 @@ A //Collection// object is returned by next functions |[[AllDialogs]] |{{{AllDialogs()}}} without argument returns the //Collection// of all [[dialogs|Dialog]] present in any of the accessible dialog libraries | |[[AllForms]] |{{{AllForms()}}} without argument returns the //Collection// of all [[forms|Form]] defined in the current Base or non-Base document | |[[AllModules]] |{{{AllModules()}}} without argument returns the //Collection// of all [[ùodules|Module]] present in any of the accessible Basic libraries | -|[[CommandBars]] |{{{CommandBars()}}} without argument returns the //Collection// of all toolbars associated with the current ~LibO/AOO window. | +|[[CommandBars]] |{{{CommandBars()}}} without argument returns the //Collection// of all toolbars associated with the current ~LibreOffice window. | |[[CommandBarControls]] |{{{myCommandBar.CommandBarControls()}}} returns the //Collection// of all the controls of the //commandbar// designated by //~myCommandBar// | |[[Controls]] |{{{myObject.Controls()}}} returns the //Collection// of all the controls of a //form//, a //dialog//, a [[subform|SubForm]] or a [[gridcontrol|GridControl]] designated by the object //myObject// | |[[Events]] |{{{Events(event)}}} returns the current [[event|Event]] object | @@ -3567,7 +3566,7 @@ A //Collection// object is returned by next functions |[[QueryDefs]] |{{{CurrentDb().QueryDefs()}}} without argument returns the //Collection// of all [[queries|QueryDef]] in the database | |[[Recordsets]] |{{{CurrentDb().Recordsets()}}} without argument returns the //Collection// of all currently open [[recordsets|Recordset]] | |[[TableDefs]] |{{{CurrentDb().TableDefs()}}} without argument returns the //Collection// of all [[tables|TableDef]] in the database | -|[[TempVars]] |{{{Application.TempVars()}}} without argument returns the //Collection// of all [[temporary variables|TempVar]] in the current ~LibO/AOO session | +|[[TempVars]] |{{{Application.TempVars()}}} without argument returns the //Collection// of all [[temporary variables|TempVar]] in the current ~LibreOffice session | !!!Properties | !Property |!Description | |[[Count]] |Number of items in the //Collection//. The first item of the //Collection// has the range //0//; the last one has the range //Count - 1// | @@ -3849,8 +3848,8 @@ Dim i As Integer, j As Integer, oCommandBar As Object, oCommandBarControls As Ob !!!Examples <<tiddler "CommandBarControl example">></pre> </div> -<div title="CommandBars" creator="Jean-Pierre Ledure" modifier="Jean-Pierre Ledure" created="201502281443" modified="201507201612" tags="Collections" changecount="15"> -<pre>The //~CommandBars// collection describes instances of all __toolbars__ or menu bars present in the currently selected document, whenever visible or hidden. The document might be any ~LibreOffice/~OpenOffice document, a Base form or report, etc. It is in fact the ~LibO/AOO window that is active at the moment the //~CommandBars()// method is invoked. The concerned commandbars might be system toolbars, the menu bar, the status bar or any user-defined toolbar. +<div title="CommandBars" creator="Jean-Pierre Ledure" modifier="YourName" created="201502281443" modified="202605041455" tags="Collections" changecount="17"> +<pre>The //~CommandBars// collection describes instances of all __toolbars__ or menu bars present in the currently selected document, whenever visible or hidden. The document might be any ~LibreOffice document, a Base form or report, etc. It is in fact the ~LibreOffice window that is active at the moment the //~CommandBars()// method is invoked. The concerned commandbars might be system toolbars, the menu bar, the status bar or any user-defined toolbar. <<tiddler "ApplyApplication">> !!!Syntax {{{[Application.]CommandBars()}}} or {{{CommandBars()}}} @@ -3877,8 +3876,8 @@ Dim i As Integer, j As Integer, oCommandBar As Object, oCommandBarControls As Ob <<tiddler "CommandBars example">> </pre> </div> -<div title="CommandBars example" creator="Jean-Pierre Ledure" modifier="YourName" created="201502281521" modified="201907181432" tags="[[Snippets of Code]]" changecount="5"> -<pre>List all builtin or custom toolbars, stored in ~LibO/AOO software or in document itself +<div title="CommandBars example" creator="Jean-Pierre Ledure" modifier="YourName" created="201502281521" modified="202605041456" tags="[[Snippets of Code]]" changecount="6"> +<pre>List all builtin or custom toolbars, stored in ~LibreOffice software or in document itself ** ''BASIC'' //{{{ Dim i As Integer, oCommandBar As Object @@ -3927,12 +3926,12 @@ The //Connect// property is read-only. Basic.MsgBox(Application.CurrentDb().Connect) //}}}</pre> </div> -<div title="Contact" modifier="Jean-PierreLedure" created="201210051452" modified="201305090843" tags="NoTag"> +<div title="Contact" modifier="YourName" created="201210051452" modified="202605031423" tags="NoTag" changecount="1"> <pre>*To contribute to this piece of software ... *To search for help about its use ... *For any question you could have ... -If your request is of public interest, post it on the [[OpenOffice Community forum|http://forum.openoffice.org/en/forum/viewtopic.php?f=47&t=61447]] preferably in the proposed thread, or otherwise in the //Base// or //Macros and API// rubrics. -As a third option, send a private message to the user "JPL" on the same forum. Messages in english, french or dutch are welcome. +If your request is of public interest, post it on the [[LibreOffice Community forum|https://ask.libreoffice.org]]. +As a second option, send a private message to the user "JPLED" on the same forum. Messages in english, french or dutch are welcome. >Proposals for contributions to translations of ~Access2Base into other languages should be addressed via a private message.<br />(Translating into a new language takes +/- 2 hours ...)</pre> </div> @@ -5624,7 +5623,7 @@ Dim i As Integer, odbDatabase As Object DebugPrint(q.Name) //}}}</pre> </div> -<div title="DbaccessFromCalc" modifier="YourName" created="201404051435" modified="201910121012" tags="HowTo" changecount="34"> +<div title="DbaccessFromCalc" modifier="YourName" created="201404051435" modified="202605041458" tags="HowTo" changecount="36"> <pre>(Q) How could I get data stored in a database from within a Calc cell formula ? (R) Calc offers as a standard feature to insert data from database tables and queries via a specific browser that is invoked by using the {{{View}}} + {{{Data Sources}}} menu command or the {{{F4}}} function key. @@ -5662,7 +5661,7 @@ The sequencing of computations done by Calc is the mean we will use to reach our !!!Global To access the database we have to make use of a database object. Let's define it as a {{{Global}}} variable. Such variables remain in life as long as -*the AOO/~LibO session is lasting +*the ~LibreOffice session is lasting *the module where they are declared is not edited. Usually I declare {{{Global}}} variable in a separate module as such a module is unlikely to be modified often. //{{{ @@ -5744,7 +5743,7 @@ Function CatLookup(ByVal pvArg As Variant) As Variant End Function //}}} !!!Fill the data -The data matrix will be inserted as an ''array formula'' ({{{Ctrl}}} + {{{Shift}}} + {{{Enter}}}) in cells {{{D6:H35}}}. Look at the AOO/~LibO help to know more about them. +The data matrix will be inserted as an ''array formula'' ({{{Ctrl}}} + {{{Shift}}} + {{{Enter}}}) in cells {{{D6:H35}}}. Look at the ~LibreOffice help to know more about them. //{{{ {=IF(IsConnected,PRODUCTSLOAD($B$2),"")} //}}} @@ -6154,7 +6153,7 @@ Const dlgCancel = 0 oDialog.Terminate() //}}}</pre> </div> -<div title="DoCmd" modifier="YourName" created="201301121050" modified="201908171527" tags="Objects" changecount="10"> +<div title="DoCmd" modifier="YourName" created="201301121050" modified="202605031537" tags="Objects" changecount="11"> <pre>{{firstletter{ @@color:#930;T@@ }}}he //~DoCmd// class is a secondary root class from which actions or commands are initiated.. @@ -6198,7 +6197,7 @@ and |[[OpenSQL]] |Open a datasheet containing the data described by the provided SELECT SQL statement. | |[[OpenTable]] |Open a table in normal view or in table design view. | |[[OutputTo]] |Output the data in the specified object (currently only a form) to several output formats. | -|[[Quit]] |Quit //~OpenOffice/~LibreOffice Base//. | +|[[Quit]] |Quit //~LibreOffice Base//. | |[[RunApp]] |Run an external application given by its command line. | |[[RunCommand]] |Execute the command given as argument. | |[[RunSQL]] |Execute the SQL statement given as argument. | @@ -6467,11 +6466,11 @@ In case of error next message will be displayed to the user and simultaneously r <div title="Error handling" modifier="Jean-Pierre Ledure" created="201108061447" tags="Menu"> <pre></pre> </div> -<div title="Event" modifier="YourName" created="201110010725" modified="201802231708" tags="Objects [[Events handling]]" changecount="11"> +<div title="Event" modifier="YourName" created="201110010725" modified="202605031538" tags="Objects [[Events handling]]" changecount="12"> <pre>The {{{Event}}} [[object|Object Model]] describes an event occurred typically from within a form or a form control, a dialog or a dialog control, or fired from elsewhere. !!!Functions returning an //Event// object | !Parent object | !Function | !Type | !Arguments |!Description | -|[[Application]] |[[Events]] | [[Collection]] | the //event// object passed by ~OpenOffice/~LibreOffice<br />as argument of a document, form, subform or control event |{{{Application.Events(oEvent)}}} returns an //Event// object. | +|[[Application]] |[[Events]] | [[Collection]] | the //event// object passed by ~LibreOffice<br />as argument of a document, form, subform or control event |{{{Application.Events(oEvent)}}} returns an //Event// object. | !!!Properties of an //Event// object | !Property | !Type | !Description | |~EventType | String |See the [[events handler|Events Handler]]. | @@ -6548,13 +6547,13 @@ def SelectChanged(poEvent): oForm.RecordSource = sSQL //}}}</pre> </div> -<div title="Events" modifier="Jean-Pierre Ledure" created="201109031107" modified="201607311234" tags="[[Events handling]] Collections" changecount="5"> +<div title="Events" modifier="YourName" created="201109031107" modified="202605031539" tags="[[Events handling]] Collections" changecount="6"> <pre>The {{{Events}}} collection returns the (unique) instance of the currently executed [[event object|Event]]. <<tiddler "ApplyApplication">> !!!Syntax {{{[Application.]Events(}}}//event//{{{)}}} -The //event// argument is the variable of {{{Variant/Object}}} type given as argument by ~OpenOffice/~LibreOffice to the macro invoked when the event occurs. +The //event// argument is the variable of {{{Variant/Object}}} type given as argument by ~LibreOffice to the macro invoked when the event occurs. !!!Returned values Either - {{{Nothing}}} (to be tested with the {{{IsNull()}}} Basic builtin function) when the event is not really an event or it was triggered by an unsupported event type - or some other error occurred (the call to {{{Events()}}} never stops the execution of the macro). In particular, when the event has been triggered by a toolbar button; @@ -6567,7 +6566,7 @@ or <<tiddler "Event example">> </pre> </div> -<div title="Events Handler" modifier="Jean-Pierre Ledure" created="201109030954" modified="201610161007" tags="[[Events handling]]" changecount="3"> +<div title="Events Handler" modifier="YourName" created="201109030954" modified="202605041449" tags="[[Events handling]]" changecount="6"> <pre>{{firstletter{ @@color:#930;E@@ }}}''vents'' can automatically execute a macro when a specified software event occurs by assigning the desired macro to the event. The macros might be defined at database document, [[form|Form]], [[subform|SubForm]], [[dialog|Dialog]], [[control|Control]], menu item or toolbar button level. The triggered macro has one argument of type //Object//. @@ -6575,7 +6574,7 @@ The //Events Handler// of //~Access2Base// provides a mean to standardize the pr ''Note that the described technique has nothing in common with the events processing in //~MSAccess//.'' !!!Step by step -#Assign the event to a macro: see the ~LibreOffice/~OpenOffice Help or documentation. +#Assign the event to a macro: see the ~LibreOffice Help or documentation. #In the code of the macro invoke the [[Events]] collection. Note that the macro may be a {{{Sub}}} or a {{{Function}}} depending on the necessity or not to return the value {{{False}}} to cancel the event. #Use the properties of the returned object to process the event. In particular the //Source// property. //{{{ @@ -6588,7 +6587,7 @@ Dim oeEvent As Object, myControl As Object End Sub //}}} !!!Event types -The types of events supported by the ~Access2Base API are listed below. See the ~OpenOffice/~LibreOffice documentation for more details. +The types of events supported by the ~Access2Base API are listed below. See the ~LibreOffice documentation for more details. The invocation of {{{Events()}}} returns a {{{Null}}} value when other event types occur. | !Event type | !Description | |DOCUMENTEVENT |At document (database) level. | @@ -6987,7 +6986,7 @@ Because the //~GetRows// method always returns all the fields in the //Recordset |~HowTo |~ExtractDataTable1Field || |~|~ExtractDataTableBulk ||</pre> </div> -<div title="Field" modifier="Jean-Pierre Ledure" created="201306291409" modified="201508291730" tags="Objects" changecount="7"> +<div title="Field" modifier="YourName" created="201306291409" modified="202605041459" tags="Objects" changecount="9"> <pre>{{firstletter{ @@color:#930;A@@ }}} //field// [[object|Object Model]] describes one of the fields of a [[table|TableDef]], a [[query|QueryDef]] or a [[recordset|Recordset]]. Each field will be retrieved as a member of the [[Fields]] [[collection|Collection]] of its corresponding parent. @@ -7000,7 +6999,7 @@ See the correspondence table below. <<tiddler "FieldTypesList">> !!!Properties | !Property | !Type | !Read only |!Description or UNO object | -|[[DataType]] || Y |Specifies the //AOO/~LibO// type of the data as an integer value | +|[[DataType]] || Y |Specifies the //~LibreOffice// type of the data as an integer value | |[[DbType|DataType]] || Y |Specifies the //~MsAccess// type of the data as an integer value | |[[DefaultValue]] |||Returns the value stored in a new record | |[[Description]] |||A summary description of the field | @@ -7010,7 +7009,7 @@ See the correspondence table below. |[[Size]] || Y |The maximum size of the field | |[[SourceField]] || Y |Indicates the name of the field that is the original source of the data for the field | |[[SourceTable]] || Y |Indicates the name of the table that is the original source of the data for the field | -|[[TypeName|DataType]] || Y |Specifies the //AOO/~LibO// type of the data as a string | +|[[TypeName|DataType]] || Y |Specifies the //~LibreOffice// type of the data as a string | |[[Value|Value (field)]] |||The value stored or to be stored in the field | |Column | UNO | Y |com.sun.star.sdb.~OTableColumnWrapper<br />org.openoffice.comp.dbaccess.~OQueryColumn<br />com.sun.star.sdb.~ODataColumn | !!!Methods @@ -7252,7 +7251,7 @@ When a //Filter// is applied, the form is [[requeried|Requery]]. !!!Example <<tiddler "Filter example">></pre> </div> -<div title="Find" creator="Jean-Pierre Ledure" modifier="YourName" created="201612181629" modified="201908231449" tags="Methods" changecount="23"> +<div title="Find" creator="Jean-Pierre Ledure" modifier="YourName" created="201612181629" modified="202605041500" tags="Methods" changecount="24"> <pre>The //Find// method finds a specified text in a standard or class [[module|Module]]. !!!Applies to ... | !Object | !Description | @@ -7274,7 +7273,7 @@ When a //Filter// is applied, the form is [[requeried|Requery]]. **__BASIC__ (the arguments are passed by reference)<br />If a match is found, these arguments will contain the line number and column position at which the search text begins (//startline//, //startcolumn//) and ends (//endline//, //endcolumn//).<br />For example, if the search text is found on line 15, begins at column 20, and ends at column 30, the values of these arguments will be:<br />{{{startline = 15, startcolumn = 20, endline = 15, endcolumn = 30}}}. **__PYTHON__ (passing arguments by reference is not supported)<br />If a match is found, next module properties will contain the line number and column position at which the search text begins (//module.startline//, //module.startcolumn//) and ends (//module.endline//, //module.endcolumn//).<br />For example, if the search text is found on line 15, begins at column 20, and ends at column 30, the values of these arguments will be:<br />{{{module.startline == 15, module.startcolumn == 20, module.endline == 15, module.endcolumn == 30}}}. *If the input arguments do not allow a fair search (f.i. //endline// < //startline//), then //Find// will return {{{False}}}. -*To pass an empty value, do not initialize the argument or use the {{{Empty}}} LO/AOO Basic reserved word, or use the {{{acConstants.Empty}}} Python constant. +*To pass an empty value, do not initialize the argument or use the {{{Empty}}} ~LibreOffice Basic reserved word, or use the {{{acConstants.Empty}}} Python constant. ** Basic //{{{ Dim vStartLine As Variant @@ -8100,7 +8099,7 @@ Calling //~GetRows// cancels all not confirmed updates on the //recordset//. !!!Example <<tiddler "GetRows example">></pre> </div> -<div title="GetRows example" modifier="YourName" created="201401262005" modified="201907181053" tags="[[Snippets of Code]]" changecount="1"> +<div title="GetRows example" modifier="YourName" created="201401262005" modified="202005111624" tags="[[Snippets of Code]]" changecount="2"> <pre>Create a new recordset, extract the data in blocks of 50 records ** ''BASIC'' //{{{ @@ -8120,7 +8119,7 @@ Dim orsRecords As Object, vDataBlock() As Variant ** ''PYTHON'' //{{{ cstNumRecs = 50 - orsRecords = Application.CurrentDb().OpenRecordset("DEPENSE", lockedit = acConstants.dbReadOnly) + orsRecords = Application.CurrentDb().OpenRecordset("EXPENSES", lockedit = acConstants.dbReadOnly) while not orsRecords.EOF: vDataBlock = orsRecords.GetRows(cstNumRecs) # ... process data block ... @@ -8161,7 +8160,7 @@ Dim orsRecords As Object, vDataBlock() As Variant DoCmd.GoToControl("myControl") //}}}</pre> </div> -<div title="GoToRecord" modifier="Jean-Pierre Ledure" created="201112311138" modified="201412301600" tags="Actions" changecount="13"> +<div title="GoToRecord" modifier="YourName" created="201112311138" modified="202605041447" tags="Actions" changecount="14"> <pre>{{firstletter{ @@color:#930;T@@ }}}he //~GoToRecord// action makes the specified record the current record in an open form, a table or a query datasheet. @@ -8190,7 +8189,6 @@ Const acPrevious = 0 !!!Remarks *If the targeted window (= combination of //~ObjectType// and //~ObjectName//) does not exist or is not open then the //~GoToRecord// action request is ignored. *The //~GoToRecord// action is most often started from an event. Clicking on a button in a form triggering the event might change the focus from the current form to the form containing the button. This could not be the desired effect. In that case use the [[SetFocus]] method on the targeted //form// or alternatively the [[SelectObject]] action, before executing the //~GoToRecord// statement. -*The //~GoToRecord// action, when applied to a table or a query datasheet, __does NOT work in //~OpenOffice//__ (//~LibreOffice// OK). *When run from a //non-Base// document containing several forms, the first argument must be equal to {{{acDataForm}}} and the second one must be a {{{string}}} containing either the name of the targeted form or a [[shortcut|ShortCut Notation]] to it. *An attempt to position the cursor beyond the first/last row in the result set leaves the cursor before/after the first/last row, respectively. *If {{{Record}}} = //acGoTo// then: @@ -8337,34 +8335,25 @@ Dim ofForm As Object ofForm.Width = 200 //}}}</pre> </div> -<div title="Home" modifier="YourName" created="201106250808" modified="201912141035" tags="NoTag" changecount="38"> -<pre>!NEWS -As from version 6.4.0, the ''~Access2Base library'' can be invoked, with 100% of its functionalities, from ''PYTHON scripts''. -Read more about this feature on page [[Access2Base and Python]]. - -Read about ''[[BASEDOCUMENTER|http://www.access2base.com/basedocumenter]]'': a new ~LibreOffice __extension__ for producing a __HTML documentation__ of Base applications. -~BaseDocumenter is based on the ~Access2Base library. -!What is __~Access2Base__ ? +<div title="Home" modifier="YourName" created="201106250808" modified="202605041556" tags="NoTag" changecount="46"> +<pre>!!What is __~Access2Base__ ? {{firstletter{ @@color:#930;A@@ - }}}''ccess2Base'' is a ~LibreOffice/~OpenOffice Basic library of macros for (business or personal) __application developers__ and __advanced users__. + }}}''ccess2Base'' is a ~LibreOffice ''Basic + Python library of macros'' for (business or personal) __application developers__ and __advanced users__. Their syntax and their meaning are directly inspired by //~MSAccess//. The macros are callable from -*a ''~LibreOffice / ~OpenOffice Base'' application, -*any ''~LibreOffice / ~OpenOffice document'' wanting to access data stored in databases. +*a ''~LibreOffice Base'' application, +*any ''~LibreOffice document'' wanting to access data stored in databases. -It is intended first to support people having a knowledge of ~MSAccess and willing to step over to a similar but free software, i.e. //~LibreOffice/~OpenOffice Base//. -It is also useful for users having already a practical knowledge of ~LibreOffice/~OpenOffice (Base or other ...) and wanting to start building applications with it, while remaining focussed on the application or business logic only. +It is intended first to support people having a knowledge of ~MSAccess and willing to step over to a similar but free software, i.e. //~LibreOffice Base//. +It is also useful for users having already a practical knowledge of ~LibreOffice (Base or other ...) and wanting to start building applications with it, while remaining focussed on the application or business logic only. -//It is also recommended to people having tried to program in AOO/~LibO Basic with the standard ~LibreOffice/~OpenOffice UNO API and having given it up ...// +//It is also recommended to people having tried to program in ~LibreOffice Basic with the standard ~LibreOffice UNO API and having given it up ...// The ''~Access2Base API'' is ''much more concise, intuitive, easy to learn'' and ''easy to use'' than the standard UNO API (API = Application Programming Interface). '' -~Access2Base is provided either ->- __pre-installed as a standard feature in all versions of //~LibreOffice// since //~LibO version 4.2//__ ->- as an __extension__ downloadable from the //~LibreOffice// (versions <= 4.1) or //~OpenOffice// (all versions) download centers. -The current and future versions of ~Access2Base (as from 6.2.0) will be delivered only as a part of ~LibreOffice (>= 6.2). +~Access2Base is provided __pre-installed as a standard feature__ in all supported versions of //~LibreOffice//. See the [[getting started instructions|Install]] for more details. '' @@ -8760,7 +8749,7 @@ loading a script from a source url: 2005.11.08 1.0.0 initial release <<<</pre> </div> -<div title="Install" modifier="YourName" created="201201071417" modified="201907221040" tags="NoTag" changecount="72"> +<div title="Install" modifier="YourName" created="201201071417" modified="202605041506" tags="NoTag" changecount="74"> <pre>{{firstletter{ @@color:#930;D@@ }}}epending on the office suite you are using and its version, the installation instructions may vary. @@ -8776,7 +8765,7 @@ The downloaded contents are identical if their version numbers are identical too >''Starting from version 6.2.0, ~Access2Base is not available as an extension anymore. To benefit from its features, install ~LibreOffice (>=) 6.2.'' The name of he downloaded file is __~Access2Base.oxt__. Select preferably the last proposed version. Note: //some browsers might download the extension as a .zip file; if this happens rename the downloaded file from .zip to .oxt// -Install the extension as any other extension. To know more, follow the instructions in [[Installing an extension (AOO)|https://wiki.openoffice.org/wiki/Documentation/Administration_Guide/Using_Package_Manager]] or in [[Installing an extension (LibO)|https://wiki.documentfoundation.org/Documentation/HowTo/install_extension]] +Install the extension as any other extension. To know more, follow the instructions in [[Installing an extension (~OpenOffice)|https://wiki.openoffice.org/wiki/Documentation/Administration_Guide/Using_Package_Manager]] or in [[Installing an extension (~LibreOffice)|https://wiki.documentfoundation.org/Documentation/HowTo/install_extension]] The Basic IDE ... ... has now 2 more options: @@ -8784,9 +8773,9 @@ The Basic IDE ... #The {{{Help + Access2Base Online Help}}} menu item opens the current Help file in your preferred browser. !Start using the library !!!From BASIC -To be able to invoke the //~Access2Base// API from a AOO/~LibO ".odb" file (the usual suffix for the front-end part of database documents) you have to +To be able to invoke the //~Access2Base// API from a ~LibreOffice ".odb" file (the usual suffix for the front-end part of database documents) you have to *Have a minimal knowledge of the Basic IDE and of the Basic programming language. -*Open in the main AOO/~LibO Base window the ".odb" file (the database document) on which you would like to apply the ~Access2Base API. +*Open in the main ~LibreOffice Base window the ".odb" file (the database document) on which you would like to apply the ~Access2Base API. *With {{{Tools + Macros + Organize Macros + OpenOffice/LibreOffice Basic...}}} open the Basic IDE and create a Basic module in the Standard library of the database document itself. The module should contain as a minimum next code: <<tiddler "Openconnection example">> *Assign in the main Base window with menu items {{{Tools + Customize...}}} ({{{Events}}} tab) the above Sub ("~DBOpen" in the example but use the name of your choice) to the //~OpenDocument// event. Save in the ".odb" file itself. @@ -9039,10 +9028,10 @@ End Sub | !Basic module | !Database event | !Form | !Form event | !~SubForm | !~SubForm event | !Control | !Control event |!Comments | |Synchro |Closed a sub-component | ~Orders_Details_Sync_Cust-Prod-Emp<br />~Customers_Sync_Orders<br />~Employees_Sync_Orders<br />~Products_Sync_Orders |After record change |~SubForm |After record change | btnCustomers<br />btnEmployees<br />btnProducts |Mouse button pressed ||</pre> </div> -<div title="License" creator="YourName" modifier="YourName" created="202004271014" modified="202004271017" tags="NoTag" changecount="4"> +<div title="License" creator="YourName" modifier="YourName" created="202004271014" modified="202605041445" tags="NoTag" changecount="5"> <pre>!Public Documentation License Notice *The contents of this Documentation are subject to the Public Documentation License Version 1.0 (the "License"); you may only use this Documentation if you comply with the terms of this License. A copy of the License is available at [[https://www.openoffice.org/licenses/PDL.html|https://www.openoffice.org/licenses/PDL.html]]. -*The Original Documentation is __the actual one__. The Initial Writer of the Original Documentation is __~Jean-Pierre LEDURE__. Copyright (C) __2011-2020__. All Rights Reserved. +*The Original Documentation is __the actual one__. The Initial Writer of the Original Documentation is __~Jean-Pierre LEDURE__. Copyright (C) __2011-2026__. All Rights Reserved. </pre> </div> <div title="LimitsRecordset" creator="Jean-Pierre Ledure" modifier="Jean-Pierre Ledure" created="201405311333" modified="201406161406" tags="HowTo" changecount="16"> @@ -9309,7 +9298,7 @@ If the control is a [[MultiSelect]] listbox, or if there is no item selected, th !!!Example <<tiddler "Enabled & Locked example">></pre> </div> -<div title="MSAccessCoverage" creator="Jean-Pierre Ledure" modifier="YourName" created="201406281616" modified="201804241258" tags="NoTag" changecount="75"> +<div title="MSAccessCoverage" creator="Jean-Pierre Ledure" modifier="YourName" created="201406281616" modified="202605041517" tags="NoTag" changecount="82"> <pre>{{firstletter{ @@color:#930;A@@ }}} detailed info has been compiled in this page about which actions and which objects, as they exist in //~MSAccess 2013//, have been - partly or more completely - already implemented in //~Access2Base//. A @@background-color:#ff3;perspective for future developments@@ of //~Access2Base// is also given in terms of interest for users and of complexity of implementation. @@ -9323,7 +9312,7 @@ If the control is a [[MultiSelect]] listbox, or if there is no item selected, th |''"""AllDatabaseDiagrams"""'' | | | | | X |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; | | |''"""AllForms"""'' | X | | | | |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; | | |''"""AllFunctions"""'' | | | | | X |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""List VBA code""" | -|''"""AllMacros"""'' | | | | | X |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""MSAccess macro's <> LibO/AOO macro's""" | +|''"""AllMacros"""'' | | | | | X |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""MSAccess macro's <> LibreOffice macro's""" | |''"""AllModules"""'' | X | | | | |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""List VBA code""" | |''"""AllQueries"""'' | X | | | | |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""Redundant with QueryDefs collection""" | |background-color:#ff3;''"""AllReports"""'' | | | X | | |background-color:#eee; |background-color:#eee; |background-color:#eee; X |background-color:#eee; | | @@ -9415,7 +9404,7 @@ If the control is a [[MultiSelect]] listbox, or if there is no item selected, th |''"""Container"""'' | | | | | X |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""Useless generic object""" | |''"""Containers"""'' | | | | | X |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; | | |''"""Database"""'' | X | | | | |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""RunSQL has been preferred to Execute method""" | -|background-color:#ff3;''"""Databases"""'' | | | | X | |background-color:#eee; |background-color:#eee; X |background-color:#eee; |background-color:#eee; |"""Manage collection of all databases opened during a LibO/AOO session""" | +|background-color:#ff3;''"""Databases"""'' | | | | X | |background-color:#eee; |background-color:#eee; X |background-color:#eee; |background-color:#eee; |"""Manage collection of all databases opened during a LibreOffice session""" | |''"""DBEngine"""'' | | | | X | |background-color:#eee; X |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""Database administration""" | |''"""Document"""'' | | | | | X |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |~| |''"""Documents"""'' | | | | | X |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; | | @@ -9444,9 +9433,9 @@ If the control is a [[MultiSelect]] listbox, or if there is no item selected, th !~DoCmd Actions | !ACTIONS |>|>|>|>| ''__FUNCTIONALITY__'' |>|>|>|background-color:#eee; ''__IMPLEMENTATION__'' | !Comments | |~| !Done | !Could be improved | !Very nice to have | !Nice to have | !Not applicable | !Out of Reach | !Complex | !Average | !Easy |~| -|''"""AddMenu"""'' | | | X | | |background-color:#eee; X |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""Menus are static in LibO/AOO"""<br />"""(except in shortcut menus)""" | +|''"""AddMenu"""'' | | | X | | |background-color:#eee; X |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""Menus are static in LibreOffice"""<br />"""(except in shortcut menus)""" | |''"""ApplyFilter"""'' | X | | | | |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""Better replaced by the Filter and FilterOn properties for Forms"""<br />"""Applicable to table/query datasheet views""" | -|''"""Beep"""'' | | | | | X |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""Standard in LibO/AOO Basic""" | +|''"""Beep"""'' | | | | | X |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""Standard in LibreOffice Basic""" | |''"""BrowseTo"""'' | | | | | X |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""Browse thru forms and reports displayed in a tabbed interface""" | |''"""CancelEvent"""'' | | | | | X |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""Exit Sub in procedure invoked by event""" | |''"""ClearMacroError"""'' | | | | | X |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; | | @@ -9462,13 +9451,13 @@ If the control is a [[MultiSelect]] listbox, or if there is no item selected, th |''"""GoToControl"""'' | X | | | | |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""Better replaced by SetFocus""" | |''"""GoToPage"""'' | | | | | X |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""Yet obsolete in MSAccess""" | |''"""GoToRecord"""'' | X | | | | |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""Enriched with subforms""" | -|''"""Hourglass"""'' | | | X | | |background-color:#eee; X |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""SystemPointer interface not at application level in LibO/AOO""" | -|''"""LockNavigationPane"""'' | | | | | X |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""No navigation pane in LibO/AOO""" | +|''"""Hourglass"""'' | | | X | | |background-color:#eee; X |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""SystemPointer interface not at application level in LibreOffice""" | +|''"""LockNavigationPane"""'' | | | | | X |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""No navigation pane in LibreOffice""" | |''"""Maximize"""'' | X | | | | |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; | | |''"""Minimize"""'' | X | | | | |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; | | |''"""MoveSize"""'' | X | | | | |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; | | -|''"""NavigateTo"""'' | | | | | X |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""No navigation pane in LibO/AOO""" | -|''"""OpenDataAccessPage"""'' | | | | | X |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""No data access pages in LibO/AOO""" | +|''"""NavigateTo"""'' | | | | | X |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""No navigation pane in LibreOffice""" | +|''"""OpenDataAccessPage"""'' | | | | | X |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""No data access pages in LibreOffice""" | |background-color:#ff3;''"""OpenDiagram"""'' | | | | X | |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; X |"""Easy to reproduce with"""<br />"""SelectObject(acDatabaseWindow)"""<br />"""RunCommand(acCmdShowAllRelationships)"""<br />"""1 diagram by database !""" | |''"""OpenForm"""'' | X | X | | | |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""The OpenArgs argument is (almost) meaningless""" | |''"""OpenFunction"""'' | | | | | X |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""Function in SQL Server""" | @@ -9487,8 +9476,8 @@ If the control is a [[MultiSelect]] listbox, or if there is no item selected, th |''"""Requery"""'' | | | | | X |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""Better replaced by the Requery method""" | |background-color:#ff3;''"""Restore"""'' | | | X | | |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; X |"""Probably solved with IsMaximized=False tbc""" | |''"""RunCommand"""'' | X | | | | |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""Where to find their arguments ??"""<br />"""VBA commands list derived from MSAccess 2003""" | -|''"""RunDataMacro"""'' | | | | | X |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""No concept of DataMacros in LibO/AOO""" | -|''"""RunMacro"""'' | | | | | X |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""No concept of Macros in LibO/AOO""" | +|''"""RunDataMacro"""'' | | | | | X |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""No concept of DataMacros in LibreOffice""" | +|''"""RunMacro"""'' | | | | | X |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""No concept of Macros in LibreOffice""" | |''"""RunSavedImportExport"""'' | | | X | | |background-color:#eee; X |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""Let's try TransferXXX first""" | |''"""RunSQL"""'' | X | X | | | |background-color:#eee; |background-color:#eee; |background-color:#eee; X |background-color:#eee; |"""Has dbSQLPassThrough option"""<br />"""Extended to database objects"""<br />"""UseTranasction argument not supported""" | |''"""Save"""'' | | | | | X |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""Design views of Forms or Reports are not supported"""<br />"""Easily replaced by RunCommand(acCmdSave)""" | @@ -9503,7 +9492,7 @@ If the control is a [[MultiSelect]] listbox, or if there is no item selected, th |''"""SetProperty"""'' | X | | | | |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""Much broader scope in Access2Base""" | |''"""SetWarnings"""'' | | | | | X |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""Related to system messages""" | |''"""ShowAllRecords"""'' | X | | | | |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; | | -|background-color:#ff3;''"""ShowToolbar"""'' | | | X | | |background-color:#eee; |background-color:#eee; |background-color:#eee; X |background-color:#eee; |"""Toolbars are static on LibO/AOO""" | +|background-color:#ff3;''"""ShowToolbar"""'' | | | X | | |background-color:#eee; |background-color:#eee; |background-color:#eee; X |background-color:#eee; |"""Toolbars are static in LibreOffice""" | |''"""SingleStep"""'' | | | | | X |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""Related to (data)macros""" | |''"""TransferDatabase"""'' | | | X | | |background-color:#eee; X |background-color:#eee; |background-color:#eee; |background-color:#eee; |"""Copy objects (forms, queries, tables, ...) between databases""" | |''"""TransferSharePointList"""'' | | | | | X |background-color:#eee; |background-color:#eee; |background-color:#eee; |background-color:#eee; | | @@ -9518,8 +9507,8 @@ If the control is a [[MultiSelect]] listbox, or if there is no item selected, th |background-color:#ff3;''"""Shortcut menus"""'' | | | X | | |background-color:#eee; |background-color:#eee; X |background-color:#eee; |background-color:#eee; | | |background-color:#ff3;''"""Error handling"""'' | | | | X | |background-color:#eee; |background-color:#eee; |background-color:#eee; X |background-color:#eee; |"""Process A2B errors in user code""" |</pre> </div> -<div title="MainMenu" modifier="YourName" created="201106251004" modified="202004271009" tags="excludeLists" changecount="18"> -<pre>[[Software Version: 6.4.0|ReleaseNotes]] +<div title="MainMenu" modifier="YourName" created="201106251004" modified="202605031447" tags="excludeLists" changecount="19"> +<pre>[[Software Version: 26.8|ReleaseNotes]] [[Home|Home]] <<search>> [[Index|Full Index]] @@ -9653,7 +9642,7 @@ Dim ocControl As Object |Snippets |||||Form ~Orders_Browse must be open before running examples 2 and 3. | </pre> </div> -<div title="Module" creator="Jean-Pierre Ledure" modifier="Jean-Pierre Ledure" created="201612181037" modified="201708191650" tags="Objects" changecount="9"> +<div title="Module" creator="Jean-Pierre Ledure" modifier="YourName" created="201612181037" modified="202605041444" tags="Objects" changecount="10"> <pre>{{firstletter{ @@color:#930;A@@ }}} //Module// object represents a module containing a Basic script. It might represent either a standard module or a class module. @@ -9681,7 +9670,7 @@ To manage potential homonyms among libraries, the ''name'' of a module consists SCOPE.LIBRARY.MODULE //}}} *The //SCOPE// is either -**''{{{GLOBAL}}}'' grouping both the ''~LibreOffice/~OpenOffice Macros and Dialogs'' and the ''My Macros and Dialogs'' catalogs of libraries. +**''{{{GLOBAL}}}'' grouping both the ''~LibreOffice Macros and Dialogs'' and the ''My Macros and Dialogs'' catalogs of libraries. **''{{{DOCUMENT}}}'' grouping the libraries stored in the current document. *The //LIBRARY// component is the name of the library. It is often equal to "''Standard''". !!!See also @@ -9740,11 +9729,11 @@ Dim vStartLine As Variant, vStartColumn As Variant, vEndLine As Variant, vEndCol TraceConsole() //}}}</pre> </div> -<div title="Move" modifier="YourName" created="201111011543" modified="201906121401" tags="Methods" changecount="4"> +<div title="Move" modifier="YourName" created="201111011543" modified="202605041443" tags="Methods" changecount="5"> <pre>The //Move// method moves the specified object to the coordinates specified by the argument values. !!!Applies to ... | !Object | !Description | -|[[Form]] |The representation of an //~OpenOffice/~LibreOffice// database form | +|[[Form]] |The representation of an //~LibreOffice// database form | |[[Dialog]] |The representation of a Basic dialog | !!!Syntax //form//.{{{Move([}}}//Left//{{{], [}}}//Top//{{{], [}}}//Width//{{{], [}}}//Height//{{{])}}} @@ -10093,7 +10082,7 @@ End Sub | (1) |~ListBox |~Products_ListBoxFilter ||~SuppliersListBoxMono |Changed || | (2) |~|~|~|~SuppliersListBoxMulti |~|~|</pre> </div> -<div title="Name" modifier="YourName" created="201107181600" modified="201902151447" tags="Properties" changecount="7"> +<div title="Name" modifier="YourName" created="201107181600" modified="202605041443" tags="Properties" changecount="8"> <pre>The //Name// property specifies the text string corresponding to the name of an object. !!!Applies to ... | !Object |!Description | @@ -10129,7 +10118,7 @@ End Sub {{{String}}} !!!Remarks *The Name property is read-only. -*When relevant the returned string contains the name of the object __as stored by ~LibreOffice/~OpenOffice Base__. In ~LibreOffice/~OpenOffice Base "myForm" is different from "MYFORM". At the opposite, in ~Access2Base, all references to a name as argument of a function are //''not case-sensitive''//.<br />Example: {{{Forms("myForm")}}} is identical to {{{Forms("MYFORM")}}} +*When relevant the returned string contains the name of the object __as stored by ~LibreOffice Base__. In ~LibreOffice Base "myForm" is different from "MYFORM". At the opposite, in ~Access2Base, all references to a name as argument of a function are //''not case-sensitive''//.<br />Example: {{{Forms("myForm")}}} is identical to {{{Forms("MYFORM")}}} *The //Name// property of a recordset is artificially set by //~Access2Base//. See the [[Recordsets]] collection for more info. !!!Error messages !!!Example @@ -10159,17 +10148,17 @@ Dim ofForm As Object, opProperty As Object, i As Integer DebugPrint(p.Name) //}}}</pre> </div> -<div title="Object Model" modifier="Jean-Pierre Ledure" created="201106251306" modified="201612181032" tags="Definitions" changecount="35"> +<div title="Object Model" modifier="YourName" created="201106251306" modified="202605041521" tags="Definitions" changecount="42"> <pre>{{firstletter{ - @@color:#930;A@@ - }}}OO/~LibO Basic is a simple but still an object-oriented language. To know more about object-oriented programming in Basic, you can have a look at [[here|https://forum.openoffice.org/en/forum/viewtopic.php?f=21&t=58135]] + @@color:#930;L@@ + }}}ibO Basic is a simple but still an object-oriented language. To know more about object-oriented programming in Basic, you can have a look at [[here|https://forum.openoffice.org/en/forum/viewtopic.php?f=21&t=58135]] To stay close to the syntax of the //~MSAccess// object model the implementation of ~Access2Base has been based on BASIC object classes. *Specific functions, sometimes called "Collections" will create instances of classes of type ''Form'', ''Subform'', ''Control'' or ''Database'', etc. *To use these instances in your own code, your local/global/... variables should be declared as being of type {{{Object}}} *The names of the ''properties'' and ''methods'' to be applied on those variables are identical in //~MSAccess// and in //~Access2Base//. Their arguments are identical as well. Note however that //~Access2Base// implements only a limited subset of the object model of //~MSAccess//. Note also that their semantics might differ from the original //~MSAccess// one. Read the current documentation carefully. *''Indirection'', i.e. accessing a property by its name given as a {{{string}}} argument, and ''introspection'', i.e. knowing which properties are available for any object, are supported for propertiesl. !The Object Model -[img[The Access2Base object model|objectmodel.png]] +[img[The Access2Base object model|_wikiimages/objectmodel.png]] !!Root classes | !Class | !Description | !Collections | !Properties | !Methods | |[[Application]] |The root class |[[AllDialogs]]<br />[[AllForms]]<br />[[AllModules]]<br />[[CommandBars]]<br />[[Events]]<br />[[Forms]]<br />[[TempVars]] |[[CurrentUser]]<br />[[HtmlEncode]]<br />[[ProductCode]]<br />[[Version]] |[[CurrentDb]]<br />[[DAvg]]<br />[[DCount]]<br />[[DLookup]]<br />[[DMin, DMax]]<br />[[DStDev, DStDevP]]<br />[[DSum]]<br />[[DVar, DVarP]]<br />[[OpenConnection]]<br />[[OpenDatabase]] | @@ -10177,7 +10166,7 @@ To stay close to the syntax of the //~MSAccess// object model the implementation |[[Collection]] |An array of objects accessible via their index or their name ||[[Count]]<br />[[Item]]<br />[[ObjectType]] |[[Add]]<br />[[Delete|Delete (table-query)]]<br />[[Remove]]<br />[[RemoveAll]] | !!Forms, dialogs, command bars and controls | !Class | !Description | !Collections | !Properties | !Methods | -|[[Form]] |The representation of an //~OpenOffice/~LibreOffice// database form |[[Controls]]<br />[[OptionGroup|OptionGroup (Method)]]<br />[[Properties|Properties (collection)]] |[[AllowAdditions]]<br />[[AllowDeletions]]<br />[[AllowEdits]]<br />[[Bookmark]]<br />[[Caption]]<br />[[CurrentRecord]]<br />[[Filter]]<br />[[FilterOn]]<br />[[Height]]<br />[[IsLoaded]]<br />[[Name]]<br />[[ObjectType]]<br />[[On ... form events|On (form event)]]<br />[[OpenArgs]]<br />[[OrderBy]]<br />[[OrderByOn]]<br />[[Recordset|Recordset (property)]]<br />[[RecordSource]]<br />[[Visible]]<br />[[Width]] |[[Close]]<br />[[CurrentDb]]<br />[[Move]]<br />[[Refresh]]<br />[[Requery]]<br />[[SetFocus]] | +|[[Form]] |The representation of a //~LibreOffice// database form |[[Controls]]<br />[[OptionGroup|OptionGroup (Method)]]<br />[[Properties|Properties (collection)]] |[[AllowAdditions]]<br />[[AllowDeletions]]<br />[[AllowEdits]]<br />[[Bookmark]]<br />[[Caption]]<br />[[CurrentRecord]]<br />[[Filter]]<br />[[FilterOn]]<br />[[Height]]<br />[[IsLoaded]]<br />[[Name]]<br />[[ObjectType]]<br />[[On ... form events|On (form event)]]<br />[[OpenArgs]]<br />[[OrderBy]]<br />[[OrderByOn]]<br />[[Recordset|Recordset (property)]]<br />[[RecordSource]]<br />[[Visible]]<br />[[Width]] |[[Close]]<br />[[CurrentDb]]<br />[[Move]]<br />[[Refresh]]<br />[[Requery]]<br />[[SetFocus]] | |[[Dialog]] |The representation of a Basic dialog |[[Controls]]<br />[[OptionGroup|OptionGroup (Method)]]<br />[[Properties|Properties (collection)]] |[[Caption]]<br />[[Height]]<br />[[IsLoaded]]<br />[[Name]]<br />[[ObjectType]]<br />[[Visible]]<br />[[Width]] |[[Execute|Execute (dialog)]]<br />[[Move]]<br />[[Start]]<br />[[Terminate]] | |[[CommandBar]] |Identifies a toolbar, a menubar or the statusbar. |[[CommandBarControls]]<br />[[Controls]]<br />[[Properties|Properties (collection)]] |[[BuiltIn]]<br />[[Name]]<br />[[ObjectType]]<br />[[Visible]] |[[Reset]] | |[[Control]] |The representation of a control within a Form, a Dialog, a ~SubForm or an ~OptionGroup |[[Controls]]<br />[[Properties|Properties (collection)]] |[[BackColor]]<br />[[BorderColor]]<br />[[BorderStyle]]<br />[[Cancel]]<br />[[Caption]]<br />[[ControlSource]]<br />[[ControlTipText]]<br />[[ControlType]]<br />[[Count]]<br />[[Default]]<br />[[DefaultValue]]<br />[[Enabled]]<br />[[FontBold]]<br />[[FontItalic]]<br />[[FontName]]<br />[[FontSize]]<br />[[FontUnderline]]<br />[[FontWeight]]<br />[[ForeColor]]<br />[[Form|Form (subform)]]<br />[[Format]]<br />[[ItemData]]<br />[[ListCount]]<br />[[ListIndex]]<br />[[Locked]]<br />[[MultiSelect]]<br />[[Name]]<br />[[ObjectType]]<br />[[On ... control events|On (control event)]]<br />[[OptionValue]]<br />[[Parent]]<br />[[Picture]]<br />[[Required]]<br />[[RowSource]]<br />[[RowSourceType]]<br />[[Selected]]<br />[[SelLength]]<br />[[SelStart]]<br />[[SelText]]<br />[[SubType]]<br />[[TabIndex]]<br />[[TabStop]]<br />[[Tag]]<br />[[Text]]<br />[[TextAlign]]<br />[[TripleState]]<br />[[Value]]<br />[[Visible]] |[[AddItem]]<br />[[RemoveItem]]<br />[[Requery]]<br />[[SetFocus]] | @@ -10214,7 +10203,7 @@ Objects are created by the invocation of specific functions included in the API. Example: //{{{ Dim ofForm As Object ' Variant would also be correct - Set ofForm = AllForms("myForm") ' The Set verb is mandatory in MSAccess but optional in AOO/LibO Basic + Set ofForm = AllForms("myForm") ' The Set verb is mandatory in MSAccess but optional in LibreOffice Basic //}}} {{{ofForm}}} contains after execution the instance of an object of class Form. {{{AllForms}}} is called a [[collection|Collection]]. Individual members of a collection are reachable either by their index or by their name. @@ -10234,7 +10223,7 @@ Read the documentation about each individual property for more info. !!!Get properties To get the value of a __normal__ property named "~MyProperty", write : {{indent{{{{vValue = myObject.MyProperty}}} -Depending on the context an error message can be generated stopping the execution of the macro. The error message can be issued either by AOO/~LibO Basic or by the API. +Depending on the context an error message can be generated stopping the execution of the macro. The error message can be issued either by ~LibreOffice Basic or by the API. If the property is an array use : {{indent{{{{vValue = myObject.MyProperty(i)}}} @@ -10273,7 +10262,7 @@ Dim ofForm As Object !!!Method names The names of the methods are identical to their equivalent in //~MSAccess//. However -*when the name is a ''reserved word'' in AOO/~LibO Basic the name is preceded by a "m" (like in method). E.g. //mClose// replaces //Close//, +*when the name is a ''reserved word'' in ~LibreOffice Basic the name is preceded by a "m" (like in method). E.g. //mClose// replaces //Close//, *the semantics of the method might differ more or less, *the arguments might be different in number or in admitted values or value types. Read the documentation about each individual method for more info. @@ -10338,7 +10327,7 @@ The //~ObjectType// property is read-only.</pre> <div title="Objects" modifier="Jean-Pierre Ledure" created="201106260832" modified="201106260845" tags="Menu"> <pre></pre> </div> -<div title="On (control event)" creator="Jean-Pierre Ledure" modifier="Jean-Pierre Ledure" created="201611181607" modified="201710291452" tags="Properties" changecount="37"> +<div title="On (control event)" creator="Jean-Pierre Ledure" modifier="YourName" created="201611181607" modified="202605041433" tags="Properties" changecount="38"> <pre>The //on ... control events// properties set or return the Basic script function which is executed when the event occurs. !!!Applies to ... The list below details which event is applicable on which control type. Additionally a distinction is made depending on the location of the control: within a [[form|Form]] (or [[subform|SubForm]]), a [[dialog|Dialog]] or a [[grid control|GridControl]]. @@ -10415,7 +10404,7 @@ The last column indicates how the event is displayed in the properties box relat !!!Returned vales / Arguments {{{String}}} !!!Remarks -*The //value// argument or the returned value is a string pointing to a Basic (or other ...) subroutine: see the [[Scripting Framework URI Specification|https://wiki.openoffice.org/wiki/Documentation/DevGuide/Scripting/Scripting_Framework_URI_Specification]] for more info.<br />E.g.<br />&nbsp;&nbsp;&nbsp;&nbsp;{{{vnd.sun.star.script:Standard.myModule.myMacro?language=Basic&location=document}}}<br />designates the {{{myMacro}}} Function or Sub in the {{{myModule}}} module of the Basic {{{Standard}}} library belonging to the current document.<br />Note that ~Access2Base does not check the validity of the provided argument. +*The //value// argument or the returned value is a string pointing to a Basic (or other ...) subroutine: see the [[Scripting Framework URI Specification|https://wiki.documentfoundation.org/Documentation/DevGuide/Scripting_Framework#Scripting_Framework_URI_Specification]] for more info.<br />E.g.<br />&nbsp;&nbsp;&nbsp;&nbsp;{{{vnd.sun.star.script:Standard.myModule.myMacro?language=Basic&location=document}}}<br />designates the {{{myMacro}}} Function or Sub in the {{{myModule}}} module of the Basic {{{Standard}}} library belonging to the current document.<br />Note that ~Access2Base does not check the validity of the provided argument. *Use an empty string ("") to remove the current setting. *The new control events settings will ''NOT'' be saved in the form after its closure. !!!Error messages @@ -10428,7 +10417,7 @@ The last column indicates how the event is displayed in the properties box relat !!!Example <<tiddler "On control event example">></pre> </div> -<div title="On (database event)" creator="Jean-Pierre Ledure" modifier="Jean-Pierre Ledure" created="201710291438" modified="201710291451" tags="Properties" changecount="6"> +<div title="On (database event)" creator="Jean-Pierre Ledure" modifier="YourName" created="201710291438" modified="202605041433" tags="Properties" changecount="7"> <pre>The //on ... database events// properties return the Basic script function which is executed when the event occurs. !!!Applies to ... The list below details which event is applicable on [[database documents|Database]]. @@ -10461,7 +10450,7 @@ The last column indicates how the event is displayed in the //Events// tab of th !!!Returned value {{{String}}} !!!Remarks -*The returned value is a string pointing to a Basic (or other ...) subroutine: see the [[Scripting Framework URI Specification|https://wiki.openoffice.org/wiki/Documentation/DevGuide/Scripting/Scripting_Framework_URI_Specification]] for more info.<br />E.g.<br />&nbsp;&nbsp;&nbsp;&nbsp;{{{vnd.sun.star.script:Standard.myModule.myMacro?language=Basic&location=document}}}<br />designates the {{{myMacro}}} Function or Sub in the {{{myModule}}} module of the Basic {{{Standard}}} library belonging to the current document.<br />Note that ~Access2Base does not check the validity of the provided argument. +*The returned value is a string pointing to a Basic (or other ...) subroutine: see the [[Scripting Framework URI Specification|https://wiki.documentfoundation.org/Documentation/DevGuide/Scripting_Framework#Scripting_Framework_URI_Specification]] for more info.<br />E.g.<br />&nbsp;&nbsp;&nbsp;&nbsp;{{{vnd.sun.star.script:Standard.myModule.myMacro?language=Basic&location=document}}}<br />designates the {{{myMacro}}} Function or Sub in the {{{myModule}}} module of the Basic {{{Standard}}} library belonging to the current document.<br />Note that ~Access2Base does not check the validity of the provided argument. !!!Error messages |Property 'On...' not applicable in this context | !!!See also @@ -10469,7 +10458,7 @@ The last column indicates how the event is displayed in the //Events// tab of th [[On (dialog event)]] [[On (form event)]]</pre> </div> -<div title="On (dialog event)" creator="Jean-Pierre Ledure" modifier="Jean-Pierre Ledure" created="201703181602" modified="201710291451" tags="Properties" changecount="8"> +<div title="On (dialog event)" creator="Jean-Pierre Ledure" modifier="YourName" created="201703181602" modified="202605041434" tags="Properties" changecount="9"> <pre>The //on ... dialog events// properties set or return the Basic script function which is executed when the event occurs. !!!Applies to ... The list below details which event is applicable on [[dialogs|Dialog]]. @@ -10492,7 +10481,7 @@ The last column indicates how the event is displayed in the dialog properties bo !!!Returned values / Arguments {{{String}}} !!!Remarks -*The //value// argument or the returned value is a string pointing to a Basic (or other ...) subroutine: see the [[Scripting Framework URI Specification|https://wiki.openoffice.org/wiki/Documentation/DevGuide/Scripting/Scripting_Framework_URI_Specification]] for more info.<br />E.g.<br />&nbsp;&nbsp;&nbsp;&nbsp;{{{vnd.sun.star.script:Standard.myModule.myMacro?language=Basic&location=document}}}<br />designates the {{{myMacro}}} Function or Sub in the {{{myModule}}} module of the Basic {{{Standard}}} library belonging to the current document.<br />Note that ~Access2Base does not check the validity of the provided argument. +*The //value// argument or the returned value is a string pointing to a Basic (or other ...) subroutine: see the [[Scripting Framework URI Specification|https://wiki.documentfoundation.org/Documentation/DevGuide/Scripting_Framework#Scripting_Framework_URI_Specification]] for more info.<br />E.g.<br />&nbsp;&nbsp;&nbsp;&nbsp;{{{vnd.sun.star.script:Standard.myModule.myMacro?language=Basic&location=document}}}<br />designates the {{{myMacro}}} Function or Sub in the {{{myModule}}} module of the Basic {{{Standard}}} library belonging to the current document.<br />Note that ~Access2Base does not check the validity of the provided argument. *Use an empty string ("") to remove the current setting. *The dialog must at least be [[started|Start]] to change the script assigned to an event. *The new dialog events settings will ''NOT'' be saved in the dialog library after its closure. @@ -10506,7 +10495,7 @@ The last column indicates how the event is displayed in the dialog properties bo !!!Example <<tiddler "On dialog event example">></pre> </div> -<div title="On (form event)" creator="Jean-Pierre Ledure" modifier="Jean-Pierre Ledure" created="201611300920" modified="201710291453" tags="Properties" changecount="10"> +<div title="On (form event)" creator="Jean-Pierre Ledure" modifier="YourName" created="201611300920" modified="202605041434" tags="Properties" changecount="11"> <pre>The //on ... form events// properties set or return the Basic script function which is executed when the event occurs. !!!Applies to ... The list below details which event is applicable either on [[forms|Form]] or on [[subforms|SubForm]]. In fact, there is no difference. @@ -10536,7 +10525,7 @@ The last column indicates how the event is displayed in the form or (subform) co !!!Returned vales / Arguments {{{String}}} !!!Remarks -*The //value// argument or the returned value is a string pointing to a Basic (or other ...) subroutine: see the [[Scripting Framework URI Specification|https://wiki.openoffice.org/wiki/Documentation/DevGuide/Scripting/Scripting_Framework_URI_Specification]] for more info.<br />E.g.<br />&nbsp;&nbsp;&nbsp;&nbsp;{{{vnd.sun.star.script:Standard.myModule.myMacro?language=Basic&location=document}}}<br />designates the {{{myMacro}}} Function or Sub in the {{{myModule}}} module of the Basic {{{Standard}}} library belonging to the current document.<br />Note that ~Access2Base does not check the validity of the provided argument. +*The //value// argument or the returned value is a string pointing to a Basic (or other ...) subroutine: see the [[Scripting Framework URI Specification|https://wiki.documentfoundation.org/Documentation/DevGuide/Scripting_Framework#Scripting_Framework_URI_Specification]] for more info.<br />E.g.<br />&nbsp;&nbsp;&nbsp;&nbsp;{{{vnd.sun.star.script:Standard.myModule.myMacro?language=Basic&location=document}}}<br />designates the {{{myMacro}}} Function or Sub in the {{{myModule}}} module of the Basic {{{Standard}}} library belonging to the current document.<br />Note that ~Access2Base does not check the validity of the provided argument. *Use an empty string ("") to remove the current setting. *The new form events settings will ''NOT'' be saved in the form after its closure. !!!Error messages @@ -10615,7 +10604,7 @@ Dim ocSubForm As Object ocSubForm.OnErrorOccurred = "" //}}}</pre> </div> -<div title="OnAction" creator="Jean-Pierre Ledure" modifier="Jean-Pierre Ledure" created="201507251218" modified="201507251404" tags="Properties" changecount="16"> +<div title="OnAction" creator="Jean-Pierre Ledure" modifier="YourName" created="201507251218" modified="202605041435" tags="Properties" changecount="17"> <pre>The //~OnAction// property gets or sets the name of a Basic procedure or a menu-command that will run when the user clicks on a [[CommandBarControl]]. !!!Applies to ... | !Object |!Description | @@ -10630,7 +10619,7 @@ The argument may be either an {{{Integer/Long}}} or a {{{String}}} The //value// argument can be 1 out of 3 types: *any valid argument of the [[RunCommand]] action; *any valid command with the leftmost characters = ''{{{".uno:"}}}''; -*or a string pointing to a Basic (or other ...) subroutine: see the [[Scripting Framework URI Specification|https://wiki.openoffice.org/wiki/Documentation/DevGuide/Scripting/Scripting_Framework_URI_Specification]] for more info.<br />E.g.<br />&nbsp;&nbsp;&nbsp;&nbsp;{{{vnd.sun.star.script:Standard.myModule.myMacro?language=Basic&location=document}}}<br />designates the {{{myMacro}}} Function or Sub in the {{{myModule}}} module of the Basic {{{Standard}}} library belonging to the current document. +*or a string pointing to a Basic (or other ...) subroutine: see the [[Scripting Framework URI Specification|https://wiki.documentfoundation.org/Documentation/DevGuide/Scripting_Framework#Scripting_Framework_URI_Specification]] for more info.<br />E.g.<br />&nbsp;&nbsp;&nbsp;&nbsp;{{{vnd.sun.star.script:Standard.myModule.myMacro?language=Basic&location=document}}}<br />designates the {{{myMacro}}} Function or Sub in the {{{myModule}}} module of the Basic {{{Standard}}} library belonging to the current document. !!!Error messages |Property '~OnAction' not applicable in this context | |Value '...' is invalid for property '~OnAction | @@ -11176,11 +11165,11 @@ Make it later visible ofForm.Visible = True //}}}</pre> </div> -<div title="OptionGroup" modifier="Jean-Pierre Ledure" created="201112271348" modified="201405251535" tags="Objects" changecount="6"> +<div title="OptionGroup" modifier="YourName" created="201112271348" modified="202605041426" tags="Objects" changecount="7"> <pre>{{firstletter{ @@color:#930;A@@ }}}n //~OptionGroup// [[object|Object Model]] represents a set of [[RadioButton]] controls in a [[form|Form]], a [[subform|SubForm]] or a [[dialog|Dialog]], having in common the characteristic that selecting one button deselects automatically all the others. -Most properties can be set at //~RadioButton// level and individually for each of them. However the key reason for having introduced //~OptionGroups// (an artificial entity with no equivalent in //~OpenOffice/~LibreOffice//) in //~Access2Base// is to give the programmer an easy mean to determine which //~RadioButton// is currently selected. +Most properties can be set at //~RadioButton// level and individually for each of them. However the key reason for having introduced //~OptionGroups// (an artificial entity with no equivalent in //~LibreOffice//) in //~Access2Base// is to give the programmer an easy mean to determine which //~RadioButton// is currently selected. !!!How to identify the set of //~RadioButtons// constituting an //~OptionGroup// ? | !Container | !Identification of the //~OptionGroup// |!Name of the //~OptionGroup// | |[[Form]]<br />[[SubForm]] |All the //~RadioButtons// sharing the same name |That unique name | @@ -12208,10 +12197,10 @@ The //queryname// argument is not case sensitive. <<tiddler "Datadef example">> </pre> </div> -<div title="Quit" modifier="YourName" created="201112311418" modified="201907221414" tags="Actions" changecount="6"> +<div title="Quit" modifier="YourName" created="201112311418" modified="202605041425" tags="Actions" changecount="8"> <pre>{{firstletter{ @@color:#930;T@@ - }}}he //Quit// action quits //~OpenOffice/~LibreOffice Base//. You can select one of several options for saving the database document before quitting. + }}}he //Quit// action quits //~LibreOffice Base//. You can select one of several options for saving the database document before quitting. <<tiddler "ApplyDoCmd">> !!!Syntax {{{[DoCmd.]Quit(}}}//{{{Option}}}//{{{)}}} @@ -12224,7 +12213,7 @@ Const acQuitSaveAll = 1 Const acQuitSaveNone = 2 //}}} !!!Remarks -*The Quit action has the same effect as clicking Exit on the File menu in the //~OpenOffice/~LibreOffice Base// window. +*The Quit action has the same effect as clicking Exit on the File menu in the //~LibreOffice Base// window. *In //~MSAccess// the //Quit// method is linked to the [[Application]] object. *The Quit action is not available from PYTHON scripts. *The //Quit// action must not be triggered from a [[standalone form|Standalone Forms]]. @@ -12239,14 +12228,14 @@ If Yes pressed, the application will close. //}}} </pre> </div> -<div title="RadioButton" modifier="Jean-Pierre Ledure" created="201112271447" modified="201405300636" tags="[[Special controls]]" changecount="4"> +<div title="RadioButton" modifier="YourName" created="201112271447" modified="202605041522" tags="[[Special controls]]" changecount="5"> <pre>{{firstletter{ @@color:#930;A@@ }}} //~RadioButton// [[control|Control]] enables the user to choose among one of several options. Radio buttons are grouped in the sense that selecting one deselects all the others. >In [[forms|Form]] and [[subforms|SubForm]] all //~RadioButtons// in a group share the same name (Name property). >In [[dialogs|Dialog]] the //~RadioButtons// constituting a group have contiguous [[TabIndex]] properties. -Usually, //~RadioButtons// are grouped in a group box. In //AOO/~LibO// group boxes play only a graphical role. +Usually, //~RadioButtons// are grouped in a group box. In //~LibreOffice// group boxes play only a graphical role. !!!Specific properties of radio buttons | !Property | !Read only | !Description | |[[Name]] | Y |Specifies the exact name of the [[OptionGroup]]. | @@ -12602,7 +12591,7 @@ Dim ofForm As Object ofForm.Refresh() //}}}</pre> </div> -<div title="ReleaseNotes" modifier="YourName" created="201203171447" modified="201907131617" tags="NoTag" changecount="70"> +<div title="ReleaseNotes" modifier="YourName" created="201203171447" modified="202605041544" tags="NoTag" changecount="74"> <pre>| !Release | !Date | !Description | !Embedded in ... | | 6.4.0 | 01/2020 |Support of the ~Access2Base API from Python scripts. | ~LibreOffice 6.4 | | 6.3.0 | 07/2019 |Bug fixing and code reviews for more robustness. | ~LibreOffice 6.3 | @@ -12615,25 +12604,25 @@ Dim ofForm As Object | 1.4.0 | 01/2016 |The [[OutputTo]] action has been significantly enhanced. Output in one single Basic statement the content of a table or of a SELECT query into<br />- an html file. The data table can be embedded in a template file. Examples of table styling to make the output more attractive are available in this [[tutorial|OutputToStyling]];<br />- a Calc spreadsheet<br />- a text/csv file<br />The [[OpenQuery]] action is now applicable to action queries. | ~LibreOffice 5.1 | | 1.3.0 | 07/2015 |New [[CommandBars]] collection of [[CommandBar]] objects:<br />Easily show/hide menu bar, status bar, toolbars and toolbar elements. | ~LibreOffice 5.0 | | 1.2.0 | 01/2015 |All the methods which can meaningfully be used without a database connection (error handling, dialogs manipulations, status bar and window handling, commands launch, ...) have been reviewed and documented as acceptable before any //~OpenConnection// call.<br />A [[CloseConnection]] method has been added to allow freeing resources.<br />To pass values from one open document to another, use the [[TempVars]] collection of [[TempVar]] objects.<br />New properties for forms and subforms: [[OrderBy]] and [[OrderByOn]].<br />Additionally the new [[ApplyFilter]] and [[SetOrderBy]] actions are applicable on table or query datasheets, and on forms or subforms as well. Also the [[GoToRecord]] action has been extended to table and query datasheets.<br />Bug fixes and internal redesigns. | ~LibreOffice 4.4 | -| 1.1.0 | 07/2014 |The ~Access2Base library can be run to access a database defined in any form defined in any AOO/~LibO document. Now the [[CurrentDb]] method may be associated with a form object, not only with the root class.<br />The [[OpenDatabase]] method allows any AOO/~LibO document or any Basic macro to get access to tables stored in any database.<br />The [[CopyObject]] (new) action copies query definitions and/or table d0000000efinitions and data.<br />Creation of table and fields without SQL with the [[CreateTableDef]], [[CreateField]] and [[Add]] methods.<br />The new [[GetRows]] method loads a given number of records from a recordset in a Basic array.<br />[[RunSQL]], [[OpenSQL]], database functions have been extended to be run from a database object, not only as a command.<br />New [[GetHiddenAttribute]] and [[SetHiddenAttribute]] actions hide or show any //AOO/~LibO// document or //Base// object. [[SelectObject]] scope has been exte nded accordingly.<br />The [[Description]] property of a //~TableDef// is writable.<br />Addition of the [[SelStart]], [[SelLength]] and [[SelText]] properties for text controls. | ~LibreOffice 4.3 | -| 1.0.0 | 12/2013 |Inclusion of ~Access2Base code into the ~LibreOffice 4.2 build.<br />Code stabilisation, robustness improvements (naming collisions risks, error handler, ...)<br />Toggle sidebar in [[RunCommand]]<br/>Support of ~LibreOffice 4.2 new internal format for Time fields (compatibility with ~OpenOffice and older versions of ~LibreOffice is ensured). | ~LibreOffice 4.2 | +| 1.1.0 | 07/2014 |The ~Access2Base library can be run to access a database defined in any form defined in any ~LibreOffice document. Now the [[CurrentDb]] method may be associated with a form object, not only with the root class.<br />The [[OpenDatabase]] method allows any ~LibreOffice document or any Basic macro to get access to tables stored in any database.<br />The [[CopyObject]] (new) action copies query definitions and/or table d0000000efinitions and data.<br />Creation of table and fields without SQL with the [[CreateTableDef]], [[CreateField]] and [[Add]] methods.<br />The new [[GetRows]] method loads a given number of records from a recordset in a Basic array.<br />[[RunSQL]], [[OpenSQL]], database functions have been extended to be run from a database object, not only as a command.<br />New [[GetHiddenAttribute]] and [[SetHiddenAttribute]] actions hide or show any //~LibreOffice// document or //Base// object. [[SelectObject]] scope has been extended accordingly.<br />The [[Description]] property of a //~TableDef// is writable.<br />Addition of the [[SelStart]], [[SelLength]] and [[SelText]] properties for text controls. | ~LibreOffice 4.3 | -e ... etc. - the rest is truncated
