[Libreoffice-commits] core.git: connectivity/registry svx/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Thu Oct 25 08:03:40 UTC 2018


 connectivity/registry/firebird/org/openoffice/Office/DataAccess/Drivers.xcu |    5 +++
 svx/source/fmcomp/gridcell.cxx                                              |   13 +++++++---
 2 files changed, 15 insertions(+), 3 deletions(-)

New commits:
commit 9b6906bbf3cdc3fc100339b39755bbbe02594e4f
Author:     Lionel Elie Mamane <lionel at mamane.lu>
AuthorDate: Wed Oct 24 18:13:56 2018 +0200
Commit:     Lionel Elie Mamane <lionel at mamane.lu>
CommitDate: Thu Oct 25 10:03:13 2018 +0200

    tdf#120713 correctly handle boolean values in filters
    
    This commit has two parts:
     - Hardcode the correct BooleanComparisonMode in the firebird-sdbc driver
       (this fixes on Firebird databases, among others, the AutoFilter for bools)
     - Generic to all DBMS, have the "form-based filter" obey the BooleanComparisonMode
    
    Change-Id: Ib14e6c3d5cb773ae1f972840f8b53062f0224396
    Reviewed-on: https://gerrit.libreoffice.org/62319
    Tested-by: Jenkins
    Reviewed-by: Lionel Elie Mamane <lionel at mamane.lu>

diff --git a/connectivity/registry/firebird/org/openoffice/Office/DataAccess/Drivers.xcu b/connectivity/registry/firebird/org/openoffice/Office/DataAccess/Drivers.xcu
index 03896aff4412..586264183b60 100644
--- a/connectivity/registry/firebird/org/openoffice/Office/DataAccess/Drivers.xcu
+++ b/connectivity/registry/firebird/org/openoffice/Office/DataAccess/Drivers.xcu
@@ -66,6 +66,11 @@
             <value>true</value>
           </prop>
         </node>
+        <node oor:name="BooleanComparisonMode" oor:op="replace">
+          <prop oor:name="Value" oor:type="xs:int">
+            <value>2</value>
+          </prop>
+        </node>
       </node><!--Properties-->
       <node oor:name="Features">
       </node><!--Features-->
diff --git a/svx/source/fmcomp/gridcell.cxx b/svx/source/fmcomp/gridcell.cxx
index da44c4e55591..ae0690c23c4f 100644
--- a/svx/source/fmcomp/gridcell.cxx
+++ b/svx/source/fmcomp/gridcell.cxx
@@ -3100,20 +3100,27 @@ void DbFilterField::UpdateFromField(const Reference< XColumn >& /*_rxField*/, co
 IMPL_LINK_NOARG(DbFilterField, OnClick, VclPtr<CheckBox>, void)
 {
     TriState eState = static_cast<CheckBoxControl*>(m_pWindow.get())->GetBox().GetState();
-    OUString aText;
+    OUStringBuffer aTextBuf;
+
+    Reference< XRowSet > xDataSourceRowSet(
+                    Reference< XInterface >(*m_rColumn.GetParent().getDataSource()), UNO_QUERY);
+    Reference< XConnection >  xConnection(getConnection(xDataSourceRowSet));
+    const sal_Int32 nBooleanComparisonMode = ::dbtools::DatabaseMetaData( xConnection ).getBooleanComparisonMode();
 
     switch (eState)
     {
         case TRISTATE_TRUE:
-            aText = "1";
+            ::dbtools::getBooleanComparisonPredicate("", true, nBooleanComparisonMode, aTextBuf);
             break;
         case TRISTATE_FALSE:
-            aText = "0";
+            ::dbtools::getBooleanComparisonPredicate("", false, nBooleanComparisonMode, aTextBuf);
             break;
         case TRISTATE_INDET:
             break;
     }
 
+    const OUString aText(aTextBuf.makeStringAndClear());
+
     if (m_aText != aText)
     {
         m_aText = aText;


More information about the Libreoffice-commits mailing list