Description: I originally posted this to https://forum.openoffice.org/en/forum/viewtopic.php?f=47&t=95590 Using the OpenRecordset to AddNew a character type field (char or varchar) will produce an error with Firebird. This has been tested on Debian Linux 4.9 with LO 6.1.3 and Win10 with LO 6.1.1 with the same results. Attached is a working HSQLDB and not working Firebird example with the same code. Steps to Reproduce: For the Firebird database the following code errors with the .Fields().Value line when it tries to setValue(). oRec = CurrentDb().OpenRecordset("char_pkey") oRec.AddNew oRec.Fields("test").Value = "abcd" oRec.Update oRec.mClose I debugged the Access2Base code stepping into the following modules. Line 704 in _PropertySet() fails because _Precision is set to 0 so any length character field fails on error length. That is not the error reported on line 776 because the problem occurs earlier. _Precision is a private variable in the module but is not set to a value anywhere and its only use is on line 704 below with the 0 initialization value. When I run the HSQLDB.odb example the _Precision variable has a value of 2147483647 (0x7FFFFFFF) so there may be a difference with initialization? REM Access2Base:Field Module 17 Private _Precision As Long 127 Property Let Value(ByVal pvValue As Variant) 128 Call _PropertySet("Value", pvValue) 129 End Property ' Value (set) 623 Private Function _PropertySet(ByVal psProperty As String, ByVal pvValue As Variant) As Boolean 655 Case UCase("Value") 664 Select Case Column.Type 702 Case .CHAR, .VARCHAR, .LONGVARCHAR, .CLOB 703 If Not Utils._CheckArgument(pvValue, iArgNr, vbString, , False) Then Goto Trace_Error_Value 704* If Len(pvValue) > _Precision Then Goto Trace_Error_Length 705 Column.updateString(pvValue) ' vbString Watch Variables _Precision = 0 pvValue = "abcd" cstThisSub = "Field.setValue" iArgNr = 1 psProperty = "Value" Actual Results: Error #12 variable not defined but the error actually occurs at line 704 in Access2Base Field module. Expected Results: The string length is acceptable and should be written to the table without error. Reproducible: Always User Profile Reset: No OpenGL enabled: Yes Additional Info: Successfully write to table the same as the RunSQL below. The CurrentDB().RunSQL() works for both HSQLDB and Firebird CurrentDb().RunSQL("insert into ""char_pkey"" Values ( 'abcd' )") Version: 6.1.3.2 Build ID: 1:6.1.3-1 CPU threads: 8; OS: Linux 4.9; UI render: default; VCL: gtk3; Locale: en-US (en_US.UTF-8); Calc: group threaded Version: 6.1.1.2 (x64) Build ID: 5d19a1bfa650b796764388cd8b33a5af1f5baa1b CPU threads: 4; OS: Windows 10.0; UI render: default; Locale: en-US (en_US); Calc: group threaded
Created attachment 146626 [details] Error Message
Created attachment 146627 [details] HSQLDB file that works correctly
Created attachment 146628 [details] Firebird file that produces error
Test with Ubuntu 18.04 and LibreOffice 6.2Alpha1 The library is not officially supported with Firebird until LibreOffice 6.2 is my understanding. Using 6.2 the routine worked as expected with Firebird embedded file.
Went back and checked and library code was checked into the 6.2 release adding Firebird support officially. Setting this to NOTABUG because of the version number difference and add the developer to CC just in case I misunderstood the situation.
I just tested under Ubuntu 16.04 with LO 6.2alpha1 and confirmed the bug is fixed in that version. Thanks Tony
*** This bug has been marked as a duplicate of bug 118680 ***