#97230# new interface for ParseContext

This commit is contained in:
Ocke Janssen
2002-09-27 10:26:33 +00:00
parent f7010ef1de
commit a9dcd87448
17 changed files with 1190 additions and 229 deletions

View File

@@ -2,9 +2,9 @@
*
* $RCSfile: predicateinput.cxx,v $
*
* $Revision: 1.2 $
* $Revision: 1.3 $
*
* last change: $Author: oj $ $Date: 2002-09-26 07:59:42 $
* last change: $Author: oj $ $Date: 2002-09-27 11:15:47 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -145,7 +145,7 @@ namespace dbtools
//---------------------------------------------------------------------
OPredicateInputController::OPredicateInputController(
const Reference< XMultiServiceFactory >& _rxORB, const Reference< XConnection >& _rxConnection, const OParseContext* _pParseContext )
const Reference< XMultiServiceFactory >& _rxORB, const Reference< XConnection >& _rxConnection, const IParseContext* _pParseContext )
:m_xORB( _rxORB )
,m_xConnection( _rxConnection )
,m_aParser( m_xORB, _pParseContext )
@@ -235,7 +235,7 @@ namespace dbtools
|| ( DataType::DECIMAL == nType )
)
{
const OParseContext& rParseContext = m_aParser.getContext();
const IParseContext& rParseContext = m_aParser.getContext();
// get the separators for the locale of our parse context
sal_Unicode nCtxDecSep;
sal_Unicode nCtxThdSep;
@@ -309,7 +309,7 @@ namespace dbtools
if ( pParseNode )
{
const OParseContext& rParseContext = m_aParser.getContext();
const IParseContext& rParseContext = m_aParser.getContext();
sal_Unicode nDecSeparator, nThousandSeparator;
getSeparatorChars( rParseContext.getPreferredLocale(), nDecSeparator, nThousandSeparator );
@@ -424,6 +424,9 @@ namespace dbtools
/*************************************************************************
* history:
* $Log: not supported by cvs2svn $
* Revision 1.2 2002/09/26 07:59:42 oj
* #103685# correct index of replaceAt call
*
* Revision 1.1 2002/04/09 14:31:04 fs
* initial checkin - helper class for inputting predicate values
*

View File

@@ -2,9 +2,9 @@
*
* $RCSfile: sqlscan.hxx,v $
*
* $Revision: 1.5 $
* $Revision: 1.6 $
*
* last change: $Author: oj $ $Date: 2002-07-05 07:03:03 $
* last change: $Author: oj $ $Date: 2002-09-27 11:17:00 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -63,9 +63,12 @@
#include <stdarg.h>
#ifndef CONNECTIVITY_IPARSECONTEXT_HXX
#include "connectivity/IParseContext.hxx"
#endif
namespace connectivity
{
class OParseContext;
//==========================================================================
//= OSQLScanner
//==========================================================================
@@ -73,7 +76,7 @@ namespace connectivity
*/
class OSQLScanner
{
const OParseContext* m_pContext; // context for parse, knows all international stuff
const IParseContext* m_pContext; // context for parse, knows all international stuff
::rtl::OString m_sStatement; // statement to parse
::rtl::OUString m_sErrorMessage;
@@ -98,10 +101,10 @@ namespace connectivity
virtual void SQLyyerror(char *fmt);
virtual void output(sal_Int32) { OSL_ASSERT("Internal error in sdblex.l: output not possible"); }
virtual void ECHO(void) { OSL_ASSERT("Internal error in sdblex.l: ECHO not possible"); }
virtual sal_Int32 getInternationalTokenID(const char* sToken) const;
virtual IParseContext::InternationalKeyCode getInternationalTokenID(const char* sToken) const;
// setting the new information before scanning
void prepareScan(const ::rtl::OUString & rNewStatement, const OParseContext* pContext, sal_Bool bInternational);
void prepareScan(const ::rtl::OUString & rNewStatement, const IParseContext* pContext, sal_Bool bInternational);
const ::rtl::OUString& getErrorMessage() const {return m_sErrorMessage;}
::rtl::OString getStatement() const { return m_sStatement; }

View File

@@ -1,7 +1,7 @@
%{
//--------------------------------------------------------------------------
//
// $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/connectivity/source/parse/sqlbison.y,v 1.40 2002-05-14 09:30:32 hr Exp $
// $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/connectivity/source/parse/sqlbison.y,v 1.41 2002-09-27 11:10:30 oj Exp $
//
// Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
//
@@ -9,7 +9,7 @@
// OJ
//
// Last change:
// $Author: hr $ $Date: 2002-05-14 09:30:32 $ $Revision: 1.40 $
// $Author: oj $ $Date: 2002-09-27 11:10:30 $ $Revision: 1.41 $
//
// Description:
//
@@ -3103,7 +3103,8 @@ IMPLEMENT_CONSTASCII_STRING(ERROR_STR_INVALID_COLUMN, "The column \"#\" is unkno
IMPLEMENT_CONSTASCII_STRING(KEY_STR_LIKE, "LIKE");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_NOT, "NOT");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_NULL, "NULL");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_TRUE, "True");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_TRUE, "True");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_FALSE, "False");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_IS, "IS");
IMPLEMENT_CONSTASCII_STRING(KEY_STR_BETWEEN, "BETWEEN");
@@ -3178,9 +3179,9 @@ OParseContext::~OParseContext()
}
//-----------------------------------------------------------------------------
OParseContext::InternationalKeyCode OParseContext::getIntlKeyCode(const ::rtl::OString& rToken) const
IParseContext::InternationalKeyCode OParseContext::getIntlKeyCode(const ::rtl::OString& rToken) const
{
static OParseContext::InternationalKeyCode Intl_TokenID[] =
static IParseContext::InternationalKeyCode Intl_TokenID[] =
{
KEY_LIKE, KEY_NOT, KEY_NULL, KEY_TRUE,
KEY_FALSE, KEY_IS, KEY_BETWEEN, KEY_OR,
@@ -3191,6 +3192,7 @@ OParseContext::InternationalKeyCode OParseContext::getIntlKeyCode(const ::rtl::O
sal_uInt32 nCount = sizeof Intl_TokenID / sizeof Intl_TokenID[0];
for (sal_uInt32 i = 0; i < nCount; i++)
{
::rtl::OString aKey = getIntlKeywordAscii(Intl_TokenID[i]);
if (rToken.equalsIgnoreAsciiCase(aKey))
return Intl_TokenID[i];
@@ -3199,35 +3201,64 @@ OParseContext::InternationalKeyCode OParseContext::getIntlKeyCode(const ::rtl::O
return KEY_NONE;
}
//------------------------------------------------------------------------------
static Locale& impl_getLocaleInstance( )
{
static Locale s_aLocale(
::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "en" ) ),
::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "US" ) ),
::rtl::OUString( )
);
return s_aLocale;
}
//------------------------------------------------------------------------------
void OParseContext::setDefaultLocale( const ::com::sun::star::lang::Locale& _rLocale )
{
impl_getLocaleInstance() = _rLocale;
}
//------------------------------------------------------------------------------
Locale OParseContext::getPreferredLocale( ) const
{
return getDefaultLocale();
}
//------------------------------------------------------------------------------
const Locale& OParseContext::getDefaultLocale()
{
return impl_getLocaleInstance();
}
//------------------------------------------------------------------------------
static Locale& impl_getLocaleInstance( )
{
static Locale s_aLocale(
::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "en" ) ),
::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "US" ) ),
::rtl::OUString( )
);
return s_aLocale;
}
//------------------------------------------------------------------------------
void OParseContext::setDefaultLocale( const ::com::sun::star::lang::Locale& _rLocale )
{
impl_getLocaleInstance() = _rLocale;
}
//------------------------------------------------------------------------------
Locale OParseContext::getPreferredLocale( ) const
{
return getDefaultLocale();
}
//------------------------------------------------------------------------------
const Locale& OParseContext::getDefaultLocale()
{
return impl_getLocaleInstance();
}
//==========================================================================
//= misc
//==========================================================================
@@ -3346,7 +3377,7 @@ OSQLParseNode* OSQLParser::parseTree(::rtl::OUString& rErrorMessage,
if (!m_sErrorMessage.getLength())
m_sErrorMessage = s_pScanner->getErrorMessage();
if (!m_sErrorMessage.getLength())
m_sErrorMessage = m_pContext->getErrorMessage(OParseContext::ERROR_GENERAL);
m_sErrorMessage = m_pContext->getErrorMessage(IParseContext::ERROR_GENERAL);
rErrorMessage = m_sErrorMessage;
@@ -3378,11 +3409,51 @@ OSQLParseNode* OSQLParser::parseTree(::rtl::OUString& rErrorMessage,
}
}
//-----------------------------------------------------------------------------
::rtl::OString OSQLParser::TokenIDToStr(sal_uInt32 nTokenID, const OParseContext* pContext)
::rtl::OString OSQLParser::TokenIDToStr(sal_uInt32 nTokenID, const IParseContext* pContext)
{
::rtl::OString aStr;
if (pContext)
aStr = pContext->getIntlKeywordAscii((OParseContext::InternationalKeyCode)nTokenID);
{
IParseContext::InternationalKeyCode eKeyCode = IParseContext::KEY_NONE;
switch( nTokenID )
{
case SQL_TOKEN_LIKE: eKeyCode = IParseContext::KEY_LIKE; break;
case SQL_TOKEN_NOT: eKeyCode = IParseContext::KEY_NOT; break;
case SQL_TOKEN_NULL: eKeyCode = IParseContext::KEY_NULL; break;
case SQL_TOKEN_TRUE: eKeyCode = IParseContext::KEY_TRUE; break;
case SQL_TOKEN_FALSE: eKeyCode = IParseContext::KEY_FALSE; break;
case SQL_TOKEN_IS: eKeyCode = IParseContext::KEY_IS; break;
case SQL_TOKEN_BETWEEN: eKeyCode = IParseContext::KEY_BETWEEN; break;
case SQL_TOKEN_OR: eKeyCode = IParseContext::KEY_OR; break;
case SQL_TOKEN_AND: eKeyCode = IParseContext::KEY_AND; break;
case SQL_TOKEN_AVG: eKeyCode = IParseContext::KEY_AVG; break;
case SQL_TOKEN_COUNT: eKeyCode = IParseContext::KEY_COUNT; break;
case SQL_TOKEN_MAX: eKeyCode = IParseContext::KEY_MAX; break;
case SQL_TOKEN_MIN: eKeyCode = IParseContext::KEY_MIN; break;
case SQL_TOKEN_SUM: eKeyCode = IParseContext::KEY_SUM; break;
}
aStr = pContext->getIntlKeywordAscii(eKeyCode);
}
if (!aStr.getLength())
{
@@ -3707,7 +3778,7 @@ sal_Int16 OSQLParser::buildStringNodes(OSQLParseNode*& pLiteral)
}
if(SQL_ISRULE(pLiteral,term) || SQL_ISRULE(pLiteral,value_exp_primary))
{
m_sErrorMessage = m_pContext->getErrorMessage(OParseContext::ERROR_INVALID_COMPARE);
m_sErrorMessage = m_pContext->getErrorMessage(IParseContext::ERROR_INVALID_COMPARE);
return 0;
}
return 1;
@@ -3783,6 +3854,7 @@ int OSQLParser::SQLlex()
/*------------------------------------------------------------------------
$Log: not supported by cvs2svn $
Revision 1.34.8.1.2.1 2002/05/10 07:53:46 oj
#98357# enable = TRUE

View File

@@ -2,7 +2,7 @@
//--------------------------------------------------------------------------
//
// $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/connectivity/source/parse/sqlflex.l,v 1.16 2002-03-06 13:07:48 hjs Exp $
// $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/connectivity/source/parse/sqlflex.l,v 1.17 2002-09-27 11:10:30 oj Exp $
//
// Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
//
@@ -10,7 +10,7 @@
// OJ
//
// Last change:
// $Author: hjs $ $Date: 2002-03-06 13:07:48 $ $Revision: 1.16 $
// $Author: oj $ $Date: 2002-09-27 11:10:30 $ $Revision: 1.17 $
//
// Description:
//
@@ -112,7 +112,8 @@ OSQLScanner* xxx_pGLOBAL_SQLSCAN = NULL;
[Aa][Nn][Dd] {SQL_NEW_KEYWORD(SQL_TOKEN_AND); return SQL_TOKEN_AND; }
[Aa][Nn][Yy] {SQL_NEW_KEYWORD(SQL_TOKEN_ANY); return SQL_TOKEN_ANY; }
[Aa][Ss] {SQL_NEW_KEYWORD(SQL_TOKEN_AS); return SQL_TOKEN_AS; }
[Aa][Ss][Cc] {SQL_NEW_KEYWORD(SQL_TOKEN_ASC); return SQL_TOKEN_ASC; }
[Aa][Ss][Cc] {SQL_NEW_KEYWORD(SQL_TOKEN_ASC); return SQL_TOKEN_ASC; }
[Aa][Ss][Cc][Ii][Ii] {SQL_NEW_KEYWORD(SQL_TOKEN_ASC); return SQL_TOKEN_ASCII; }
[Aa][Tt] {SQL_NEW_KEYWORD(SQL_TOKEN_AT); return SQL_TOKEN_AT; }
[Aa][Uu][Tt][Hh][Oo][Rr][Ii][Zz][Aa][Tt][Ii][Oo][Nn] {SQL_NEW_KEYWORD(SQL_TOKEN_AUTHORIZATION); return SQL_TOKEN_AUTHORIZATION; }
@@ -351,9 +352,12 @@ sal_Int32 gatherString( sal_Int32 delim, sal_Int32 nTyp)
{
sal_Int32 ch;
static sal_Int32 BUFFERSIZE = 256;
static sal_Char* Buffer = 0;
if(!Buffer)
Buffer = new sal_Char[BUFFERSIZE];
static sal_Char* Buffer = 0;
if(!Buffer)
Buffer = new sal_Char[BUFFERSIZE];
sal_Char *s = Buffer;
sal_Int32 nPos = 0;
@@ -372,18 +376,24 @@ sal_Int32 gatherString( sal_Int32 delim, sal_Int32 nTyp)
switch(nTyp)
{
case 0:
SQL_NEW_NODE(::rtl::OUString(Buffer,nPos,RTL_TEXTENCODING_UTF8), SQL_NODE_NAME);
delete Buffer;
SQL_NEW_NODE(::rtl::OUString(Buffer,nPos,RTL_TEXTENCODING_UTF8), SQL_NODE_NAME);
delete Buffer;
Buffer = NULL;
return SQL_TOKEN_NAME;
case 1:
SQL_NEW_NODE(::rtl::OUString(Buffer,nPos,RTL_TEXTENCODING_UTF8), SQL_NODE_STRING);
delete Buffer;
SQL_NEW_NODE(::rtl::OUString(Buffer,nPos,RTL_TEXTENCODING_UTF8), SQL_NODE_STRING);
delete Buffer;
Buffer = NULL;
return SQL_TOKEN_STRING;
case 2:
SQL_NEW_NODE(::rtl::OUString(Buffer,nPos,RTL_TEXTENCODING_UTF8), SQL_NODE_ACCESS_DATE);
delete Buffer;
SQL_NEW_NODE(::rtl::OUString(Buffer,nPos,RTL_TEXTENCODING_UTF8), SQL_NODE_ACCESS_DATE);
delete Buffer;
Buffer = NULL;
return SQL_TOKEN_ACCESS_DATE;
}
@@ -422,12 +432,58 @@ sal_Int32 gatherString( sal_Int32 delim, sal_Int32 nTyp)
}
}
*s = '\0';
YY_FATAL_ERROR("Unterminated name string");
delete Buffer;
YY_FATAL_ERROR("Unterminated name string");
delete Buffer;
Buffer = NULL;
return SQL_TOKEN_INVALIDSYMBOL;
}
sal_Int32 mapEnumToToken(IParseContext::InternationalKeyCode _eKeyCode )
{
sal_Int32 nTokenID = 0;
switch( _eKeyCode )
{
case IParseContext::KEY_LIKE: nTokenID = SQL_TOKEN_LIKE; break;
case IParseContext::KEY_NOT: nTokenID = SQL_TOKEN_NOT; break;
case IParseContext::KEY_NULL: nTokenID = SQL_TOKEN_NULL; break;
case IParseContext::KEY_TRUE: nTokenID = SQL_TOKEN_TRUE; break;
case IParseContext::KEY_FALSE: nTokenID = SQL_TOKEN_FALSE; break;
case IParseContext::KEY_IS: nTokenID = SQL_TOKEN_IS; break;
case IParseContext::KEY_BETWEEN: nTokenID = SQL_TOKEN_BETWEEN; break;
case IParseContext::KEY_OR: nTokenID = SQL_TOKEN_OR; break;
case IParseContext::KEY_AND: nTokenID = SQL_TOKEN_AND; break;
case IParseContext::KEY_AVG: nTokenID = SQL_TOKEN_AVG; break;
case IParseContext::KEY_COUNT: nTokenID = SQL_TOKEN_COUNT; break;
case IParseContext::KEY_MAX: nTokenID = SQL_TOKEN_MAX; break;
case IParseContext::KEY_MIN: nTokenID = SQL_TOKEN_MIN; break;
case IParseContext::KEY_SUM: nTokenID = SQL_TOKEN_SUM; break;
}
return nTokenID;
}
/*
* Read SQL Name literal
* Valid Names or internatioanl keywords:
@@ -435,24 +491,29 @@ sal_Int32 gatherString( sal_Int32 delim, sal_Int32 nTyp)
*/
sal_Int32 gatherName(const sal_Char* text)
{
sal_Int32 nToken;
OSL_ENSURE(xxx_pGLOBAL_SQLSCAN,"You forgot to set the scanner!");
sal_Int32 nToken = xxx_pGLOBAL_SQLSCAN->getInternationalTokenID(text);
switch (nToken)
IParseContext::InternationalKeyCode eKeyCode = xxx_pGLOBAL_SQLSCAN->getInternationalTokenID(text);
switch (eKeyCode)
{
case SQL_TOKEN_LIKE:
case SQL_TOKEN_NOT:
case SQL_TOKEN_NULL:
case SQL_TOKEN_TRUE:
case SQL_TOKEN_FALSE:
case SQL_TOKEN_IS:
case SQL_TOKEN_BETWEEN:
case SQL_TOKEN_OR:
case SQL_TOKEN_AND:
case SQL_TOKEN_COUNT:
case SQL_TOKEN_AVG:
case SQL_TOKEN_MAX:
case SQL_TOKEN_MIN:
case SQL_TOKEN_SUM:
case IParseContext::KEY_LIKE:
case IParseContext::KEY_NOT:
case IParseContext::KEY_NULL:
case IParseContext::KEY_TRUE:
case IParseContext::KEY_FALSE:
case IParseContext::KEY_IS:
case IParseContext::KEY_BETWEEN:
case IParseContext::KEY_OR:
case IParseContext::KEY_AND:
case IParseContext::KEY_COUNT:
case IParseContext::KEY_AVG:
case IParseContext::KEY_MAX:
case IParseContext::KEY_MIN:
case IParseContext::KEY_SUM:
nToken = mapEnumToToken(eKeyCode);
SQL_NEW_KEYWORD(nToken);
return nToken;
default:
@@ -467,44 +528,81 @@ sal_Int32 gatherName(const sal_Char* text)
*/
sal_Int32 gatherNamePre(const sal_Char* text)
{
sal_Int32 nToken;
OSL_ENSURE(xxx_pGLOBAL_SQLSCAN,"You forgot to set the scanner!");
sal_Int32 nToken = xxx_pGLOBAL_SQLSCAN->getInternationalTokenID(text);
switch (nToken)
IParseContext::InternationalKeyCode eKeyCode = xxx_pGLOBAL_SQLSCAN->getInternationalTokenID(text);
switch (eKeyCode)
{
case SQL_TOKEN_LIKE:
case SQL_TOKEN_NOT:
case SQL_TOKEN_NULL:
case SQL_TOKEN_TRUE:
case SQL_TOKEN_FALSE:
case SQL_TOKEN_IS:
case SQL_TOKEN_BETWEEN:
case SQL_TOKEN_OR:
case SQL_TOKEN_AND:
case SQL_TOKEN_COUNT:
case SQL_TOKEN_AVG:
case SQL_TOKEN_MAX:
case SQL_TOKEN_MIN:
case SQL_TOKEN_SUM:
SQL_NEW_KEYWORD(nToken);
break;
default:
// we need a special handling for parameter
{
::rtl::OString sStmt = xxx_pGLOBAL_SQLSCAN->getStatement();
sal_Int32 nLength = strlen(text);
sal_Int32 nPos = sStmt.getLength() - nLength - 1;
if (sStmt.getStr()[nPos] == ':')
{
SQL_NEW_NODE(::rtl::OUString(text,nLength,RTL_TEXTENCODING_UTF8), SQL_NODE_NAME);
nToken = SQL_TOKEN_NAME;
}
else
{
SQL_NEW_NODE(::rtl::OUString(text,nLength,RTL_TEXTENCODING_UTF8), SQL_NODE_STRING);
nToken = SQL_TOKEN_STRING;
}
}
}
case IParseContext::KEY_LIKE:
case IParseContext::KEY_NOT:
case IParseContext::KEY_NULL:
case IParseContext::KEY_TRUE:
case IParseContext::KEY_FALSE:
case IParseContext::KEY_IS:
case IParseContext::KEY_BETWEEN:
case IParseContext::KEY_OR:
case IParseContext::KEY_AND:
case IParseContext::KEY_COUNT:
case IParseContext::KEY_AVG:
case IParseContext::KEY_MAX:
case IParseContext::KEY_MIN:
case IParseContext::KEY_SUM:
nToken = mapEnumToToken(eKeyCode);
SQL_NEW_KEYWORD(nToken);
break;
default:
// we need a special handling for parameter
{
::rtl::OString sStmt = xxx_pGLOBAL_SQLSCAN->getStatement();
sal_Int32 nLength = strlen(text);
sal_Int32 nPos = sStmt.getLength() - nLength - 1;
if (sStmt.getStr()[nPos] == ':')
{
SQL_NEW_NODE(::rtl::OUString(text,nLength,RTL_TEXTENCODING_UTF8), SQL_NODE_NAME);
nToken = SQL_TOKEN_NAME;
}
else
{
SQL_NEW_NODE(::rtl::OUString(text,nLength,RTL_TEXTENCODING_UTF8), SQL_NODE_STRING);
nToken = SQL_TOKEN_STRING;
}
}
}
return nToken;
}
@@ -524,7 +622,8 @@ OSQLScanner::OSQLScanner()
, m_bInternational(sal_False)
, m_pContext(NULL)
, m_nRule(0) // 0 is INITIAL
{
{
IN_SQLyyerror = false;
}
@@ -534,67 +633,117 @@ OSQLScanner::~OSQLScanner()
}
//------------------------------------------------------------------------------
void OSQLScanner::SQLyyerror(sal_Char *fmt)
{
if(IN_SQLyyerror)
return;
IN_SQLyyerror = true;
{
if(IN_SQLyyerror)
return;
IN_SQLyyerror = true;
OSL_ENSURE(m_pContext, "OSQLScanner::SQLyyerror: No Context set");
m_sErrorMessage = ::rtl::OUString(fmt,strlen(fmt),RTL_TEXTENCODING_UTF8);
if (m_nCurrentPos < m_sStatement.getLength())
{
m_sErrorMessage += ::rtl::OUString::createFromAscii(": ");
::rtl::OUString aError;
static sal_Int32 BUFFERSIZE = 256;
static sal_Char* Buffer = 0;
if(!Buffer)
Buffer = new sal_Char[BUFFERSIZE];
sal_Char *s = Buffer;
sal_Int32 nPos = 1;
sal_Int32 ch = SQLyytext ? (SQLyytext[0] == 0 ? ' ' : SQLyytext[0]): ' ';
*s++ = ch;
while ((ch = yyinput()) != EOF)
{
if (ch == ' ')
{
if ((ch = yyinput()) != ' ')
{
if (ch != EOF)
unput(ch);
}
*s = '\0';
aError = ::rtl::OUString(Buffer,nPos,RTL_TEXTENCODING_UTF8);
break;
}
else
{
*s++ = ch;
if (++nPos == BUFFERSIZE)
{
::rtl::OString aBuf(Buffer);
delete Buffer;
BUFFERSIZE *=2;
Buffer = new sal_Char[BUFFERSIZE];
for(sal_Int32 i=0;i<aBuf.getLength();++i,++Buffer)
*Buffer = aBuf.getStr()[i];
s = &Buffer[nPos];
}
}
}
m_sErrorMessage += aError;
delete Buffer;
::rtl::OUString aError;
static sal_Int32 BUFFERSIZE = 256;
static sal_Char* Buffer = 0;
if(!Buffer)
Buffer = new sal_Char[BUFFERSIZE];
sal_Char *s = Buffer;
sal_Int32 nPos = 1;
sal_Int32 ch = SQLyytext ? (SQLyytext[0] == 0 ? ' ' : SQLyytext[0]): ' ';
*s++ = ch;
while ((ch = yyinput()) != EOF)
{
if (ch == ' ')
{
if ((ch = yyinput()) != ' ')
{
if (ch != EOF)
unput(ch);
}
*s = '\0';
aError = ::rtl::OUString(Buffer,nPos,RTL_TEXTENCODING_UTF8);
break;
}
else
{
*s++ = ch;
if (++nPos == BUFFERSIZE)
{
::rtl::OString aBuf(Buffer);
delete Buffer;
BUFFERSIZE *=2;
Buffer = new sal_Char[BUFFERSIZE];
for(sal_Int32 i=0;i<aBuf.getLength();++i,++Buffer)
*Buffer = aBuf.getStr()[i];
s = &Buffer[nPos];
}
}
}
m_sErrorMessage += aError;
delete Buffer;
Buffer = NULL;
}
IN_SQLyyerror = false;
YY_FLUSH_BUFFER;
}
IN_SQLyyerror = false;
YY_FLUSH_BUFFER;
}
//------------------------------------------------------------------------------
void OSQLScanner::prepareScan(const ::rtl::OUString & rNewStatement, const OParseContext* pContext, sal_Bool bInternational)
{
void OSQLScanner::prepareScan(const ::rtl::OUString & rNewStatement, const IParseContext* pContext, sal_Bool bInternational)
{
YY_FLUSH_BUFFER;
BEGIN(m_nRule);
@@ -602,7 +751,8 @@ void OSQLScanner::prepareScan(const ::rtl::OUString & rNewStatement, const OPars
m_sStatement = ::rtl::OString(rNewStatement,rNewStatement.getLength(), RTL_TEXTENCODING_UTF8);
m_nCurrentPos = 0;
m_bInternational = bInternational;
m_pContext = pContext;
m_pContext = pContext;
}
//------------------------------------------------------------------------------
@@ -612,10 +762,10 @@ sal_Int32 OSQLScanner::SQLyygetc(void)
}
//------------------------------------------------------------------------------
sal_Int32 OSQLScanner::getInternationalTokenID(const sal_Char* sToken) const
IParseContext::InternationalKeyCode OSQLScanner::getInternationalTokenID(const sal_Char* sToken) const
{
OSL_ENSURE(m_pContext, "OSQLScanner::getInternationalTokenID: No Context set");
return (m_bInternational) ? m_pContext->getIntlKeyCode(::rtl::OString(sToken)) : 0;
return (m_bInternational) ? m_pContext->getIntlKeyCode(::rtl::OString(sToken) ) : IParseContext::KEY_NONE;
}
// -------------------------------------------------------------------------
sal_Int32 OSQLScanner::GetCurrentRule() const { return m_nRule; }
@@ -637,6 +787,7 @@ sal_Int32 OSQLScanner::SQLlex()
/*------------------------------------------------------------------------
$Log: not supported by cvs2svn $
Revision 1.2 2000/08/01 14:26:02 oj
modified

View File

@@ -2,9 +2,9 @@
*
* $RCSfile: sqlnode.cxx,v $
*
* $Revision: 1.30 $
* $Revision: 1.31 $
*
* last change: $Author: oj $ $Date: 2002-07-01 07:06:44 $
* last change: $Author: oj $ $Date: 2002-09-27 11:10:32 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -158,12 +158,12 @@ extern ::rtl::OUString ConvertLikeToken(const OSQLParseNode* pTokenNode, const O
//------------------------------------------------------------------
OSQLParseNode::SQLParseNodeParameter::SQLParseNodeParameter(const ::rtl::OUString& _rIdentifierQuote, const ::rtl::OUString& _rCatalogSep,
const Reference< XNumberFormatter > & _xFormatter, const Reference< XPropertySet > & _xField, const ::com::sun::star::lang::Locale& _rLocale,
const OParseContext* _pContext, sal_Bool _bIntl, sal_Bool _bQuote, sal_Char _cDecSep,
const IParseContext* _pContext, sal_Bool _bIntl, sal_Bool _bQuote, sal_Char _cDecSep,
sal_Bool _bPredicate)
:aIdentifierQuote(_rIdentifierQuote)
,aCatalogSeparator(_rCatalogSep)
,rLocale(_rLocale)
,rContext(_pContext ? *_pContext : OSQLParser::s_aDefaultContext)
,m_pContext(_pContext ? _pContext : &OSQLParser::s_aDefaultContext)
,bInternational(_bIntl)
,bQuote(_bQuote)
,cDecSep(_cDecSep)
@@ -214,7 +214,7 @@ OSQLParseNode::SQLParseNodeParameter::SQLParseNodeParameter(const ::rtl::OUStrin
//-----------------------------------------------------------------------------
void OSQLParseNode::parseNodeToStr(::rtl::OUString& rString,
const Reference< XDatabaseMetaData > & xMeta,
const OParseContext* pContext,
const IParseContext* pContext,
sal_Bool _bIntl,
sal_Bool _bQuote) const
{
@@ -231,7 +231,7 @@ void OSQLParseNode::parseNodeToPredicateStr(::rtl::OUString& rString,
const Reference< XNumberFormatter > & xFormatter,
const ::com::sun::star::lang::Locale& rIntl,
sal_Char _cDec,
const OParseContext* pContext ) const
const IParseContext* pContext ) const
{
OSL_ENSURE(xFormatter.is(), "OSQLParseNode::parseNodeToPredicateStr:: no formatter!");
@@ -247,7 +247,7 @@ void OSQLParseNode::parseNodeToPredicateStr(::rtl::OUString& rString,
const Reference< XPropertySet > & _xField,
const ::com::sun::star::lang::Locale& rIntl,
sal_Char _cDec,
const OParseContext* pContext ) const
const IParseContext* pContext ) const
{
OSL_ENSURE(xFormatter.is(), "OSQLParseNode::parseNodeToPredicateStr:: no formatter!");
@@ -262,7 +262,7 @@ void OSQLParseNode::parseNodeToStr(::rtl::OUString& rString,
const Reference< XNumberFormatter > & xFormatter,
const Reference< XPropertySet > & _xField,
const ::com::sun::star::lang::Locale& rIntl,
const OParseContext* pContext,
const IParseContext* pContext,
sal_Bool _bIntl,
sal_Bool _bQuote,
sal_Char _cDecSep,
@@ -636,13 +636,13 @@ sal_Int16 OSQLParser::buildComparsionRule(OSQLParseNode*& pAppend,OSQLParseNode*
else
{
nErg = -1;
m_sErrorMessage = m_pContext->getErrorMessage(OParseContext::ERROR_INVALID_DATE_COMPARE);
m_sErrorMessage = m_pContext->getErrorMessage(IParseContext::ERROR_INVALID_DATE_COMPARE);
}
}
catch( Exception& )
{
nErg = -1;
m_sErrorMessage = m_pContext->getErrorMessage(OParseContext::ERROR_INVALID_DATE_COMPARE);
m_sErrorMessage = m_pContext->getErrorMessage(IParseContext::ERROR_INVALID_DATE_COMPARE);
}
}
}
@@ -651,7 +651,7 @@ sal_Int16 OSQLParser::buildComparsionRule(OSQLParseNode*& pAppend,OSQLParseNode*
break;
default:
m_sErrorMessage = m_pContext->getErrorMessage(OParseContext::ERROR_INVALID_COMPARE);
m_sErrorMessage = m_pContext->getErrorMessage(IParseContext::ERROR_INVALID_COMPARE);
}
break;
case SQL_NODE_ACCESS_DATE:
@@ -684,24 +684,24 @@ sal_Int16 OSQLParser::buildComparsionRule(OSQLParseNode*& pAppend,OSQLParseNode*
else
{
nErg = -1;
m_sErrorMessage = m_pContext->getErrorMessage(OParseContext::ERROR_INVALID_DATE_COMPARE);
m_sErrorMessage = m_pContext->getErrorMessage(IParseContext::ERROR_INVALID_DATE_COMPARE);
}
}
catch( Exception& )
{
nErg = -1;
m_sErrorMessage = m_pContext->getErrorMessage(OParseContext::ERROR_INVALID_DATE_COMPARE);
m_sErrorMessage = m_pContext->getErrorMessage(IParseContext::ERROR_INVALID_DATE_COMPARE);
}
}
}
else
{
nErg = -1;
m_sErrorMessage = m_pContext->getErrorMessage(OParseContext::ERROR_INVALID_DATE_COMPARE);
m_sErrorMessage = m_pContext->getErrorMessage(IParseContext::ERROR_INVALID_DATE_COMPARE);
}
break;
default:
m_sErrorMessage = m_pContext->getErrorMessage(OParseContext::ERROR_INVALID_COMPARE);
m_sErrorMessage = m_pContext->getErrorMessage(IParseContext::ERROR_INVALID_COMPARE);
}
break;
case SQL_NODE_INTNUM:
@@ -734,7 +734,7 @@ sal_Int16 OSQLParser::buildComparsionRule(OSQLParseNode*& pAppend,OSQLParseNode*
nErg = buildNode_STR_NUM(pAppend,pLiteral,pCompare);
break;
default:
m_sErrorMessage = m_pContext->getErrorMessage(OParseContext::ERROR_INVALID_INT_COMPARE);
m_sErrorMessage = m_pContext->getErrorMessage(IParseContext::ERROR_INVALID_INT_COMPARE);
}
break;
case SQL_NODE_APPROXNUM:
@@ -766,7 +766,7 @@ sal_Int16 OSQLParser::buildComparsionRule(OSQLParseNode*& pAppend,OSQLParseNode*
break;
case DataType::INTEGER:
default:
m_sErrorMessage = m_pContext->getErrorMessage(OParseContext::ERROR_INVALID_REAL_COMPARE);
m_sErrorMessage = m_pContext->getErrorMessage(IParseContext::ERROR_INVALID_REAL_COMPARE);
}
break;
}
@@ -841,14 +841,14 @@ sal_Int16 OSQLParser::buildLikeRule(OSQLParseNode*& pAppend, OSQLParseNode*& pLi
break;
default:
{
m_sErrorMessage = m_pContext->getErrorMessage(OParseContext::ERROR_VALUE_NO_LIKE);
m_sErrorMessage = m_pContext->getErrorMessage(IParseContext::ERROR_VALUE_NO_LIKE);
m_sErrorMessage = m_sErrorMessage.replaceAt(m_sErrorMessage.indexOf(::rtl::OUString::createFromAscii("#1")),2,pLiteral->getTokenValue());
}
}
}
break;
default:
m_sErrorMessage = m_pContext->getErrorMessage(OParseContext::ERROR_FIELD_NO_LIKE);
m_sErrorMessage = m_pContext->getErrorMessage(IParseContext::ERROR_FIELD_NO_LIKE);
}
return nErg;
}
@@ -1034,7 +1034,7 @@ OSQLParseNode* OSQLParser::predicateTree(::rtl::OUString& rErrorMessage, const :
if (!m_sErrorMessage.getLength())
m_sErrorMessage = s_pScanner->getErrorMessage();
if (!m_sErrorMessage.getLength())
m_sErrorMessage = m_pContext->getErrorMessage(OParseContext::ERROR_GENERAL);
m_sErrorMessage = m_pContext->getErrorMessage(IParseContext::ERROR_GENERAL);
rErrorMessage = m_sErrorMessage;
@@ -1067,7 +1067,7 @@ OSQLParseNode* OSQLParser::predicateTree(::rtl::OUString& rErrorMessage, const :
}
//=============================================================================
//-----------------------------------------------------------------------------
OSQLParser::OSQLParser(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _xServiceFactory,const OParseContext* _pContext)
OSQLParser::OSQLParser(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _xServiceFactory,const IParseContext* _pContext)
:m_pContext(_pContext)
,m_pParseTree(NULL)
,m_pLocale(NULL)

View File

@@ -2,9 +2,9 @@
*
* $RCSfile: dbtfactory.cxx,v $
*
* $Revision: 1.2 $
* $Revision: 1.3 $
*
* last change: $Author: fs $ $Date: 2001-08-13 14:54:24 $
* last change: $Author: oj $ $Date: 2002-09-27 11:14:15 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -134,9 +134,9 @@ namespace connectivity
}
//----------------------------------------------------------------
::rtl::Reference< simple::ISQLParser > ODataAccessToolsFactory::createSQLParser(const Reference< XMultiServiceFactory >& _rxServiceFactory) const
::rtl::Reference< simple::ISQLParser > ODataAccessToolsFactory::createSQLParser(const Reference< XMultiServiceFactory >& _rxServiceFactory,const IParseContext* _pContext) const
{
return new OSimpleSQLParser(_rxServiceFactory);
return new OSimpleSQLParser(_rxServiceFactory,_pContext);
}
//........................................................................
@@ -146,6 +146,9 @@ namespace connectivity
/*************************************************************************
* history:
* $Log: not supported by cvs2svn $
* Revision 1.2 2001/08/13 14:54:24 fs
* #90761# +createCharsetHelper
*
* Revision 1.1 2001/07/25 13:28:12 fs
* initial checkin - main factory for load-on-demand usage of DBTOOLS
*

View File

@@ -2,9 +2,9 @@
*
* $RCSfile: dbtfactory.hxx,v $
*
* $Revision: 1.2 $
* $Revision: 1.3 $
*
* last change: $Author: fs $ $Date: 2001-08-13 14:54:24 $
* last change: $Author: oj $ $Date: 2002-09-27 11:14:16 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -90,7 +90,8 @@ namespace connectivity
// IDataAccessToolsFactory
virtual ::rtl::Reference< simple::ISQLParser > createSQLParser(
const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxServiceFactory
const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxServiceFactory,
const IParseContext* _pContext
) const;
virtual ::rtl::Reference< simple::IDataAccessCharSet > createCharsetHelper( ) const;
@@ -113,6 +114,9 @@ namespace connectivity
/*************************************************************************
* history:
* $Log: not supported by cvs2svn $
* Revision 1.2 2001/08/13 14:54:24 fs
* #90761# +createCharsetHelper
*
* Revision 1.1 2001/07/25 13:28:19 fs
* initial checkin - main factory for load-on-demand usage of DBTOOLS
*

View File

@@ -2,9 +2,9 @@
*
* $RCSfile: parsenode_s.cxx,v $
*
* $Revision: 1.1 $
* $Revision: 1.2 $
*
* last change: $Author: fs $ $Date: 2001-07-25 13:29:09 $
* last change: $Author: oj $ $Date: 2002-09-27 11:14:20 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -111,17 +111,17 @@ namespace connectivity
}
//----------------------------------------------------------------
void OSimpleParseNode::parseNodeToStr(::rtl::OUString& _rString, const Reference< XDatabaseMetaData >& _rxMeta) const
void OSimpleParseNode::parseNodeToStr(::rtl::OUString& _rString, const Reference< XDatabaseMetaData >& _rxMeta,const IParseContext* _pContext) const
{
m_pFullNode->parseNodeToStr(_rString, _rxMeta);
m_pFullNode->parseNodeToStr(_rString, _rxMeta,_pContext);
}
//----------------------------------------------------------------
void OSimpleParseNode::parseNodeToPredicateStr(::rtl::OUString& _rString, const Reference< XDatabaseMetaData >& _rxMeta,
const Reference< XNumberFormatter >& _rxFormatter, const Reference< XPropertySet >& _rxField,
const Locale& _rIntl, const sal_Char _cDecSeparator) const
const Locale& _rIntl, const sal_Char _cDecSeparator,const IParseContext* _pContext) const
{
m_pFullNode->parseNodeToPredicateStr(_rString, _rxMeta, _rxFormatter, _rxField, _rIntl, _cDecSeparator);
m_pFullNode->parseNodeToPredicateStr(_rString, _rxMeta, _rxFormatter, _rxField, _rIntl, _cDecSeparator,_pContext);
}
//........................................................................
@@ -131,6 +131,9 @@ namespace connectivity
/*************************************************************************
* history:
* $Log: not supported by cvs2svn $
* Revision 1.1 2001/07/25 13:29:09 fs
* initial checkin - main factory for load-on-demand usage of OSQLParseNode
*
*
* Revision 1.0 24.07.01 16:32:42 fs
************************************************************************/

View File

@@ -2,9 +2,9 @@
*
* $RCSfile: parsenode_s.hxx,v $
*
* $Revision: 1.1 $
* $Revision: 1.2 $
*
* last change: $Author: fs $ $Date: 2001-07-25 13:29:15 $
* last change: $Author: oj $ $Date: 2002-09-27 11:14:20 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -92,7 +92,8 @@ namespace connectivity
// ISQLParseNode
virtual void parseNodeToStr(::rtl::OUString& _rString,
const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData >& _rxMeta
const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData >& _rxMeta,
const IParseContext* _pContext
) const;
virtual void parseNodeToPredicateStr(::rtl::OUString& _rString,
@@ -100,7 +101,8 @@ namespace connectivity
const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& _rxFormatter,
const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxField,
const ::com::sun::star::lang::Locale& _rIntl,
const sal_Char _cDecSeparator
const sal_Char _cDecSeparator,
const IParseContext* _pContext
) const;
// disambiguate IReference
@@ -117,6 +119,9 @@ namespace connectivity
/*************************************************************************
* history:
* $Log: not supported by cvs2svn $
* Revision 1.1 2001/07/25 13:29:15 fs
* initial checkin - main factory for load-on-demand usage of OSQLParseNode
*
*
* Revision 1.0 24.07.01 16:32:42 fs
************************************************************************/

View File

@@ -2,9 +2,9 @@
*
* $RCSfile: parser_s.cxx,v $
*
* $Revision: 1.2 $
* $Revision: 1.3 $
*
* last change: $Author: fs $ $Date: 2001-08-06 07:34:54 $
* last change: $Author: oj $ $Date: 2002-09-27 11:14:18 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -83,8 +83,8 @@ namespace connectivity
//= OSimpleSQLParser
//================================================================
//----------------------------------------------------------------
OSimpleSQLParser::OSimpleSQLParser(const Reference< XMultiServiceFactory >& _rxServiceFactory)
:m_aFullParser(_rxServiceFactory)
OSimpleSQLParser::OSimpleSQLParser(const Reference< XMultiServiceFactory >& _rxServiceFactory,const IParseContext* _pContext)
:m_aFullParser(_rxServiceFactory,_pContext)
{
}
@@ -101,7 +101,7 @@ namespace connectivity
}
//----------------------------------------------------------------
const OParseContext& OSimpleSQLParser::getContext() const
const IParseContext& OSimpleSQLParser::getContext() const
{
return m_aFullParser.getContext();
}
@@ -124,6 +124,9 @@ namespace connectivity
/*************************************************************************
* history:
* $Log: not supported by cvs2svn $
* Revision 1.2 2001/08/06 07:34:54 fs
* #90560# no OSimpleParseNode if we do not have a OSQLParseNode
*
* Revision 1.1 2001/07/25 13:28:40 fs
* initial checkin - main factory for load-on-demand usage of OSQLParser
*

View File

@@ -2,9 +2,9 @@
*
* $RCSfile: parser_s.hxx,v $
*
* $Revision: 1.1 $
* $Revision: 1.2 $
*
* last change: $Author: fs $ $Date: 2001-07-25 13:28:46 $
* last change: $Author: oj $ $Date: 2002-09-27 11:14:17 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -88,7 +88,7 @@ namespace connectivity
OSQLParser m_aFullParser;
public:
OSimpleSQLParser(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxServiceFactory);
OSimpleSQLParser(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxServiceFactory,const IParseContext* _pContext);
// ISQLParser
virtual ::rtl::Reference< simple::ISQLParseNode > predicateTree(
@@ -98,7 +98,7 @@ namespace connectivity
const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxField
) const;
virtual const OParseContext& getContext() const;
virtual const IParseContext& getContext() const;
// disambiguate IReference
virtual oslInterlockedCount SAL_CALL acquire();
@@ -114,6 +114,9 @@ namespace connectivity
/*************************************************************************
* history:
* $Log: not supported by cvs2svn $
* Revision 1.1 2001/07/25 13:28:46 fs
* initial checkin - main factory for load-on-demand usage of OSQLParser
*
*
* Revision 1.0 24.07.01 16:32:42 fs
************************************************************************/

128
svx/inc/ParseContext.hxx Normal file
View File

@@ -0,0 +1,128 @@
/*************************************************************************
*
* $RCSfile: ParseContext.hxx,v $
*
* $Revision: 1.1 $
*
* last change: $Author: oj $ $Date: 2002-09-27 11:18:41 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
*
* - GNU Lesser General Public License Version 2.1
* - Sun Industry Standards Source License Version 1.1
*
* Sun Microsystems Inc., October, 2000
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2000 by Sun Microsystems, Inc.
* 901 San Antonio Road, Palo Alto, CA 94303, USA
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*
*
* Sun Industry Standards Source License Version 1.1
* =================================================
* The contents of this file are subject to the Sun Industry Standards
* Source License Version 1.1 (the License); You may not use this file
* except in compliance with the License. You may obtain a copy of the
* License at http://www.openoffice.org/license.html.
*
* Software provided under this License is provided on an AS IS basis,
* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
* WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
* MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
* See the License for the specific provisions governing your rights and
* obligations concerning the Software.
*
* The Initial Developer of the Original Code is: Sun Microsystems, Inc.
*
* Copyright: 2000 by Sun Microsystems, Inc.
*
* All Rights Reserved.
*
* Contributor(s): _______________________________________
*
*
************************************************************************/
#ifndef SVX_QUERYDESIGNCONTEXT_HXX
#define SVX_QUERYDESIGNCONTEXT_HXX
#ifndef CONNECTIVITY_IPARSECONTEXT_HXX
#include <connectivity/IParseContext.hxx>
#endif
#ifndef _STRING_HXX
#include <tools/string.hxx>
#endif
#ifndef _UNOTOOLS_LOCALEDATAWRAPPER_HXX
#include <unotools/localedatawrapper.hxx>
#endif
namespace svxform
{
//==========================================================================
//= OSystemParseContext
//==========================================================================
class OSystemParseContext : public ::connectivity::IParseContext
{
private:
ByteString m_aSQLInternationals;
public:
OSystemParseContext();
virtual ~OSystemParseContext();
// retrieves language specific error messages
virtual ::rtl::OUString getErrorMessage(ErrorCode _eCodes) const;
// retrieves language specific keyword strings (only ASCII allowed)
virtual ::rtl::OString getIntlKeywordAscii(InternationalKeyCode _eKey) const;
// finds out, if we have an international keyword (only ASCII allowed)
virtual InternationalKeyCode getIntlKeyCode(const ::rtl::OString& rToken) const;
/** get's a locale instance which should be used when parsing in the context specified by this instance
<p>if this is not overridden by derived classes, it returns the static default locale.</p>
*/
virtual ::com::sun::star::lang::Locale getPreferredLocale( ) const;
public:
// helper methods to ease access to some of the characteristics of the locale
sal_Unicode getNumDecimalSep( ) const;
sal_Unicode getNumThousandSep( ) const;
};
//==========================================================================
//= OParseContextClient
//==========================================================================
/** helper class which needs access to a (shared and ref-counted) OSystemParseContext
instance.
*/
class OParseContextClient
{
protected:
OParseContextClient();
virtual ~OParseContextClient();
const OSystemParseContext* getParseContext() const;
};
}
#endif // SVX_QUERYDESIGNCONTEXT_HXX

View File

@@ -0,0 +1,245 @@
/*************************************************************************
*
* $RCSfile: ParseContext.cxx,v $
*
* $Revision: 1.1 $
*
* last change: $Author: oj $ $Date: 2002-09-27 11:22:36 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
*
* - GNU Lesser General Public License Version 2.1
* - Sun Industry Standards Source License Version 1.1
*
* Sun Microsystems Inc., October, 2000
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2000 by Sun Microsystems, Inc.
* 901 San Antonio Road, Palo Alto, CA 94303, USA
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*
*
* Sun Industry Standards Source License Version 1.1
* =================================================
* The contents of this file are subject to the Sun Industry Standards
* Source License Version 1.1 (the License); You may not use this file
* except in compliance with the License. You may obtain a copy of the
* License at http://www.openoffice.org/license.html.
*
* Software provided under this License is provided on an AS IS basis,
* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
* WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
* MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
* See the License for the specific provisions governing your rights and
* obligations concerning the Software.
*
* The Initial Developer of the Original Code is: Sun Microsystems, Inc.
*
* Copyright: 2000 by Sun Microsystems, Inc.
*
* All Rights Reserved.
*
* Contributor(s): _______________________________________
*
*
************************************************************************/
#ifndef SVX_QUERYDESIGNCONTEXT_HXX
#include "ParseContext.hxx"
#endif
#ifndef _TOOLS_DEBUG_HXX
#include <tools/debug.hxx>
#endif
#ifndef INCLUDED_SVTOOLS_SYSLOCALE_HXX
#include <svtools/syslocale.hxx>
#endif
#ifndef _SVX_FMRESIDS_HRC
#include "fmresids.hrc"
#endif
#include "dialmgr.hxx"
using namespace svxform;
using namespace ::connectivity;
//==========================================================================
//= OSystemParseContext
//==========================================================================
DBG_NAME(OSystemParseContext);
//-----------------------------------------------------------------------------
OSystemParseContext::OSystemParseContext() : IParseContext()
{
DBG_CTOR(OSystemParseContext,NULL);
m_aSQLInternationals = ByteString(SVX_RES(RID_STR_SVT_SQL_INTERNATIONAL),RTL_TEXTENCODING_ASCII_US);
}
//-----------------------------------------------------------------------------
OSystemParseContext::~OSystemParseContext()
{
DBG_DTOR(OSystemParseContext,NULL);
}
//-----------------------------------------------------------------------------
::com::sun::star::lang::Locale OSystemParseContext::getPreferredLocale( ) const
{
return SvtSysLocale().GetLocaleData().getLocale();
}
//-----------------------------------------------------------------------------
::rtl::OUString OSystemParseContext::getErrorMessage(ErrorCode _eCode) const
{
String aMsg;
switch (_eCode)
{
case ERROR_GENERAL: aMsg = SVX_RES(RID_STR_SVT_SQL_SYNTAX_ERROR); break;
case ERROR_GENERAL_HINT: aMsg = SVX_RES(RID_STR_SVT_SQL_SYNTAX_ERROR_BEFORE); break;
case ERROR_VALUE_NO_LIKE: aMsg = SVX_RES(RID_STR_SVT_SQL_SYNTAX_VALUE_NO_LIKE); break;
case ERROR_FIELD_NO_LIKE: aMsg = SVX_RES(RID_STR_SVT_SQL_SYNTAX_FIELD_NO_LIKE); break;
case ERROR_INVALID_COMPARE: aMsg = SVX_RES(RID_STR_SVT_SQL_SYNTAX_CRIT_NO_COMPARE); break;
case ERROR_INVALID_INT_COMPARE: aMsg = SVX_RES(RID_STR_SVT_SQL_SYNTAX_INT_NO_VALID); break;
case ERROR_INVALID_STRING_COMPARE: aMsg = SVX_RES(RID_STR_SVT_SQL_SYNTAX_NO_NUM); break;
case ERROR_INVALID_DATE_COMPARE: aMsg = SVX_RES(RID_STR_SVT_SQL_SYNTAX_ACCESS_DAT_NO_VALID); break;
case ERROR_INVALID_REAL_COMPARE: aMsg = SVX_RES(RID_STR_SVT_SQL_SYNTAX_REAL_NO_VALID); break;
case ERROR_INVALID_TABLE: aMsg = SVX_RES(RID_STR_SVT_SQL_SYNTAX_TABLE); break;
case ERROR_INVALID_COLUMN: aMsg = SVX_RES(RID_STR_SVT_SQL_SYNTAX_COLUMN); break;
}
return aMsg;
}
//-----------------------------------------------------------------------------
::rtl::OString OSystemParseContext::getIntlKeywordAscii(InternationalKeyCode _eKey) const
{
ByteString aKeyword;
switch (_eKey)
{
case KEY_LIKE: aKeyword = m_aSQLInternationals.GetToken(0); break;
case KEY_NOT: aKeyword = m_aSQLInternationals.GetToken(1); break;
case KEY_NULL: aKeyword = m_aSQLInternationals.GetToken(2); break;
case KEY_TRUE: aKeyword = m_aSQLInternationals.GetToken(3); break;
case KEY_FALSE: aKeyword = m_aSQLInternationals.GetToken(4); break;
case KEY_IS: aKeyword = m_aSQLInternationals.GetToken(5); break;
case KEY_BETWEEN: aKeyword = m_aSQLInternationals.GetToken(6); break;
case KEY_OR: aKeyword = m_aSQLInternationals.GetToken(7); break;
case KEY_AND: aKeyword = m_aSQLInternationals.GetToken(8); break;
case KEY_AVG: aKeyword = m_aSQLInternationals.GetToken(9); break;
case KEY_COUNT: aKeyword = m_aSQLInternationals.GetToken(10); break;
case KEY_MAX: aKeyword = m_aSQLInternationals.GetToken(11); break;
case KEY_MIN: aKeyword = m_aSQLInternationals.GetToken(12); break;
case KEY_SUM: aKeyword = m_aSQLInternationals.GetToken(13); break;
}
return aKeyword;
}
//-----------------------------------------------------------------------------
static sal_Unicode lcl_getSeparatorChar( const String& _rSeparator, sal_Unicode _nFallback )
{
DBG_ASSERT( 0 < _rSeparator.Len(), "::lcl_getSeparatorChar: invalid decimal separator!" );
sal_Unicode nReturn( _nFallback );
if ( _rSeparator.Len() )
nReturn = static_cast< sal_Char >( _rSeparator.GetBuffer( )[0] );
return nReturn;
}
//-----------------------------------------------------------------------------
sal_Unicode OSystemParseContext::getNumDecimalSep( ) const
{
return lcl_getSeparatorChar( SvtSysLocale().GetLocaleData().getNumDecimalSep(), '.' );
}
//-----------------------------------------------------------------------------
sal_Unicode OSystemParseContext::getNumThousandSep( ) const
{
return lcl_getSeparatorChar( SvtSysLocale().GetLocaleData().getNumThousandSep(), ',' );
}
// -----------------------------------------------------------------------------
IParseContext::InternationalKeyCode OSystemParseContext::getIntlKeyCode(const ::rtl::OString& rToken) const
{
static IParseContext::InternationalKeyCode Intl_TokenID[] =
{
KEY_LIKE, KEY_NOT, KEY_NULL, KEY_TRUE,
KEY_FALSE, KEY_IS, KEY_BETWEEN, KEY_OR,
KEY_AND, KEY_AVG, KEY_COUNT, KEY_MAX,
KEY_MIN, KEY_SUM
};
sal_uInt32 nCount = sizeof Intl_TokenID / sizeof Intl_TokenID[0];
for (sal_uInt32 i = 0; i < nCount; i++)
{
::rtl::OString aKey = getIntlKeywordAscii(Intl_TokenID[i]);
if (rToken.equalsIgnoreAsciiCase(aKey))
return Intl_TokenID[i];
}
return KEY_NONE;
}
// =============================================================================
// =============================================================================
namespace
{
// -----------------------------------------------------------------------------
::osl::Mutex& getSafteyMutex()
{
static ::osl::Mutex s_aSafety;
return s_aSafety;
}
// -----------------------------------------------------------------------------
oslInterlockedCount& getCounter()
{
static oslInterlockedCount s_nCounter;
return s_nCounter;
}
// -----------------------------------------------------------------------------
OSystemParseContext* getSharedContext(OSystemParseContext* _pContext = NULL,sal_Bool _bSet = sal_False)
{
static OSystemParseContext* s_pSharedContext = NULL;
if ( _pContext && !s_pSharedContext || _bSet )
s_pSharedContext = _pContext;
return s_pSharedContext;
}
// -----------------------------------------------------------------------------
}
// -----------------------------------------------------------------------------
OParseContextClient::OParseContextClient()
{
::osl::MutexGuard aGuard( getSafteyMutex() );
if ( 1 == osl_incrementInterlockedCount( &getCounter() ) )
{ // first instance
getSharedContext( new OSystemParseContext );
}
}
// -----------------------------------------------------------------------------
OParseContextClient::~OParseContextClient()
{
{
::osl::MutexGuard aGuard( getSafteyMutex() );
if ( 0 == osl_decrementInterlockedCount( &getCounter() ) )
delete getSharedContext(NULL,sal_True);
}
}
// -----------------------------------------------------------------------------
const OSystemParseContext* OParseContextClient::getParseContext() const
{
return getSharedContext();
}
// -----------------------------------------------------------------------------

View File

@@ -2,9 +2,9 @@
*
* $RCSfile: fmstring.src,v $
*
* $Revision: 1.44 $
* $Revision: 1.45 $
*
* last change: $Author: rt $ $Date: 2002-09-05 11:27:50 $
* last change: $Author: oj $ $Date: 2002-09-27 11:21:40 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -7450,7 +7450,333 @@ Resource RID_RES_CONTROL_WIZARDS_ERROR_CONTEXTS
Text[ thai ] = "ไม่สามารถเริ่มการนำร่องกล่องการจัดกลุ่มอัตโนมัติได้ ";
};
};
String RID_STR_SVT_SQL_INTERNATIONAL
{
Text = "WIE;NICHT;LEER;WAHR;FALSCH;IST;ZWISCHEN;ODER;UND;Durchschnitt;Anzahl;Maximum;Minimum;Summe" ;
Text [ ENGLISH ] = "LIKE;NOT;NULL;TRUE;FALSE;IS;BETWEEN;OR;AND;Average;Count;Maximum;Minimum;Sum" ;
Text [ english_us ] = "LIKE;NOT;EMPTY;TRUE;FALSE;IS;BETWEEN;OR;AND;Average;Count;Maximum;Minimum;Sum" ;
Text [ portuguese ] = "COMO;N<>O;VAZIO;VERDADEIRO;FALSO;<3B>;ENTRE;OU;E;m<>dia;quantidade;m<>ximo;m<>nimo;soma" ;
Text [ portuguese_brazilian ] = "WIE;NICHT;LEER;WAHR;FALSCH;IST;ZWISCHEN;ODER;UND" ;
Text [ swedish ] = "SOM;INTE;TOM;SANN;FALSK;<3B>R;MELLAN;ELLER;OCH;genomsnitt;antal;maximum;minimum;summa" ;
Text [ danish ] = "SOM;IKKE;TOM;SAND;FALSK;ER;MELLEM;ELLER;OG;Gennemsnit;Antal;Maksimum;Minimum;Sum" ;
Text [ italian ] = "COME;NON;VUOTO;VERO;FALSO;<3B>;TRA;O;E;media;quantit<69>;massimo;minimo;totale" ;
Text [ spanish ] = "COMO;NO;VACIO;VERDADERO;FALSO;ES;ENTRE;O;Y;Promedio;Cantidad;M<>ximo;M<>nimo;Suma" ;
Text [ french ] = "COMME;PAS;VIDE;VRAI;FAUX;EST;ENTRE;OU;ET;moyenne;nombre;maximum;minimum;somme" ;
Text [ dutch ] = "ALS;NIET;LEEG;WAAR;ONWAAR;IS;TUSSEN;OF;EN;Gemiddelde;Aantal;Maximum;Minimum;Som" ;
Text[ chinese_simplified ] = "LIKE;NOT;EMPTY;TRUE;FALSE;IS;BETWEEN;OR;AND;average;number;maximum;minimum;sum";
Text[ russian ] = "<22><><EFBFBD>;<3B><>;<3B><><EFBFBD><EFBFBD><EFBFBD>;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<3B><><EFBFBD><EFBFBD>;<3B><><EFBFBD><EFBFBD>;<3B><><EFBFBD><EFBFBD><EFBFBD>;<3B><><EFBFBD>;<3B>;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<3B><><EFBFBD><EFBFBD><EFBFBD>";
Text[ polish ] = "JAK;NIE;PUSTY;PRAWDA;FA<46>SZ;JEST;POMI<4D>DZY;LUB;I;<3B>rednia;Numer;Maksimum;Minimum;Suma";
Text[ japanese ] = "LIKE;NOT;EMPTY;TRUE;FALSE;IS;BETWEEN;OR;AND;average;number;maximum;minimum;sum";
Text[ chinese_traditional ] = "LIKE;NOT;EMPTY;TRUE;FALSE;IS;BETWEEN;OR;AND;average;number;maximum;minimum;sum";
Text[ arabic ] = "LIKE;NOT;EMPTY;TRUE;FALSE;IS;BETWEEN;OR;AND;Average;Count;Maximum;Minimum;Sum";
Text[ dutch ] = "ALS;NIET;LEEG;WAAR;ONWAAR;IS;TUSSEN;OF;EN;Gemiddelde;Aantal;Maximum;Minimum;Som";
Text[ chinese_simplified ] = "LIKE;NOT;EMPTY;TRUE;FALSE;IS;BETWEEN;OR;AND;average;number;maximum;minimum;sum";
Text[ greek ] = "<22><><EFBFBD><EFBFBD>;<3B><><EFBFBD>;<3B><><EFBFBD><EFBFBD>;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<3B><><EFBFBD><EFBFBD><EFBFBD>;<3B><><EFBFBD><EFBFBD><EFBFBD>;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<3B>;<3B><><EFBFBD>;<3B><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
Text[ korean ] = "LIKE;NOT;EMPTY;TRUE;FALSE;IS;BETWEEN;OR;AND;평균;번호;최대;최소;합";
Text[ turkish ] = "G<>B<EFBFBD>;DE<44><45>L;BO<42>;DO<44>RU;YANLI<4C>;OLMA;ARADA;YA DA;VE;Ortalama;Adet say<61>s<EFBFBD>;Azami;Asgari;Toplam";
Text[ finnish ] = "LIKE;NOT;EMPTY;TRUE;FALSE;IS;BETWEEN;OR;AND;Keskiarvo;M<><4D>r<EFBFBD>;Enint<6E><74>n;V<>hint<6E><74>n;Summa";
Text[ catalan ] = "LIKE;NOT;EMPTY;TRUE;FALSE;IS;BETWEEN;OR;AND;Promig;Recompte;M<>xim;M<>nim;Suma";
Text[ thai ] = "เหมือน;ไม่;ว่าง;จริง;เท็จ;อยู่;ระหว่าง;หรือ;และ;เฉลี่ย;นับ;มากที่สุด;น้อยที่สุด;ผลรวม";
};
String RID_STR_SVT_SQL_SYNTAX_ERROR
{
/* ### ACHTUNG: Neuer Text in Resource? Syntaxfehler im SQL-Ausdruck : Fehlerhafte Syntax */
Text = "Syntaxfehler im SQL-Ausdruck" ;
Text [ ENGLISH ] = "Syntax error in SQL-expression" ;
Text [ english_us ] = "Syntax error in SQL statement" ;
Text [ portuguese ] = "Erro de sintaxe na express<73>o SQL" ;
Text [ portuguese_brazilian ] = "Fehlerhafte Syntax" ;
Text [ swedish ] = "Syntaxfel i SQL-uttryck" ;
Text [ danish ] = "Syntaksfejl i SQL-s<>tning" ;
Text [ italian ] = "Errore di sintassi nell'espressione SQL" ;
Text [ spanish ] = "Error de sintaxis en la expresi<73>n SQL" ;
Text [ french ] = "Erreur de syntaxe dans l'expression SQL" ;
Text [ dutch ] = "Foutieve syntaxis in SQL-uitdrukking" ;
Text[ chinese_simplified ] = "SQL 表达式语法错误";
Text[ russian ] = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SQL";
Text[ polish ] = "B<><42>d sk<73>adni w wyra<72>eniu SQL";
Text[ japanese ] = "SQL 表現のシンタックスエラー";
Text[ chinese_traditional ] = "SQL 表達語法錯誤";
Text[ arabic ] = "<22><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> SQL";
Text[ dutch ] = "Foutieve syntaxis in SQL-uitdrukking";
Text[ chinese_simplified ] = "SQL 表达式语法错误";
Text[ greek ] = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SQL";
Text[ korean ] = "SQL 식에 구문 오류";
Text[ turkish ] = "SQL terimi s<>z dizimi hatas<61>";
Text[ finnish ] = "Syntaksivirhe SQL-lausekkeessa";
Text[ catalan ] = "S'ha produ<64>t un error de sintaxi en l'expressi<73> SQL";
Text[ thai ] = "ไวยกรณ์ผิดพลาดในประโยค SQL ";
};
String RID_STR_SVT_SQL_SYNTAX_ERROR_BEFORE
{
/* ### ACHTUNG: Neuer Text in Resource? Syntaxfehler im SQL-Ausdruck : Fehlerhafte Syntax */
Text = "bevor \"#\" Ausdruck." ;
Text [ ENGLISH ] = "before \"#\" expression." ;
Text[ italian ] = "Davanti all'espressione \"#\".";
Text[ portuguese_brazilian ] = "before \"#\" expression.";
Text[ portuguese ] = "antes da express<73>o \"#\".";
Text[ danish ] = "f<>r \"#\"-udtryk.";
Text[ french ] = "avant l'expression \"#\".";
Text[ swedish ] = "f<>re \"#\" uttryck.";
Text[ dutch ] = "voor \"#\" uitdrukking.";
Text[ spanish ] = "expresi<73>n anterior a \"#\"";
Text[ english_us ] = "before \"#\" expression.";
Text[ chinese_simplified ] = "\"#\" 表达式之前。";
Text[ russian ] = "<22><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \"#\".";
Text[ polish ] = "przed wyra<72>eniem \"#\".";
Text[ japanese ] = "\"#\" 表現の前にあります。";
Text[ arabic ] = "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> \"#\".";
Text[ chinese_traditional ] = "在<#>表達之前";
Text[ dutch ] = "voor \"#\" uitdrukking.";
Text[ chinese_simplified ] = "\"#\" 表达式之前。";
Text[ greek ] = "<22><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \"#\".";
Text[ korean ] = "\"#\" 식 전에";
Text[ turkish ] = "\"#\" teriminden <20>nce.";
Text[ finnish ] = "ennen \"#\" lauseketta.";
Text[ catalan ] = "abans de l'expressi<73> \"#\".";
Text[ thai ] = "ก่อนการอธิบาย \"#\" ";
};
String RID_STR_SVT_SQL_SYNTAX_VALUE_NO_LIKE
{
Text = "Der Wert #1 kann nicht mit WIE verwendet werden!";
Text [ ENGLISH ] = "The value #1 can not be used with LIKE!";
Text[ english_us ] = "The value #1 cannot be used with LIKE!";
Text[ portuguese ] = "O valor #1 n<>o pode ser utilizado com COMO!";
Text[ greek ] = "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> #1 <20><><EFBFBD><EFBFBD> <20><> <20><> 'LIKE'!";
Text[ dutch ] = "Waarde #1 kan niet worden gebruikt bij ALS!";
Text[ french ] = "La valeur #1 ne peut pas <20>tre utilis<69>e avec COMME !";
Text[ spanish ] = "<22>El valor #1 no se puede usar con COMO!";
Text[ swedish ] = "V<>rdet #1 kan inte anv<6E>ndas med SOM!";
Text[ russian ] = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #1 <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>!";
Text[ italian ] = "Il valore #1 non pu<70> essere usato con COME!";
Text[ danish ] = "V<>rdien #1 kan ikke anvendes sammen med SOM!";
Text[ polish ] = "Warto<74>ci #1 nie mo<6D>na zastosowa<77> z JAK!";
Text[ portuguese_brazilian ] = "The value #1 can not be used with LIKE!";
Text[ japanese ] = "#1 の値は LIKE と一緒に使用できません。";
Text[ korean ] = "값 #1은 LIKE와 같이 사용될 수 없습니다!";
Text[ chinese_simplified ] = "数值 #1不能与LIKE同时使用";
Text[ chinese_traditional ] = "LIKE 和數值 #1 不可以一起使用!";
Text[ arabic ] = "<22><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #1 <20><> LIKE!";
Text[ turkish ] = "#1 de<64>eri, G<>B<EFBFBD> ile birlikte kullan<61>lamaz!";
Text[ finnish ] = "Arvoa #1 ei voi k<>ytt<74><74> funktion LIKE kanssa.";
Text[ catalan ] = "El valor #1 no es pot utilitzar amb LIKE.";
Text[ thai ] = "ไม่สามารถใช้ค่า #1 กับ LIKE ได้!";
};
String RID_STR_SVT_SQL_SYNTAX_FIELD_NO_LIKE
{
Text = "WIE kann bei diesem Feld nicht benutzt werden!";
Text [ ENGLISH ] = "LIKE can not be used with this field!";
Text[ english_us ] = "LIKE cannot be used with this field!";
Text[ portuguese ] = "COMO n<>o pode ser utilizado neste campo!";
Text[ greek ] = "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> 'LIKE' <20><> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>!";
Text[ dutch ] = "ALS kan niet worden gebruikt bij dit veld!";
Text[ french ] = "COMME ne peut pas <20>tre utilis<69> avec ce champ !";
Text[ spanish ] = "<22>COMO no se puede usar con este campo!";
Text[ swedish ] = "SOM kan inte anv<6E>ndas med det h<>r f<>ltet!";
Text[ russian ] = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
Text[ italian ] = "COME non pu<70> essere utilizzato in questo campo!";
Text[ danish ] = "SOM kan ikke bruges ved dette felt!";
Text[ polish ] = "JAK nie mo<6D>na u<>y<EFBFBD> przy tym polu!";
Text[ portuguese_brazilian ] = "LIKE can not be used with this field!";
Text[ japanese ] = "LIKE はこのフィールドで使用できません。";
Text[ korean ] = "LIKE는 이 필드에서 사용할 수 없습니다!";
Text[ chinese_simplified ] = "在这个字段中不能使用LIKE";
Text[ chinese_traditional ] = "這欄不可以使用 LIKE";
Text[ arabic ] = "<22><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LIKE <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>!";
Text[ turkish ] = "G<>B<EFBFBD>, bu alanda kullan<61>lamaz!";
Text[ finnish ] = "Funktiota LIKE ei voi k<>ytt<74><74> t<>ss<73> kent<6E>ss<73>.";
Text[ catalan ] = "LIKE no es pot utilitzar amb aquest camp.";
Text[ thai ] = "ไม่สามารถใช้ LIKE กับเขตข้อมูลนี้ได้!";
};
String RID_STR_SVT_SQL_SYNTAX_NO_NUM
{
Text = "Das Feld kann nicht mit einer Zeichenkette verglichen werden!";
Text [ ENGLISH ] = "The field can not be compared with a string!";
Text[ english_us ] = "The field cannot be compared with a string.";
Text[ portuguese ] = "Este campo n<>o pode ser comparado a uma cadeia de caracteres!";
Text[ greek ] = "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
Text[ dutch ] = "Het veld kan niet worden vergeleken met een string!";
Text[ french ] = "Impossible de comparer ce champ avec une cha<68>ne de caract<63>res !";
Text[ spanish ] = "<22>El campo no se puede comparar con una cadena de caracteres!";
Text[ swedish ] = "F<>ltet kan inte j<>mf<6D>ras med en teckenstr<74>ng!";
Text[ russian ] = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
Text[ italian ] = "Il campo non pu<70> essere paragonato a una stringa!";
Text[ danish ] = "Feltet kan ikke sammenlignes med en streng!";
Text[ polish ] = "Pola nie mo<6D>na por<6F>wna<6E> z ci<63>giem znak<61>w!";
Text[ portuguese_brazilian ] = "The field can not be compared with a string!";
Text[ japanese ] = "このフィールドは文字列で比較できません。";
Text[ korean ] = "필드를 문자열과 비교할 수 없습니다!";
Text[ chinese_simplified ] = "这个字段不能与字符串相比较!";
Text[ chinese_traditional ] = "這欄的內容不可以和字串相比較!";
Text[ arabic ] = "<22><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>!";
Text[ turkish ] = "Alan, bir karakter zinciri ile kar<61><72>la<6C>t<EFBFBD>r<EFBFBD>lamaz!";
Text[ finnish ] = "Kentt<74><74> ei voi verrata merkkijonoon.";
Text[ catalan ] = "El camp no es pot comparar amb una cadena.";
Text[ thai ] = "ไม่สามารถเปรียบเทียบเขตข้อมูลด้วยสายอักขระได้";
};
String RID_STR_SVT_SQL_SYNTAX_ACCESS_DAT_NO_VALID
{
Text = "Das Feld kann nicht mit einem Datum verglichen werden!";
Text [ ENGLISH ] = "The field can not be compared with a date!";
Text[ english_us ] = "The field cannot be compared with a date.";
Text[ portuguese ] = "Este campo n<>o pode ser comparado com uma data!";
Text[ greek ] = "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
Text[ dutch ] = "Het veld kan niet worden vergeleken met een datum!";
Text[ french ] = "Impossible de comparer ce champ avec une date !";
Text[ spanish ] = "<22>El campo no se puede comparar con una fecha!";
Text[ swedish ] = "F<>ltet kan inte j<>mf<6D>ras med ett datum!";
Text[ russian ] = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
Text[ italian ] = "Il campo non pu<70> essere paragonato a un dato!";
Text[ danish ] = "Feltet kan ikke sammenlignes med en dato!";
Text[ polish ] = "Pola nie mo<6D>na por<6F>wna<6E> z dat<61>!";
Text[ portuguese_brazilian ] = "The field can not be compared with a ACCESS date!";
Text[ japanese ] = "このフィールドは日付で比較できません。";
Text[ korean ] = "필드를 날짜와 비교할 수 없습니다!";
Text[ chinese_simplified ] = "这个字段不能与日期相比较!";
Text[ chinese_traditional ] = "這欄的內容不可以和一個日期相比較!";
Text[ arabic ] = "<22><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
Text[ turkish ] = "Alan, bir tarih ile kar<61><72>la<6C>t<EFBFBD>r<EFBFBD>lamaz!";
Text[ finnish ] = "Kentt<74><74> ei voi verrata p<>iv<69>m<EFBFBD><6D>r<EFBFBD><72>n.";
Text[ catalan ] = "El camp no es pot comparar amb una data.";
Text[ thai ] = "ไม่สามารถเปรียบเทียบเขตข้อมูลด้วยกับวันที่ได้";
};
String RID_STR_SVT_SQL_SYNTAX_INT_NO_VALID
{
Text = "Das Feld kann nicht mit einem Integer verglichen werden!";
Text [ ENGLISH ] = "The field can not be compared with a integer!";
Text[ english_us ] = "The field cannot be compared with an integer.";
Text[ portuguese ] = "Este campo n<>o pode ser comparado com um n<>mero inteiro!";
Text[ greek ] = "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
Text[ dutch ] = "Het veld kan niet worden vergeleken met een Integer!";
Text[ french ] = "Impossible de comparer cLe champ avec un nombre entier !";
Text[ spanish ] = "<22>El campo no se puede comparar con un integral!";
Text[ swedish ] = "F<>ltet kan inte j<>mf<6D>ras med ett heltal!";
Text[ russian ] = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
Text[ italian ] = "Il campo non pu<70> essere paragonato a un integrale!";
Text[ danish ] = "Feltet kan ikke sammenlignes med et heltal!";
Text[ polish ] = "Por<6F>wnanie pola z liczb<7A> ca<63>kowit<69> nie jest mo<6D>liwe!";
Text[ portuguese_brazilian ] = "The field can not be compared with a integer!";
Text[ japanese ] = "このフィールドは整数で比較できません。";
Text[ korean ] = "필드를 정수와 비교할 수 없습니다!";
Text[ chinese_simplified ] = "这个字段不能与一个整数相比较!";
Text[ chinese_traditional ] = "這欄的內容不可以和整數相比較!";
Text[ arabic ] = "<22><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>!";
Text[ turkish ] = "Alan, bir tamsay<61> ile kar<61><72>la<6C>t<EFBFBD>r<EFBFBD>lamaz!";
Text[ finnish ] = "Kentt<74><74> ei voi verrata muuttujaan.";
Text[ catalan ] = "El camp no es pot comparar amb un enter.";
Text[ thai ] = "ไม่สามารถเปรียบเทียบเขตข้อมูลด้วยจำนวนเต็มได้";
};
String RID_STR_SVT_SQL_SYNTAX_TABLE
{
Text = "Die Tabelle \"#\" ist in der Datenbank unbekannt!";
Text [ ENGLISH ] = "The table \"#\" is unknown in the database!";
Text[ english_us ] = "The table \"#\" is unknown in the database.";
Text[ portuguese ] = "A tabela \"#\" <20> desconhecida na base de dados!";
Text[ russian ] = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \"#\" <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.";
Text[ greek ] = "<22> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \"#\" <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
Text[ dutch ] = "Tabel \"#\" niet bekend in de database!";
Text[ french ] = "La table \"#\" est inconnue dans la base de donn<6E>es !";
Text[ spanish ] = "<22>La tabla \"#\" es desconocida en la base de datos!";
Text[ italian ] = "La tabella \"#\" risulta sconosciuta al database";
Text[ danish ] = "Tabellen \"#\" er ukendt i databasen!";
Text[ swedish ] = "Tabellen \"#\" <20>r ok<6F>nd i databasen!";
Text[ polish ] = "Tabela \"#\" jest nieznana w bazie danych!";
Text[ portuguese_brazilian ] = "The table \"#\" is unknown in the database!";
Text[ japanese ] = "テーブル \"#\" は、データベースでは不明です。";
Text[ korean ] = "데이터베이스에 알 수 없는 \"#\" 시트가 포함되어 있습니다.!";
Text[ chinese_simplified ] = "这个表格 \"#\" 对数据库而言是不明的!";
Text[ chinese_traditional ] = "這個表格<#>對資料庫而言是不明的!";
Text[ turkish ] = "The table \"#\" is unknown in the database!";
Text[ arabic ] = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \"#\" <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
Text[ finnish ] = "Taulukkoa \"#\" ei tunneta tietokannassa.";
Text[ catalan ] = "La taula \"#\" <20>s desconeguda a la base de dades.";
Text[ thai ] = "ไม่รู้จักตาราง \"#\" ในฐานข้อมูล";
};
String RID_STR_SVT_SQL_SYNTAX_COLUMN
{
Text = "Die Spalte \"#\" ist in der Tabelle \"#\" unbekannt!";
Text [ ENGLISH ] = "The column \"#\" is unknown in the table \"#\"!";
Text[ english_us ] = "The column \"#\" is unknown in the table \"#\"!";
Text[ portuguese ] = "A coluna \"#\" <20> desconhecida na tabela \"#\"!";
Text[ russian ] = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \"#\" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \"#\" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.";
Text[ greek ] = "<22> <20><><EFBFBD><EFBFBD><EFBFBD> \"#\" <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \"#\"!";
Text[ dutch ] = "Kolom \"#\" is onbekend in tabel \"#\"!";
Text[ french ] = "La colonne \"#\" est inconnue dans la table \"#\" !";
Text[ spanish ] = "<22>La columna \"#\" es desconocida en la tabla \"#\"!";
Text[ italian ] = "La colonna \"#\" risulta sconosciuta alla tabella \"#\"!";
Text[ danish ] = "Kolonnen \"#\" er ukendt i tabellen \"#\"!";
Text[ swedish ] = "Kolumnen \"#\" <20>r ok<6F>nd i tabellen \"#\"!";
Text[ polish ] = "Kolumna \"#\" jest w tabeli \"#\" nieznana!";
Text[ portuguese_brazilian ] = "The column \"#\" is unknown in the table \"#\"!";
Text[ japanese ] = "列 \"#\" は、\"#\" のテーブルでは不明です。";
Text[ korean ] = "\"#\" 표에 알 수 없는 \"#\"열이 포함되어 있습니다.!";
Text[ chinese_simplified ] = "这个列 \"#\" 对数据库 \"#\" 而言是不明的!";
Text[ chinese_traditional ] = "這欄位<#>對這個表格<#>而言是不明的!";
Text[ turkish ] = "The column \"#\" is unknown in the table \"#\"!";
Text[ arabic ] = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \"#\" <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \"#\" !";
Text[ finnish ] = "Saraketta \"#\" ei tunneta taulukossa \"#\".";
Text[ catalan ] = "La columna \"#\" <20>s desconeguda a la taula \"#\".";
Text[ thai ] = "ไม่รู้จักคอลัมน์ \"#\" ในตาราง \"#\"!";
};
String RID_STR_SVT_SQL_SYNTAX_REAL_NO_VALID
{
Text = "Das Feld kann nicht mit einer Flie<69>kommazahl verglichen werden!";
Text [ ENGLISH ] = "The field can not be compared with a real!";
Text[ english_us ] = "The field cannot be compared with a floating point number.";
Text[ portuguese ] = "Este campo n<>o pode ser comparado com um n<>mero de v<>rgula flutuante!";
Text[ greek ] = "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
Text[ dutch ] = "Het veld kan niet worden vergeleken met een drijvende-komma getal!";
Text[ french ] = "Impossible de comparer le champ avec un nombre <20> virgule flottante !";
Text[ spanish ] = "<22>El campo no se puede comparar con un n<>mero de coma flotante!";
Text[ swedish ] = "F<>ltet kan inte j<>mf<6D>ras med ett flytande kommatal!";
Text[ russian ] = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
Text[ italian ] = "Il campo non pu<70> essere paragonato a un numero in virgola mobile!";
Text[ danish ] = "Feltet kan ikke sammenlignes med et flydende tal!";
Text[ polish ] = "Por<6F>wnanie pola z liczb<7A> rzeczywist<73> nie jest mo<6D>liwe!";
Text[ portuguese_brazilian ] = "The field can not be compared with a real!";
Text[ japanese ] = "このフィールドは浮動小数で比較できません。";
Text[ korean ] = "필드를 부동소수점의 수와 비교할 수 없습니다!";
Text[ chinese_simplified ] = "这个字段不能与一个带可变小数点位数相比较!";
Text[ chinese_traditional ] = "這欄的內容不可以和小數相比較!";
Text[ arabic ] = "<22><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!";
Text[ turkish ] = "Alan, bir kayan nokta say<61>s<EFBFBD> ile kar<61><72>la<6C>t<EFBFBD>r<EFBFBD>lamaz!";
Text[ finnish ] = "Kentt<74><74> ei voi verrata irralliseen pistenumeroon.";
Text[ catalan ] = "El camp no es pot comparar amb un n<>mero de coma flotant.";
Text[ thai ] = "ไม่สามารถเปรียบเทียบเขตข้อมูลด้วยตัวเลขทศนิยมได้";
};
String RID_STR_SVT_SQL_SYNTAX_CRIT_NO_COMPARE
{
Text = "Das angegebene Kriterium kann nicht mit diesem Feld verglichen werden!!";
Text [ ENGLISH ] = "The entered critisim can not be compared with this field!";
Text[ english_us ] = "The entered criterion cannot be compared with this field.";
Text[ portuguese ] = "Imposs<73>vel comparar o crit<69>rio indicado com este campo!";
Text[ russian ] = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.";
Text[ greek ] = "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>!";
Text[ dutch ] = "Het aangegeven criterium kan niet worden vergeleken met dit veld!";
Text[ french ] = "Impossible de comparer le crit<69>re saisi avec ce champ !";
Text[ spanish ] = "<22>El criterio indicado no se puede comparar con este campo!";
Text[ italian ] = "Il criterio specificato non pu<70> essere paragonato a questo campo!";
Text[ danish ] = "Det angivne kriterium kan ikke sammenlignes med dette felt!!";
Text[ swedish ] = "Det angivna kriteriet kan inte j<>mf<6D>ras med det h<>r f<>ltet!!";
Text[ polish ] = "Podanego kryterium nie mo<6D>na por<6F>wna<6E> z danym polem!!";
Text[ portuguese_brazilian ] = "The entered critisim can not be compared with this field!!";
Text[ japanese ] = "入力した検索条件はこのフィールドで比較できません。";
Text[ korean ] = "지정한 기준을 이 필드와 비교할 수 없습니다!!";
Text[ chinese_simplified ] = "设定的条件无法与这个字段比较!";
Text[ chinese_traditional ] = "指定的條件無法和這個欄位相比較!";
Text[ arabic ] = "<22><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>!!";
Text[ turkish ] = "Belirtilen <20>l<EFBFBD><6C>t, bu alan ile kar<61><72>la<6C>t<EFBFBD>r<EFBFBD>lamaz!!";
Text[ finnish ] = "Sy<53>tetty<74> ehtoa ei voi verrata t<>h<EFBFBD>n kentt<74><74>n.";
Text[ catalan ] = "El criteri indicat no es pot comparar amb aquest camp!";
Text[ thai ] = "ไม่สามารถเปรียบเทียบเกณฑ์ที่ป้อนด้วยเขตข้อมูลนี้ได้";
};

