本文整理汇总了C++中FLTableMetaData::field方法的典型用法代码示例。如果您正苦于以下问题:C++ FLTableMetaData::field方法的具体用法?C++ FLTableMetaData::field怎么用?C++ FLTableMetaData::field使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FLTableMetaData
的用法示例。
在下文中一共展示了FLTableMetaData::field方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: nextCounter
QVariant FLUtil::nextCounter( const QString & name, FLSqlCursor * cursor_ ) {
if ( !cursor_ )
return QVariant();
FLTableMetaData *tMD = cursor_->metadata();
if ( !tMD )
return QVariant();
FLFieldMetaData *field = tMD->field( name );
if ( !field )
return QVariant();
int type = field->type();
if ( type != QVariant::String && type != QVariant::Double )
return QVariant();
unsigned int len = field->length();
QString cadena;
FLSqlQuery q( 0, cursor_->db()->connectionName() );
q.setForwardOnly( true );
q.setTablesList( tMD->name() );
q.setSelect( name );
q.setFrom( tMD->name() );
q.setWhere( "LENGTH(" + name + ")=" + QString::number( len ) );
q.setOrderBy( name + " DESC" );
if ( !q.exec() )
return QVariant();
double maxRange = pow( 10, len );
double numero = maxRange;
while ( numero >= maxRange ) {
if ( !q.next() ) {
numero = 1;
break;
}
numero = q.value( 0 ).toDouble();
numero++;
}
if ( type == QVariant::String ) {
cadena = QString::number( numero, 'f', 0 );
if ( cadena.length() < len ) {
QString str;
str.fill( '0', ( len - cadena.length() ) );
cadena = str + cadena;
}
return QVariant( cadena );
}
if ( type == QVariant::Double )
return QVariant( numero );
return QVariant();
}
示例2: roundFieldValue
QString FLUtil::roundFieldValue(const QVariant &n, const QString &table, const QString &field)
{
FLTableMetaData *tmd = FLSqlConnections::database()->manager()->metadata(table);
if (!tmd)
return 0;
FLFieldMetaData *fmd = tmd->field(field);
if (!fmd)
return 0;
return buildNumber(n, 'f', fmd->partDecimal());
}
示例3:
FLTableMetaData::FLFieldMetaDataList * FLSqlQuery::fieldMetaDataList() {
if ( !d->fieldMetaDataList_ ) {
d->fieldMetaDataList_ = new FLTableMetaData::FLFieldMetaDataList( 31 );
d->fieldMetaDataList_->setAutoDelete( true );
QString table, field;
for ( QStringList::Iterator it = d->fieldList_.begin(); it != d->fieldList_.end(); ++it ) {
table = ( *it ).section( '.', 0, 0 );
field = ( *it ).section( '.', 1, 1 );
FLTableMetaData * mtd = d->db_->manager()->metadata( table, true );
d->fieldMetaDataList_->insert( field.lower(), mtd->field( field ) );
}
}
return d->fieldMetaDataList_;
}
示例4: recordInfo
QSqlRecordInfo SqliteDriver::recordInfo(const QString &tablename) const
{
QSqlRecordInfo info;
if (!isOpen() || !dataBase_)
return info;
QDomDocument doc(tablename);
QDomElement docElem;
QString stream = db_->managerModules()->contentCached(tablename + ".mtd");
if (!FLUtil::domDocumentSetContent(doc, stream)) {
#ifdef FL_DEBUG
qWarning("FLManager : " + QApplication::tr("Error al cargar los metadatos para la tabla %1").arg(tablename));
#endif
return recordInfo2(tablename);
}
docElem = doc.documentElement();
FLTableMetaData *mtd = db_->manager()->metadata(&docElem, true);
if (!mtd)
return recordInfo2(tablename);
FLTableMetaData::FLFieldMetaDataList *fl = mtd->fieldList();
if (!fl) {
delete mtd;
return recordInfo2(tablename);
}
if (fl->isEmpty()) {
delete mtd;
return recordInfo2(tablename);
}
QStringList fieldsNames = QStringList::split(",", mtd->fieldsNames());
for (QStringList::Iterator it = fieldsNames.begin(); it != fieldsNames.end(); ++it) {
FLFieldMetaData *field = mtd->field((*it));
info.append(QSqlFieldInfo(field->name(), FLFieldMetaData::flDecodeType(field->type())));
}
delete mtd;
return info;
}
示例5: alterTable
bool SqliteDriver::alterTable(const QString &mtd1, const QString &mtd2, const QString &key)
{
#ifndef FL_QUICK_CLIENT
FLTableMetaData *oldMTD = 0;
FLTableMetaData *newMTD = 0;
QDomDocument doc("doc");
QDomElement docElem;
if (!FLUtil::domDocumentSetContent(doc, mtd1)) {
#ifdef FL_DEBUG
qWarning("FLManager::alterTable : " + QApplication::tr("Error al cargar los metadatos."));
#endif
} else {
docElem = doc.documentElement();
oldMTD = db_->manager()->metadata(&docElem, true);
}
if (oldMTD && oldMTD->isQuery())
return true;
if (!FLUtil::domDocumentSetContent(doc, mtd2)) {
#ifdef FL_DEBUG
qWarning("FLManager::alterTable : " + QApplication::tr("Error al cargar los metadatos."));
#endif
return false;
} else {
docElem = doc.documentElement();
newMTD = db_->manager()->metadata(&docElem, true);
}
if (!oldMTD)
oldMTD = newMTD;
if (oldMTD->name() != newMTD->name()) {
#ifdef FL_DEBUG
qWarning("FLManager::alterTable : " + QApplication::tr("Los nombres de las tablas nueva y vieja difieren."));
#endif
if ((oldMTD != newMTD) && oldMTD)
delete oldMTD;
if (newMTD)
delete newMTD;
return false;
}
QString oldPK = oldMTD->primaryKey(), newPK = newMTD->primaryKey();
if (oldPK != newPK) {
#ifdef FL_DEBUG
qWarning("FLManager::alterTable : " + QApplication::tr("Los nombres de las claves primarias difieren."));
#endif
if ((oldMTD != newMTD) && oldMTD)
delete oldMTD;
if (newMTD)
delete newMTD;
return false;
}
if (oldMTD->fieldType(oldPK) != newMTD->fieldType(newPK)) {
#ifdef FL_DEBUG
qWarning("FLManager::alterTable : " + QApplication::tr("Los tipos de las claves primarias difieren."));
#endif
if ((oldMTD != newMTD) && oldMTD)
delete oldMTD;
if (newMTD)
delete newMTD;
return false;
}
if (db_->manager()->checkMetaData(oldMTD, newMTD)) {
if ((oldMTD != newMTD) && oldMTD)
delete oldMTD;
if (newMTD)
delete newMTD;
return true;
}
if (!db_->manager()->existsTable(oldMTD->name())) {
#ifdef FL_DEBUG
qWarning("FLManager::alterTable : " + QApplication::tr("La tabla %1 antigua de donde importar los registros no existe.").arg(oldMTD->name()));
#endif
if ((oldMTD != newMTD) && oldMTD)
delete oldMTD;
if (newMTD)
delete newMTD;
return false;
}
FLTableMetaData::FLFieldMetaDataList *fieldList = oldMTD->fieldList();
FLFieldMetaData *oldField = 0;
if (!fieldList) {
#ifdef FL_DEBUG
qWarning("FLManager::alterTable : " + QApplication::tr("Los antiguos metadatos no tienen campos."));
#endif
if ((oldMTD != newMTD) && oldMTD)
//.........这里部分代码省略.........
示例6: while
FLTableMetaData *FLManager::metadata(QDomElement *mtd, bool quick)
{
if (!mtd)
return 0;
QString name, a, q;
bool v = true, ed = true, cw = true, dl = false;
QDomNode no = mtd->firstChild();
while (!no.isNull()) {
QDomElement e = no.toElement();
if (!e.isNull()) {
if (e.tagName() == "field") {
no = no.nextSibling();
continue;
}
if (e.tagName() == "name") {
name = e.text();
no = no.nextSibling();
continue;
}
if (e.tagName() == "query") {
q = e.text();
no = no.nextSibling();
continue;
}
if (e.tagName() == "alias") {
a = e.text().mid(30, e.text().length() - 32);
a = FLUtil::translate("MetaData", a);
no = no.nextSibling();
continue;
}
if (e.tagName() == "visible") {
v = (e.text() == "true");
no = no.nextSibling();
continue;
}
if (e.tagName() == "editable") {
ed = (e.text() == "true");
no = no.nextSibling();
continue;
}
if (e.tagName() == "concurWarn") {
cw = (e.text() == "true");
no = no.nextSibling();
continue;
}
if (e.tagName() == "detectLocks") {
dl = (e.text() == "true");
no = no.nextSibling();
continue;
}
}
no = no.nextSibling();
}
FLTableMetaData *tmd = new FLTableMetaData(name, a, q);
FLCompoundKey *cK = 0;
QStringList assocs;
tmd->setConcurWarn(cw);
tmd->setDetectLocks(dl);
no = mtd->firstChild();
while (!no.isNull()) {
QDomElement e = no.toElement();
if (!e.isNull()) {
if (e.tagName() == "field") {
FLFieldMetaData *f = metadataField(&e, v, ed);
if (!tmd)
tmd = new FLTableMetaData(name, a, q);
tmd->addFieldMD(f);
if (f->isCompoundKey()) {
if (!cK)
cK = new FLCompoundKey();
cK->addFieldMD(f);
}
if (!f->associatedFieldName().isEmpty()) {
assocs.append(f->associatedFieldName());
assocs.append(f->associatedFieldFilterTo());
assocs.append(f->name());
}
no = no.nextSibling();
continue;
}
}
no = no.nextSibling();
}
tmd->setCompoundKey(cK);
QString aWith, aBy;
for (QStringList::Iterator it = assocs.begin(); it != assocs.end(); ++it) {
aWith = (*it);
++it;
aBy = (*it);
++it;
tmd->field((*it))->setAssociatedField(tmd->field(aWith), aBy);
}
//.........这里部分代码省略.........