23#include <tqvaluevector.h>
29#include "schemadata.h"
30#include "tableschema.h"
31#include "relationship.h"
37class QuerySchemaPrivate;
38class QuerySchemaParameter;
39typedef TQValueList<QuerySchemaParameter> QuerySchemaParameterList;
51 typedef TQPtrVector<QueryColumnInfo> Vector;
52 typedef TQPtrList<QueryColumnInfo> List;
53 typedef TQPtrListIterator<QueryColumnInfo> ListIterator;
60 return alias.isEmpty() ? field->name().latin1() : ( const char*)alias;
66 return field->caption().isEmpty() ? TQString(aliasOrName()) : field->caption(); }
84 TQString debugString() const;
92 int m_indexForVisibleLookupValue;
103 typedef TQValueListConstIterator<OrderByColumn> ListConstIterator;
133 TQString debugString() const;
139 TQString toSQLString( bool includeTableName = true,
140 Driver *drv = 0, int identifierEscaping = Driver::EscapeDriver|Driver::EscapeAsNecessary) const;
171 const TQString& field1, bool ascending1 = true,
172 const TQString& field2 = TQString(), bool ascending2 = true,
173 const TQString& field3 = TQString(), bool ascending3 = true,
174 const TQString& field4 = TQString(), bool ascending4 = true,
175 const TQString& field5 = TQString(), bool ascending5 = true);
183 void appendField( Field& field, bool ascending = true);
188 bool appendField( QuerySchema& querySchema, const TQString& fieldName,
189 bool ascending = true);
193 bool appendColumn( QuerySchema& querySchema, bool ascending = true, int pos = -1);
199 bool isEmpty() const { return OrderByColumnListBase::isEmpty(); }
202 uint count() const { return OrderByColumnListBase::count(); }
205 void clear() { OrderByColumnListBase::clear(); }
207 const_iterator constBegin () const { return OrderByColumnListBase::constBegin(); }
208 const_iterator constEnd () const { return OrderByColumnListBase::constEnd(); }
211 TQString debugString() const;
217 TQString toSQLString( bool includeTableNames = true,
218 Driver *drv = 0, int identifierEscaping = Driver::EscapeDriver|Driver::EscapeAsNecessary) const;
272 FieldList& insertField(uint position, Field *field, bool visible);
280 int bindToTable, bool visible = true);
294 bool visible = true);
297 virtual void removeField( Field *field);
305 bool isColumnVisible(uint position) const;
308 void setColumnVisible(uint position, bool v);
318 virtual void clear();
321 virtual TQString debugString();
355 void addTable( TableSchema *table, const TQCString& alias = TQCString());
364 TableSchema* table( const TQString& tableName) const;
387 Field* findTableField( const TQString &tableOrTableAndFieldName) const;
395 TQCString columnAlias(uint position) const;
402 bool hasColumnAlias(uint position) const;
406 void setColumnAlias(uint position, const TQCString& alias);
429 int tableBoundToColumn(uint columnPosition) const;
434 TQCString tableAlias(uint position) const;
447 int tablePositionForAlias( const TQCString& name) const;
453 int tablePosition( const TQString& tableName) const;
461 TQValueList<int> tablePositions( const TQString& tableName) const;
468 bool hasTableAlias(uint position) const;
472 int columnPositionForAlias( const TQCString& name) const;
478 void setTableAlias(uint position, const TQCString& alias);
481 Relationship::List* relationships() const;
490 Relationship* addRelationship( Field *field1, Field *field2 );
519 virtual Field* field( const TQString& name, bool expanded = true);
522 inline Field* field(uint id) { return FieldList::field( id); }
536 QueryColumnInfo* columnInfo( const TQString& identifier, bool expanded = true);
543 WithInternalFieldsAndRowID
588 QueryColumnInfo::Vector fieldsExpanded(FieldsExpandedOptions options = Default);
591 QueryColumnInfo::Vector internalFields();
635 TQMap<QueryColumnInfo*,int> columnsOrder(ColumnsOrderOptions options = ExpandedList);
659 TQValueVector<int> pkeyFieldsOrder();
679 uint pkeyFieldsCount();
685 QueryColumnInfo::List* autoIncrementFields();
688 TQString statement() const;
691 void setStatement( const TQString &s);
703 static TQString sqlColumnsList(QueryColumnInfo::List* infolist, Driver *driver);
707 TQString autoIncrementSQLFieldsList( Driver *driver);
712 void setWhereExpression( BaseExpr *expr);
720 void addToWhereExpression( KexiDB::Field *field, const TQVariant& value, int relation = '=');
742 QuerySchemaParameterList parameters();
747 void computeFieldsExpanded();
749 QuerySchemaPrivate *d;
752 friend class QuerySchemaPrivate;
818 virtual TQString debugString() const;
822 virtual Field* copy() const;
A base class for all expressions.
Provides database connection, allowing queries and data modification.
Generic database abstraction.
TQPtrList< Field > List list of fields
KexiDB::OrderByColumnList provides list of sorted columns for a query schema.
KexiDB::OrderByColumn provides information about a single query column used for sorting.
QueryColumnInfo * m_column Column to sort.
Field * field() const A field to sort, used only in case when the second constructor was used.
Field * m_field Used only in case when the second contructor is used.
int m_pos A helper for m_column that allows to know that sorting column was defined by providing its position.
QueryColumnInfo * column() const A column to sort.
bool m_ascending true if ascending sorting should be performed (the default).
KexiDB::QueryAsterisk class encapsulates information about single asterisk in query definition.
bool isAllTableAsterisk() const
virtual bool isQueryAsterisk() const
QuerySchema * query() const
bool isSingleTableAsterisk() const
virtual TableSchema * table() const
Helper class that assigns additional information for the column in a query.
TQCString aliasOrName() const
bool visible true if this column is visible to the user (and its data is fetched by the engine)
int indexForVisibleLookupValue() const
TQString captionOrAliasOrName() const
QueryColumnInfo * foreignColumn() const
void setIndexForVisibleLookupValue(int index)
KexiDB::QuerySchema provides information about database query.
@ Default All fields are returned even if duplicated.
@ Unique Unique list of fields is returned.
@ WithInternalFields Like Default but internal fields (for lookup) are appended.
@ UnexpandedList A map for unexpanded list is created.
@ UnexpandedListWithoutAsterisks A map for unexpanded list is created, with asterisks skipped.
TQPtrList< TableSchema > List Type of tables list.
High-level database connectivity library with database backend drivers.
TQValueList< OrderByColumn > OrderByColumnListBase A base for KexiDB::OrderByColumnList.
|