View File

@@ -2,9 +2,9 @@
#
# $RCSfile: makefile.mk,v $
#
# $Revision: 1.11 $
# $Revision: 1.12 $
#
# last change: $Author: fs $ $Date: 2002-05-08 07:38:58 $
# last change: $Author: oj $ $Date: 2002-09-27 11:21:40 $
#
# The Contents of this file are made available subject to the terms of
# either of the following licenses
@@ -90,8 +90,9 @@ SRC1FILES= \
SLOFILES = \
$(SLO)$/dbcharsethelper.obj \
$(SLO)$/typeconversionclient.obj \
$(SLO)$/dbcharsethelper.obj \
$(SLO)$/ParseContext.obj \
$(SLO)$/typeconversionclient.obj \
$(SLO)$/confirmdelete.obj \
$(SLO)$/dbtoolsclient.obj \
$(SLO)$/sqlparserclient.obj \

View File

@@ -2,9 +2,9 @@
*
* $RCSfile: sqlparserclient.cxx,v $
*
* $Revision: 1.2 $
* $Revision: 1.3 $
*
* last change: $Author: fs $ $Date: 2002-09-12 14:15:52 $
* last change: $Author: oj $ $Date: 2002-09-27 11:21:40 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -62,6 +62,7 @@
#ifndef SVX_SQLPARSERCLIENT_HXX
#include "sqlparserclient.hxx"
#endif
#include "ParseContext.hxx"
//........................................................................
namespace svxform
@@ -86,7 +87,7 @@ namespace svxform
if (!getFactory().is())
ODbtoolsClient::create();
if (getFactory().is())
m_xParser = getFactory()->createSQLParser(m_xORB);
m_xParser = getFactory()->createSQLParser(m_xORB,getParseContext());
}
//........................................................................
@@ -96,6 +97,9 @@ namespace svxform
/*************************************************************************
* history:
* $Log: not supported by cvs2svn $
* Revision 1.2 2002/09/12 14:15:52 fs
* #97420# (on behalf of BerryJia@openoffice.org) lazy construction, to load the dbtools lib only if needed
*
* Revision 1.1 2001/07/25 13:35:31 fs
* initial checkin - base class for load-on-demand usage of the OSQLParser
*

View File

@@ -2,9 +2,9 @@
*
* $RCSfile: sqlparserclient.hxx,v $
*
* $Revision: 1.2 $
* $Revision: 1.3 $
*
* last change: $Author: fs $ $Date: 2002-09-12 14:15:27 $
* last change: $Author: oj $ $Date: 2002-09-27 11:20:57 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -65,6 +65,9 @@
#ifndef SVX_DBTOOLSCLIENT_HXX
#include "dbtoolsclient.hxx"
#endif
#ifndef SVX_QUERYDESIGNCONTEXT_HXX
#include "ParseContext.hxx"
#endif
#ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#endif
@@ -78,6 +81,7 @@ namespace svxform
//= OSQLParserClient
//====================================================================
class OSQLParserClient : public ODbtoolsClient
,public ::svxform::OParseContextClient
{
private:
//add by BerryJia for fixing Bug97420 Time:2002-9-12-11:00(PRC time)
@@ -118,6 +122,9 @@ namespace svxform
/*************************************************************************
* history:
* $Log: not supported by cvs2svn $
* Revision 1.2 2002/09/12 14:15:27 fs
* #97420# (on behalf of BerryJia@openoffice.org) lazy construction, to load the dbtools lib only if needed
*
* Revision 1.1 2001/07/25 13:35:23 fs
* initial checkin - base class for load-on-demand usage of the OSQLParser
*