22 #include <osl/diagnose.h>
24 #include <com/sun/star/sdbc/DataType.hpp>
42 return aContent.replaceAll(OUStringChar(
DB_DELIM),
".");
80 OSL_ENSURE(
m_nRefCnt > 0,
"RefCount < 0!");
86 for (
auto const & pFieldType : *
GetDoc()->getIDocumentFieldsAccess().GetFieldTypes())
88 if (pFieldType.get() ==
this)
137 std::vector<SwFormatField*> vFields;
139 for(
auto pFormatField: vFields)
161 m_bIsInBodyText(true),
162 m_bValidValue(false),
163 m_bInitialized(false)
186 if (rExpansion.startsWith(
"<") && rExpansion.endsWith(
">"))
188 const OUString sColumn( rExpansion.copy( 1, rExpansion.getLength() - 2 ) );
190 static_cast<SwDBFieldType *>(
GetTyp())->GetColumnName() ))
217 return std::unique_ptr<SwField>(pTmp.release());
224 OUString sContent( rDBName.getToken(0,
DB_DELIM) );
226 if (sContent.getLength() > 1)
256 double &aNumber, sal_Int32 nColumnType,
SwDBField *pField )
258 bool bValidValue =
false;
260 if( DBL_MAX != aNumber )
262 if( DataType::DATE == nColumnType || DataType::TIME == nColumnType ||
263 DataType::TIMESTAMP == nColumnType )
265 Date aStandard( 1, 1, 1900 );
267 aNumber += (aStandard - pDocFormatter->
GetNullDate());
292 pField->
SetValue(aString.isEmpty() ? 0 : 1);
294 aNumber = aString.isEmpty() ? 0 : 1;
314 sal_uInt32 nFormat = 0;
317 OUString aColNm( static_cast<SwDBFieldType*>(
GetTyp())->GetColumnName() );
328 sal_Int32 nColumnType = nValue == DBL_MAX
334 if( DBL_MAX != nValue )
367 rAny <<= static_cast<sal_Int32>(
GetFormat());
376 OSL_FAIL(
"illegal property");
386 if( *o3tl::doAccess<bool>(rAny) )
395 if(!(rAny >>= bVisible))
406 std::vector<SwFormatField*> vFields;
407 pType->GatherFields(vFields,
false);
408 for(
auto pFormatField: vFields)
410 SwTextField* pTextField = pFormatField->GetTextField();
411 if(pTextField && static_cast<SwDBField*>(pFormatField->GetField()) ==
this)
434 OSL_FAIL(
"illegal property");
515 if(!(rAny >>= bVisible))
549 return std::make_unique<SwDBNextSetFieldType>();
555 const OUString& rCond,
571 return std::unique_ptr<SwField>(pTmp.release());
633 return std::make_unique<SwDBNumSetFieldType>();
637 const OUString& rCond,
638 const OUString& rDBNum,
653 std::unique_ptr<SwDBNumSetField> pTmp(
new SwDBNumSetField(static_cast<SwDBNumSetFieldType*>(
GetTyp()),
657 return std::unique_ptr<SwField>(pTmp.release());
668 pMgr->
ToRecordId(std::max(static_cast<sal_uInt16>(
m_aPar2.toInt32()), sal_uInt16(1))-1);
725 m_aPar2 = OUString::number(nVal);
748 return std::make_unique<SwDBNameFieldType>(
m_pDoc);
770 return std::unique_ptr<SwField>(pTmp.release());
790 return std::make_unique<SwDBSetNumberFieldType>();
821 std::unique_ptr<SwDBSetNumberField> pTmp(
826 return std::unique_ptr<SwField>(pTmp.release());
835 rAny <<= static_cast<sal_Int16>(
GetFormat());
855 if(nSet < css::style::NumberingType::NUMBER_NONE )
Instances of SwFields and those derived from it occur 0 to n times.
virtual bool QueryValue(css::uno::Any &rVal, sal_uInt16 nWhich) const override
const ::utl::TransliterationWrapper & GetAppCmpStrIgnore()
void ChgValue(double d, bool bVal)
For calculations in expressions.
virtual std::unique_ptr< SwFieldType > Copy() const override
virtual bool QueryValue(css::uno::Any &rVal, sal_uInt16 nWhich) const override
LanguageType GetLanguage() const
Language at field position.
static bool FormatValue(SvNumberFormatter const *pDocFormatter, OUString const &aString, sal_uInt32 nFormat, double &aNumber, sal_Int32 nColumnType, SwDBField *pField=nullptr)
sal_uInt32 GetFormat() const
Query parameters for dialog and for BASIC.
SvNumberFormatter * GetNumberFormatter(bool bCreate=true)
const SwExtendedSubType SUB_INVISIBLE
Invisible.
virtual bool PutValue(const css::uno::Any &rVal, sal_uInt16 nWhich) override
bool IsInitialized() const
virtual OUString GetPar2() const override
get condition
Base class of all fields.
virtual SwFieldType * ChgTyp(SwFieldType *) override
Set a new type.
OUString m_sName
only used in ::GetName() !
#define FIELD_PROP_USHORT1
virtual void SetSubType(sal_uInt16 nType) override
virtual std::unique_ptr< SwField > Copy() const override
SwDBNameFieldType(SwDoc *)
virtual std::unique_ptr< SwField > Copy() const override
const ContentProperties & rData
const SwDBData & GetDBData() const
virtual std::unique_ptr< SwField > Copy() const override
static OUString lcl_DBSeparatorConvert(const OUString &aContent)
replace database separator by dots for display
OUString m_sFieldCode
contains Word's field code
virtual void SetPar1(const OUString &rStr) override
set LogDBName
SwDBNumSetField(SwDBNumSetFieldType *, const OUString &rCond, const OUString &rDBNum, const SwDBData &rDBData)
virtual bool PutValue(const css::uno::Any &rVal, sal_uInt16 nWhich) override
The root element of a Writer document layout.
virtual std::unique_ptr< SwFieldType > Copy() const override
void GatherFields(std::vector< SwFormatField * > &rvFormatFields, bool bCollectOnlyInDocNodes=true) const
virtual OUString GetPar1() const override
get condition
#define FIELD_PROP_FORMAT
virtual std::unique_ptr< SwField > Copy() const override
IDocumentFieldsAccess const & getIDocumentFieldsAccess() const
SwDBFieldType(SwDoc *pDocPtr, const OUString &rColumnName, const SwDBData &rDBData)
virtual OUString ExpandImpl(SwRootFrame const *pLayout) const override
virtual void QueryValue(css::uno::Any &rVal, sal_uInt16 nWhich) const override
virtual OUString GetFieldName() const override
get name or content
const BorderLinePrimitive2D *pCandidateB assert(pCandidateA)
virtual void SetSubType(sal_uInt16 nType) override
void SetDBData(const SwDBData &rDBData)
void Evaluate(const SwDoc &)
OUString FormatNumber(sal_uInt32 nNum, SvxNumType nFormat, LanguageType nLang)
expand numbering
sal_Int32 GetColumnType(const OUString &rDBName, const OUString &rTableName, const OUString &rColNm)
virtual std::unique_ptr< SwFieldType > Copy() const override
constexpr OUStringLiteral aData
SwDBSetNumberField(SwDBSetNumberFieldType *, const SwDBData &rDBData, sal_uInt32 nFormat=0)
virtual bool QueryValue(css::uno::Any &rVal, sal_uInt16 nWhich) const override
virtual OUString ExpandImpl(SwRootFrame const *pLayout) const override
virtual bool QueryValue(css::uno::Any &rVal, sal_uInt16 nWhich) const override
SwDBData const & GetDBData()
virtual bool PutValue(const css::uno::Any &rVal, sal_uInt16 nWhich) override
virtual ~SwDBField() override
virtual bool QueryValue(css::uno::Any &rVal, sal_uInt16 nWhich) const override
void Evaluate()
Get the evaluation via DBManager string.
bool GetMergeColumnCnt(const OUString &rColumnName, LanguageType nLanguage, OUString &rResult, double *pNumber)
SwDBNextSetField(SwDBNextSetFieldType *, const OUString &rCond, const SwDBData &rDBData)
void SetFormat(sal_uInt32 const nSet)
virtual std::unique_ptr< SwFieldType > Copy() const override
virtual OUString ExpandImpl(SwRootFrame const *pLayout) const override
virtual SwFieldType * ChgTyp(SwFieldType *) override
Set a new type.
virtual const SwFieldTypes * GetFieldTypes() const =0
SwDBNameInfField(SwFieldType *pTyp, const SwDBData &rDBData, sal_uInt32 nFormat=0)
static sal_uLong GetColumnFormat(css::uno::Reference< css::sdbc::XDataSource > const &xSource, css::uno::Reference< css::sdbc::XConnection > const &xConnection, css::uno::Reference< css::beans::XPropertySet > const &xColumn, SvNumberFormatter *pNFormatr, LanguageType nLanguage)
virtual OUString ExpandImpl(SwRootFrame const *pLayout) const override
void InitContent()
Evaluation for header and footer.
void Evaluate(const SwDoc &)
virtual OUString GetName() const override
Only in derived classes.
virtual bool PutValue(const css::uno::Any &rVal, sal_uInt16 nWhich) override
SwFieldType * GetTyp() const
bool ToRecordId(sal_Int32 nSet)
virtual bool QueryValue(css::uno::Any &rVal, sal_uInt16 nWhich) const override
Fields containing values that have to be formatted via number formatter.
virtual std::unique_ptr< SwField > Copy() const override
virtual void PutValue(const css::uno::Any &rVal, sal_uInt16 nWhich) override
sal_uInt32 GetSelectedRecordId(const OUString &rDataSource, const OUString &rTableOrQuery, sal_Int32 nCommandType=-1)
virtual sal_uInt16 GetSubType() const override
void SetExpansion(const OUString &rStr)
Current text.
const SwDBData & GetDBData() const
DBName.
virtual void NotifyContentChange(SwFormatField &rFormatField)
bool PutString(const OUString &)
virtual ~SwDBFieldType() override
const SwExtendedSubType SUB_OWN_FMT
SwDBField: Don't accept formatting from database.
virtual OUString GetFieldName() const
get name or content
virtual bool PutValue(const css::uno::Any &rVal, sal_uInt16 nWhich) override
virtual OUString GetPar1() const override
Get name.
virtual OUString ExpandImpl(SwRootFrame const *pLayout) const override
bool IsDataSourceOpen(const OUString &rDataSource, const OUString &rTableOrQuery, bool bMergeShell)
check if a data source is open
void Evaluate(const SwDoc &)
virtual void SetPar2(const OUString &rStr) override
set condition
virtual void SetValue(const double &rVal)
virtual void SetPar1(const OUString &rStr) override
set condition
SwDBField(SwDBFieldType *, sal_uInt32 nFormat=0)
OUString ExpandValue(const double &rVal, sal_uInt32 nFormat, LanguageType nLng) const
virtual std::unique_ptr< SwFieldType > Copy() const override
virtual double GetValue() const
virtual OUString GetFieldName() const override
get name or content
SwDBManager * GetDBManager() const
virtual void RemoveFieldType(size_t nField)=0
virtual bool PutValue(const css::uno::Any &rVal, sal_uInt16 nWhich) override
SwDBNameField(SwDBNameFieldType *, const SwDBData &rDBData)
virtual sal_uInt16 GetSubType() const override
#define FIELD_PROP_SHORT1
void ToNextRecord(const OUString &rDataSource, const OUString &rTableOrQuery)
virtual OUString GetPar1() const override
get LogDBName