I am serving MYSQL on my Local but Remote Server to a number of terminals set up to connect a Libre Base front-end via JDBC The server is a Ubuntu 14.04 asterisk box serving serving MYSQL to the asterisk that works well and I have only recently added the Database to serve the Libre Base. mysql which it does using the java JDBC Each user can build their form document without any issues, however, It seems as if all sessions are merged when delivering reports, as in whoever has the lock , that's the report MYSQL serves, in other words user "A" gets user "B" reports if user "B" was the last to do something. "SHOW PROCESSLIST;" indicates different thread-Id's for each user The MYSQL started off as MyISAM then I converted to InnoDB All users have their own copy of the Base on their terminal with their own user name I have tried on a number of Macro's with the same results I created another test server,serving MariaDB with the same results here are the macros I have used : First Macro Sub EVA_Report(event) oButton = event.source.Model sReportname = oButton.tag oReport = ThisDatabaseDocument.ReportDocuments.GetByName(sReportName) oReport.Open end sub Second Macro Sub CreateReportCalledfromButton(oEvent as object) dim oCreateButton,oForm dim oConnection,oReportsDocuments oCreateButton=oEvent.source.model oForm=oCreateButton.parent oConnection=oForm.Activeconnection oReportsDocuments=oConnection.parent.DatabaseDocument.ReportDocuments openReport(oConnection, oReportsDocuments, oCreateButton.tag , oForm.Filter) End Sub Function openReport(oConnection, oReportsDocuments,aReportName,sFilter) as object Dim mPrintopts1() dim aProp(3) as new com.sun.star.beans.PropertyValue dim aProp2 dim oReportDesign aProp(1).Name = "ActiveConnection" aProp(1).Value = oConnection aProp(0).Name = "Hidden" aProp(0).Value = true aProp(2).Name = "OpenMode" aProp(2).Value = "openDesign" let aProp2=aProp oReportDesign=oReportsDocuments.loadComponentFromURL(aReportName ,"",0,aProp()) aProp2(0).Value = TRUE aProp2(2).Value = "open" oReportsDocuments.loadComponentFromURL(aReportName ,_blank,0,aProp2()).Print(mPrintopts1()) End Function
@Andy : What are the privileges set in your JDBC driver ? Which tables can each user see when they open the ODB file ? Which version of the JDBC driver are you using ? There are/were some known issues around JDBC driver privileges depending on LO version, and JDBC driver version, as I seem to recall.
@Andy : please test with more recent production versions of LibreOffice as well, so that we can have your feedback. LO42 is EOL (although unfortunately not necessarily from the distrib's point of view).
(In reply to Alex Thurgood from comment #2) > @Andy : please test with more recent production versions of LibreOffice as > well, so that we can have your feedback. LO42 is EOL (although unfortunately > not necessarily from the distrib's point of view). Hi Alex tested with : LibreBase 5.0.1.2 I still get the same problem LibreBase 5.0.2.2 I get Macro Problems (also I see that the Native MYSQL connection has been taken out)
(In reply to Alex Thurgood from comment #1) > @Andy : > What are the privileges set in your JDBC driver ? > Which tables can each user see when they open the ODB file ? > Which version of the JDBC driver are you using ? > > There are/were some known issues around JDBC driver privileges depending on > LO version, and JDBC driver version, as I seem to recall. 1. Hi Alex, I do not know where to set privileges for the JDBC driver, however each user has full rights to the Database. 2. The users can see the Full Database set to Tables should they go to the "Tables"section on the left 3. I have installed the lastest Oracle 1.8.0_60 java and I have pointed the class path to :/usr/share/java/mysql-connector-java-5.1.32.jar (hope I haven't made a fool of myself here . . )
Thanks Andy. Setting back to unconfirmed.
I'm afraid this is outside of my knowledge, so have reset to unconfirmed, added a few other base users on CC, hopefully they might be able to find time to look at your problem and give some advice.
I don't understand the bug description. What do you mean: user "A" gets user "B" reports if user "B" was the last to do something. If you mean the data shown by the reports, if they connect to the same database on the same server, well, yes, user A sees the changes to the data made by user B. This is by design of a multi-user database. This is not a bug. If you mean that they each change the LibreOffice report *definitions*, but A sees changes (to report *definitions*) made by user B, then I'm very surprised, and I'd like to see detailed reproduction steps with odb and SQL dumps that you would attach here.
Could be the reporter will have a report, which is special for the user with the actual CONNECTION_ID(). Or should it be filtered by the USER()? This isn't a Base-problem. This must be defined by the query, which defines the data for the report.
@Andy : could you try and answer Lionel's questions in comment 7 ? Setting NEEDINFO
I am at fault here, I solved this issue a while ago and thought I published the solution wherever I requested help. (SORRY Community ) Here is a link to a detailed explanation : https://forum.openoffice.org/en/forum/viewtopic.php?f=13&t=79196 the actual problem is the method used to filter the report, Villeroy's filter method of using a table that contains the last filter request is great , but not suited to multi-users. the every next user to use the table firstly removes the information you left in the table and the leaves his request in the table . hence if you pull your report a second time its pot luck as to what report you get. The solution Is to issue a SQL delete instruction in the macro to clear the Filter Table FIRST , THEN just let the Macro put the Documents filter value back in the Filter Table and pull reports as necessary. I need to say here that this solution solved another problem I was having in the the Filter Table corrupted occasionally on simultaneous use and had multiple entry's in it that had to be cleared manually The macro used is given in the link above with a much more detailed explanation This solution is not elegant but it works