Kaydet (Commit) 9b6906bb authored tarafından Lionel Elie Mamane's avatar Lionel Elie Mamane

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: 's avatarLionel Elie Mamane <lionel@mamane.lu>
üst 0fdf02b8
......@@ -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-->
......
......@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment