Ejemplo n.º 1
0
void ScriptablePrivate::loadScript(const QString& oName)
{
  qDebug() << "Looking for a script " << oName;
  XSqlQuery scriptq;
  scriptq.prepare("SELECT script_source, script_order"
            "  FROM script"
            " WHERE((script_name=:script_name)"
            "   AND (script_enabled))"
            " ORDER BY script_order;");
  scriptq.bindValue(":script_name", oName);
  scriptq.exec();
  while(scriptq.next())
  {
    if(engine())
    {
      QString script = scriptHandleIncludes(scriptq.value("script_source").toString());
      QScriptValue result = _engine->evaluate(script, _parent->objectName());
      if (_engine->hasUncaughtException())
      {
        int line = _engine->uncaughtExceptionLineNumber();
        qDebug() << "uncaught exception at line" << line << ":" << result.toString();
      }
    }
    else
      qDebug() << "could not initialize engine";
  }
}
Ejemplo n.º 2
0
QSqlError pki_x509super::lookupKey()
{
	XSqlQuery q;
	unsigned hash = pubHash();

	SQL_PREPARE(q, "SELECT item FROM public_keys WHERE hash=?");
	q.bindValue(0, hash);
	q.exec();
	if (q.lastError().isValid())
		return q.lastError();
	while (q.next()) {
		pki_key *x = db_base::lookupPki<pki_key>(q.value(0));
		if (!x) {
			qDebug("Public key with id %d not found",
				q.value(0).toInt());
			continue;
		}
		x->resetUcount();
		if (compareRefKey(x)) {
			setRefKey(x);
			break;
		}
	}
	return q.lastError();
}
Ejemplo n.º 3
0
void CSVAddMapInputDialog::populateTable()
{
  XSqlQuery relq;
  if (_schema->currentIndex() == 0)
    relq.prepare("SELECT CASE nspname WHEN 'public' THEN relname"
                 "                    ELSE nspname || '.' || relname"
                 "       END AS relname,"
                 "       CASE nspname WHEN 'public' THEN 0 ELSE 1 END AS seq"
                 "  FROM pg_class"
                 "  JOIN pg_namespace ON (relnamespace=pg_namespace.oid)"
                 " WHERE ((relkind IN ('r', 'v'))"
                 "   AND  (nspname !~ '^pg_')"
                 "   AND  (nspname != 'information_schema'))"
                 " ORDER BY seq, relname;");
  else
  {
    relq.prepare("SELECT relname"
                 "  FROM pg_class"
                 "  JOIN pg_namespace ON (relnamespace=pg_namespace.oid)"
                 " WHERE ((relkind IN ('r', 'v'))"
                 "   AND  (nspname = :nspname))"
                 " ORDER BY relname;");
    relq.bindValue(":nspname", _schema->currentText());
  }
  if (relq.exec())
    _table->clear();
  while (relq.next())
    _table->addItem(relq.value("relname").toString());
  if (relq.lastError().type() != QSqlError::NoError)
  {
    QMessageBox::critical(this, tr("Database Error"), relq.lastError().text());
    return;
  }
}
Ejemplo n.º 4
0
int main(int /*argc*/, const char * /*argv*/[]) {
    QTextOStream qout(stdout);

    QFile file("test.mql");
    if(file.open(IO_ReadOnly)) {
        QTextStream stream(&file);
        QString query = stream.read();
        file.close();

        MetaSQLQuery mql(query);

        if(mql.isValid()) {
            ParameterList params;
            params.append("classcode_code", QVariant("^MA"));
            qout << "The parsed query generated a valid object." << endl;
            XSqlQuery qry = mql.toQuery(params);
            while(qry.next()) {
                qDebug("row");
            }
        } else {
            qout << "The parsed query did not generate a valid object." << endl;
        }
    } else {
        qout << "Unable to open '" << file.name() << "' for reading." << endl;
    }

    return 0;
}
void MetaSQLSaveParameters::sGetGroups()
{
  ParameterList params;
  if (_schema->currentText() == "public")
    params.append("public");
  else if (! _schema->currentText().isEmpty())
    params.append("schema", _schema->currentText());

  QString groups("SELECT DISTINCT metasql_group"
                 "<? if exists(\"public\") ?>"
                 "  FROM ONLY metasql"
                 "<? elseif exists(\"schema\") ?>"
                 "  FROM <? literal(\"schema\") ?>.pkgmetasql"
                 "<? else ?>"
                 "  FROM metasql"
                 "<? endif ?>"
                 " ORDER BY metasql_group;");
  MetaSQLQuery groupm(groups);
  XSqlQuery groupq = groupm.toQuery(params);
  groupq.exec();
  _group->clear();
  _group->addItem("");
  while (groupq.next())
    _group->addItem(groupq.value("metasql_group").toString());
  if (groupq.lastError().type() != QSqlError::NoError)
    QMessageBox::warning(this, tr("Database Errror"),
                         groupq.lastError().text());

  _group->setCurrentIndex(-1);
}
Ejemplo n.º 6
0
bool XSqlQueryProto::next()
{
  XSqlQuery *item = qscriptvalue_cast<XSqlQuery*>(thisObject());
  if (item)
    return item->next();
  return false;
}
Ejemplo n.º 7
0
void postSubLedger::sPost()
{
  QStringList sources;
  QList<int> journalnumbers;
  XSqlQuery qry;
  MetaSQLQuery mql = mqlLoad("postSubLedger", "post");
  QList<XTreeWidgetItem*> selected = _sources->selectedItems();
  for (int i = 0; i < selected.size(); i++)
    sources << selected.at(i)->rawValue("sltrans_source").toString();

  ParameterList params;
  _subLedgerDates->appendValue(params);
  params.append("distDate", _distDate->date());
  params.append("source_list", sources);

  XSqlQuery jrnls;
  jrnls = mql.toQuery(params);
  if (jrnls.lastError().type() != QSqlError::NoError)
  {
    systemError(this, jrnls.lastError().databaseText(), __FILE__, __LINE__);
    return;
  }

  while (jrnls.next())
    journalnumbers << jrnls.value("result").toInt();

  if (_print->isChecked() && journalnumbers.size())
    sPrint(journalnumbers);

  sFillList();
}
QWidget *ItemCharacteristicDelegate::createEditor(QWidget *parent,
    const QStyleOptionViewItem & /*style*/,
    const QModelIndex & index) const
{
  if(index.column()!=1)
    return 0;

  QModelIndex idx = index.sibling(index.row(), CHAR);
  characteristic::Type chartype = characteristic::Text;

  // Determine what type we have
  XSqlQuery qry;
  qry.prepare("SELECT char_id, char_type "
              "FROM char "
              "WHERE (char_id=:char_id); ");
  qry.bindValue(":char_id", idx.model()->data(idx, Qt::UserRole));
  qry.exec();
  if (qry.first())
    chartype = (characteristic::Type)qry.value("char_type").toInt();

  if (chartype == characteristic::Text ||
      chartype == characteristic::List)
  {
    qry.prepare("SELECT charass_value "
              "FROM char, charass "
              "  LEFT OUTER JOIN charopt ON ((charopt_char_id=charass_char_id) "
              "                          AND (charopt_value=charass_value)) "
              "WHERE ((charass_char_id=char_id)"
              " AND  (charass_target_type='I')"
              " AND  (charass_target_id=:item_id)"
              " AND  (char_id=:char_id) ) "
              "ORDER BY COALESCE(charopt_order,0), charass_value;");
    qry.bindValue(":char_id", idx.model()->data(idx, Qt::UserRole));
    qry.bindValue(":item_id", index.model()->data(index, Xt::IdRole));
    qry.exec();

    QComboBox *editor = new QComboBox(parent);
    editor->setEditable(chartype == characteristic::Text);


#ifdef Q_WS_MAC
    QFont boxfont = editor->font();
    boxfont.setPointSize((boxfont.pointSize() == -1) ? boxfont.pixelSize() - 3 : boxfont.pointSize() - 3);
    editor->setFont(boxfont);
#endif

    while(qry.next())
      editor->addItem(qry.value("charass_value").toString());
    editor->installEventFilter(const_cast<ItemCharacteristicDelegate*>(this));

    return editor;
  }
  else if (chartype == characteristic::Date)
  {
    DLineEdit *editor = new DLineEdit(parent);
    return editor;
  }
  return 0;
}
Ejemplo n.º 9
0
void assignLotSerial::sPrint()
{
  QPrinter printer(QPrinter::HighResolution);
  bool setupPrinter = true;
  bool userCanceled = false;
  QString label;
  QString presetPrinter(xtsettingsValue(QString("%1.defaultPrinter").arg(objectName())).toString());

  XSqlQuery qlabel;
  qlabel.prepare("SELECT ls_id, itemsite_controlmethod "
                 "FROM itemlocdist "
                 "LEFT OUTER JOIN itemsite ON (itemlocdist_itemsite_id = itemsite_id) "
                 "JOIN ls ON (itemlocdist_ls_id=ls_id) "
                 "WHERE (itemlocdist_series=:itemlocdist_series) "
                 "ORDER BY ls_number;");
  qlabel.bindValue(":itemlocdist_series", _itemlocSeries);
  qlabel.exec();
  if (qlabel.first()) {
    if (qlabel.value("itemsite_controlmethod").toString() == "L")
      label = tr("Lot#:");
    else
      label = tr("Serial#:");

    if (presetPrinter.isEmpty()) {
      if (orReport::beginMultiPrint(&printer, userCanceled) == false) {
        if(!userCanceled) {
          systemError(this, tr("<p>Could not initialize printing system for "
                               "multiple reports."));
          return;
        }
      }
    }
    else {
      printer.setPrinterName(presetPrinter);
      orReport::beginMultiPrint(&printer);
    }

    for (int i = 0; i < qlabel.size(); i++) {
      ParameterList params;
      params.append("label", label);
      params.append("ls_id", qlabel.value("ls_id").toInt());

      orReport report("LotSerialLabel", params);
      if (report.isValid() && report.print(&printer, setupPrinter))
        setupPrinter = false;
      else {
        report.reportError(this);
        break;
      }
      qlabel.next();
    }
    orReport::endMultiPrint(&printer);
  }
  else if (q.lastError().type() != QSqlError::NoError) {
    systemError(this, q.lastError().databaseText(), __FILE__, __LINE__);
    return;
  }
}
Ejemplo n.º 10
0
user::user(QWidget* parent, const char * name, Qt::WindowFlags fl)
  : XDialog(parent, name, fl)
{
  setupUi(this);

  _authCache     = false;
  _cUsername     = "";
  _crmacctid     = -1;
  _inTransaction = false;
  _mode          = cView;

  connect(_close, SIGNAL(clicked()), this, SLOT(sClose()));
  connect(_crmacct, SIGNAL(clicked()),   this,     SLOT(sCrmAccount()));
  connect(_save, SIGNAL(clicked()), this, SLOT(sSave()));
  connect(_add, SIGNAL(clicked()), this, SLOT(sAdd()));
  connect(_addAll, SIGNAL(clicked()), this, SLOT(sAddAll()));
  connect(_revoke, SIGNAL(clicked()), this, SLOT(sRevoke()));
  connect(_revokeAll, SIGNAL(clicked()), this, SLOT(sRevokeAll()));
  connect(_module, SIGNAL(activated(const QString&)), this, SLOT(sModuleSelected(const QString&)));
  connect(_granted, SIGNAL(itemSelected(int)), this, SLOT(sRevoke()));
  connect(_available, SIGNAL(itemSelected(int)), this, SLOT(sAdd()));
  connect(_username, SIGNAL(editingFinished()), this, SLOT(sCheck()));
  connect(_enhancedAuth, SIGNAL(toggled(bool)), this, SLOT(sEnhancedAuthUpdate()));
  connect(_grantedGroup, SIGNAL(itemSelected(int)), this, SLOT(sRevokeGroup()));
  connect(_availableGroup, SIGNAL(itemSelected(int)), this, SLOT(sAddGroup()));
  connect(_addGroup, SIGNAL(clicked()), this, SLOT(sAddGroup()));
  connect(_revokeGroup, SIGNAL(clicked()), this, SLOT(sRevokeGroup()));
  connect(_grantedSite, SIGNAL(itemSelected(int)), this, SLOT(sRevokeSite()));
  connect(_availableSite, SIGNAL(itemSelected(int)), this, SLOT(sAddSite()));
  connect(_addSite, SIGNAL(clicked()), this, SLOT(sAddSite()));
  connect(_revokeSite, SIGNAL(clicked()), this, SLOT(sRevokeSite()));

  _available->addColumn("Available Privileges", -1, Qt::AlignLeft);
  _granted->addColumn("Granted Privileges", -1, Qt::AlignLeft);

  _availableGroup->addColumn("Available Roles", -1, Qt::AlignLeft);
  _grantedGroup->addColumn("Granted Roles", -1, Qt::AlignLeft);

  _availableSite->addColumn("Available Sites", -1, Qt::AlignLeft);
  _grantedSite->addColumn("Granted Sites",      -1, Qt::AlignLeft);

  _locale->setType(XComboBox::Locales);

  XSqlQuery modq;
  modq.exec( "SELECT DISTINCT priv_module FROM priv ORDER BY priv_module;" );
  for (int i = 0; modq.next(); i++)
    _module->append(i, modq.value("priv_module").toString());

  if(_evaluation == true)
  {
    _enhancedAuth->setEnabled(false);
    _passwd->setEnabled(false);
    _verify->setEnabled(false);
  }

  if (!_metrics->boolean("MultiWhs"))
    _tab->removeTab(_tab->indexOf(_siteTab));
}
Ejemplo n.º 11
0
void purchaseOrderItem::sPopulateItemChar()
{
  XSqlQuery item;
  item.prepare( "SELECT char_id, char_name, "
             "  CASE WHEN char_type < 2 THEN "
             "    charass_value "
             "  ELSE "
             "    formatDate(charass_value::date) "
             " END AS f_charass_value, "
             "  charass_value, charass_value AS charass_value_qttooltiprole "
             " FROM ( "
             " SELECT char_id, char_type, char_name, "
             "   COALESCE(pi.charass_value,i2.charass_value) AS charass_value "
             " FROM "
             "   (SELECT DISTINCT char_id, char_type, char_name "
             "    FROM charass, char, charuse "
             "    WHERE ((charass_char_id=char_id) "
             "    AND (charuse_char_id=char_id AND charuse_target_type='PI') "
             "    AND (charass_target_type='I') "
             "    AND (charass_target_id=:item_id) )"
             "    UNION SELECT char_id, char_type, char_name "
             "    FROM charass, char "
             "    WHERE ((charass_char_id=char_id) "
             "    AND charass_char_id IN (SELECT charuse_char_id FROM charuse"
             "                            WHERE charuse_target_type = 'I')"
             "    AND  (charass_target_type = 'PI' AND charass_target_id=:poitem_id)) ) AS data "
             "   LEFT OUTER JOIN charass  pi ON ((:poitem_id=pi.charass_target_id) "
             "                               AND ('PI'=pi.charass_target_type) "
             "                               AND (pi.charass_char_id=char_id)) "
             "   LEFT OUTER JOIN item     i1 ON (i1.item_id=:item_id) "
             "   LEFT OUTER JOIN charass  i2 ON ((i1.item_id=i2.charass_target_id) "
             "                               AND ('I'=i2.charass_target_type) "
             "                               AND (i2.charass_char_id=char_id) "
             "                               AND (i2.charass_default))) data2 "
             " ORDER BY char_name;"  );
  item.bindValue(":item_id", _item->id());
  item.bindValue(":poitem_id", _poitemid);
  item.exec();
  int row = 0;
  _itemchar->removeRows(0, _itemchar->rowCount());
  QModelIndex idx;
  while(item.next())
  {
    _itemchar->insertRow(_itemchar->rowCount());
    idx = _itemchar->index(row, 0);
    _itemchar->setData(idx, item.value("char_name"), Qt::DisplayRole);
    _itemchar->setData(idx, item.value("char_id"), Qt::UserRole);
    idx = _itemchar->index(row, 1);
    _itemchar->setData(idx, item.value("charass_value"), Qt::DisplayRole);
    _itemchar->setData(idx, _item->id(), Xt::IdRole);
    _itemchar->setData(idx, _item->id(), Qt::UserRole);
    row++;
  }
}
Ejemplo n.º 12
0
void voidChecks::sVoid()
{
  XSqlQuery voidVoid;
  voidVoid.prepare("SELECT checkhead_id, checkhead_number,"
	    "       voidCheck(checkhead_id) AS result"
            "  FROM checkhead"
            " WHERE ((NOT checkhead_posted)"
            "   AND  (NOT checkhead_replaced)"
            "   AND  (NOT checkhead_deleted)"
            "   AND  (NOT checkhead_void)"
            "   AND  (checkhead_bankaccnt_id=:bankaccnt_id))");
  voidVoid.bindValue(":bankaccnt_id", _bankaccnt->id());
  voidVoid.exec();
  while (voidVoid.next())
  {
    int result = voidVoid.value("result").toInt();
    if (result < 0)
      systemError(this,
		  tr("Check %1").arg(voidVoid.value("checkhead_number").toString()) +
		  "\n" + storedProcErrorLookup("voidCheck", result),
		  __FILE__, __LINE__);
    else if(_issueReplacements->isChecked())
    {
      XSqlQuery rplc;
      rplc.prepare("SELECT replaceVoidedCheck(:checkhead_id) AS result;");
      while(voidVoid.next())
      {
        rplc.bindValue(":checkhead_id", voidVoid.value("checkhead_id").toInt());
        rplc.exec();
      }
    }
    omfgThis->sChecksUpdated(_bankaccnt->id(), -1, TRUE);
  }
  if (voidVoid.lastError().type() != QSqlError::NoError)
  {
    systemError(this, voidVoid.lastError().databaseText(), __FILE__, __LINE__);
    return;
  }

  accept();
}
Ejemplo n.º 13
0
QString ExportHelper::generateHTML(QString qtext, ParameterList &params, QString &errmsg)
{
  if (DEBUG)
    qDebug("ExportHelper::generateHTML(%s..., %d params, errmsg) entered",
           qPrintable(qtext.left(80)), params.size());
  if (qtext.isEmpty())
    return QString::null;

  QTextDocument    doc(0);
  QTextCursor      cursor(&doc);
  QTextTableFormat tablefmt;

  bool valid;
  QVariant includeheaderVar = params.value("includeHeaderLine", &valid);
  bool includeheader = (valid ? includeheaderVar.toBool() : false);
  if (DEBUG)
    qDebug("generateHTML(qtest, params, errmsg) includeheader = %d, valid = %d",
           includeheader, valid);

  MetaSQLQuery mql(qtext);
  XSqlQuery qry = mql.toQuery(params);
  if (qry.first())
  {
    int cols = qry.record().count();
    int expected = qry.size();
    if (includeheader)
      expected++;

    // presize the table
    cursor.insertTable((expected < 0 ? 1 : expected), cols, tablefmt);
    if (includeheader)
    {
      tablefmt.setHeaderRowCount(1);
      for (int p = 0; p < cols; p++)
      {
        cursor.insertText(qry.record().fieldName(p));
        cursor.movePosition(QTextCursor::NextCell);
      }
    }

    do {
      for (int i = 0; i < cols; i++)
      {
        cursor.insertText(qry.value(i).toString());
        cursor.movePosition(QTextCursor::NextCell);
      }
    } while (qry.next());
  }
  if (qry.lastError().type() != QSqlError::NoError)
    errmsg = qry.lastError().text();

  return doc.toHtml();
}
Ejemplo n.º 14
0
void QueryEditor::groupEditTextChanged(const QString & t)
{
  XSqlQuery xqry;
  xqry.prepare("SELECT DISTINCT metasql_name FROM metasql WHERE metasql_group=:group ORDER BY metasql_name;");
  xqry.bindValue(":group", t);
  if(xqry.exec())
  {
    _mqlName->clear();
    while(xqry.next())
      _mqlName->addItem(xqry.value(0).toString());
  }

}
Ejemplo n.º 15
0
void Parameters::load()
{
  _values.clear();

  XSqlQuery q;
  q.prepare(_readSql);
  q.bindValue(":username", _username);
  q.exec();
  while (q.next())
    _values[q.value("key").toString()] = q.value("value").toString();

  _dirty = FALSE;
}
Ejemplo n.º 16
0
QString scriptHandleIncludes(QString source)
{
  QString returnVal = source;
  if (returnVal.contains(QRegExp("#include")))
  {
    QStringList line = returnVal.split(QRegExp("\n\r?|\r\n?"));
    for (int i = 0; i < line.size(); i++)
    {
      if (line.at(i).startsWith("#include"))
      {
        QStringList words = line.at(i).split(QRegExp("\\s+"));
        if (words.size() <= 1)
          qWarning("scriptByName(%s): found #include with no script name",
                   qPrintable(line.at(i)));

        int order = -1;
        if (words.size() > 2)
          order = words.at(2).toInt();

        QString name;
        if (words.size() > 1)
          name = words.at(1);

        line.replace(i, "// " + line.at(i));
        XSqlQuery inclq;
        inclq.prepare("SELECT script_source "
                      "FROM script "
                      "WHERE ((script_name=:name)"
                      "  AND  ((script_order=:order) OR (:order = -1))"
                      "  AND  script_enabled) "
                      "ORDER BY script_order;");
        inclq.bindValue(":name",  name);
        inclq.bindValue(":order", order);
        inclq.exec();
        bool found = false;
        while (inclq.next())
        {
          found = true;
          line.replace(i,
                       line.at(i) + "\n" + scriptHandleIncludes(inclq.value("script_source").toString()));
        }
        if (found)
          line.replace(i,
                       line.at(i) + "\n// end include of " + name);
      }
    }
    returnVal = line.join("\n");
  }

  return returnVal;
}
Ejemplo n.º 17
0
void financialLayoutGroup::sFillGroupList()
{
  XSqlQuery financialFillGroupList;
  _group->clear();
  financialFillGroupList.prepare("SELECT flgrp_id, flgrp_name"
            "  FROM flgrp"
            " WHERE (flgrp_flhead_id=:flhead_id)"
            " ORDER BY flgrp_name;");
  financialFillGroupList.bindValue(":flhead_id", _flheadid);
  financialFillGroupList.exec();
  _group->append(-1, tr("Parent"));
  while(financialFillGroupList.next())
    _group->append(financialFillGroupList.value("flgrp_id").toInt(), financialFillGroupList.value("flgrp_name").toString());
}
Ejemplo n.º 18
0
QString ExportHelper::generateXML(QString qtext, QString tableElemName, ParameterList &params, QString &errmsg, int xsltmapid)
{
  if (DEBUG)
    qDebug("ExportHelper::generateXML(%s..., %s, %d params, errmsg, %d) entered",
           qPrintable(qtext.left(80)), qPrintable(tableElemName),
           params.size(), xsltmapid);
  if (DEBUG)
  {
    QStringList plist;
    for (int i = 0; i < params.size(); i++)
      plist.append("\t" + params.name(i) + ":\t" + params.value(i).toString());
    qDebug("generateXML parameters:\n%s", qPrintable(plist.join("\n")));
  }

  QDomDocument xmldoc("xtupleimport");
  QDomElement rootelem = xmldoc.createElement("xtupleimport");
  xmldoc.appendChild(rootelem);

  if (! qtext.isEmpty())
  {
    MetaSQLQuery mql(qtext);
    XSqlQuery qry = mql.toQuery(params);
    if (qry.first())
    {
      do {
        QDomElement tableElem = xmldoc.createElement(tableElemName);

        if (DEBUG)
          qDebug("generateXML starting %s", qPrintable(tableElemName));
        for (int i = 0; i < qry.record().count(); i++)
        {
          QDomElement fieldElem = xmldoc.createElement(qry.record().fieldName(i));
          if (qry.record().value(i).isNull())
            fieldElem.appendChild(xmldoc.createTextNode("[NULL]"));
          else
            fieldElem.appendChild(xmldoc.createTextNode(qry.record().value(i).toString()));
          tableElem.appendChild(fieldElem);
        }
        rootelem.appendChild(tableElem);
      } while (qry.next());
    }
    if (qry.lastError().type() != QSqlError::NoError)
      errmsg = qry.lastError().text();
  }

  if (xsltmapid < 0)
    return xmldoc.toString();
  else
    return XSLTConvertString(xmldoc.toString(), xsltmapid, errmsg);
}
Ejemplo n.º 19
0
QString ExportHelper::generateDelimited(const int qryheadid, ParameterList &params, QString &errmsg)
{
  if (DEBUG)
    qDebug("ExportHelper::exportDelimited(%d, %d params, errmsgd) entered",
           qryheadid, params.size());

  QStringList result;

  XSqlQuery itemq;
  itemq.prepare("SELECT *"
                "  FROM qryitem"
                " WHERE qryitem_qryhead_id=:id"
                " ORDER BY qryitem_order;");
  itemq.bindValue(":id", qryheadid);
  itemq.exec();
  while (itemq.next())
  {
    QString qtext;
    if (itemq.value("qryitem_src").toString() == "REL")
    {
      QString schemaName = itemq.value("qryitem_group").toString();
      qtext = "SELECT * FROM " +
              (schemaName.isEmpty() ? QString("") : schemaName + QString(".")) +
              itemq.value("qryitem_detail").toString();
    }
    else if (itemq.value("qryitem_src").toString() == "MQL")
    {
      QString tmpmsg;
      bool valid;
      qtext = MQLUtil::mqlLoad(itemq.value("qryitem_group").toString(),
                               itemq.value("qryitem_detail").toString(),
                               tmpmsg, &valid);
      if (! valid)
        errmsg = tmpmsg;
    }
    else if (itemq.value("qryitem_src").toString() == "CUSTOM")
      qtext = itemq.value("qryitem_detail").toString();

    if (! qtext.isEmpty())
    {
      QString oneresult = generateDelimited(qtext, params, errmsg);
      if (! oneresult.isEmpty())
        result.append(oneresult);
    }
  }
  if (itemq.lastError().type() != QSqlError::NoError)
    errmsg = itemq.lastError().text();

  return result.join("\n");
}
Ejemplo n.º 20
0
void MQLEdit::execQuery()
{
    if(!_loggedIn) {
	QMessageBox::warning(this, tr("Not Connected"),
          tr("You must be connected to a database in order to execute a query."));
	return;
    }

    _results->_table->setRowCount(0);
    _results->_table->setColumnCount(0);
    
    _sql->_log->clear();
    _log->_log->clear();
    _log->_log->append(tr("---- Parsing Query ----\n"));
    MetaSQLQuery mql(_text->toPlainText());
    _log->_log->append(mql.parseLog());
    if(mql.isValid()) {
	_log->_log->append(tr("Query parsed."));
	_log->_log->append(tr("---- Executing Query ----"));
	ParameterList plist = _pEdit->getParameterList();
	XSqlQuery qry = mql.toQuery(plist);
        _sql->_log->append(qry.executedQuery());
	if(qry.isActive()) {
            QSqlRecord rec = qry.record();
	    int ncols = rec.count();
            _results->_table->setColumnCount(ncols);
            int c;
            for(c = 0; c < ncols; c++) {
                _results->_table->setHorizontalHeaderItem(c, new QTableWidgetItem(rec.fieldName(c)));
            }
            int nrows = 0;
            while(qry.next()) {
                _results->_table->setRowCount(nrows + 1);
                for(c = 0; c < ncols; c++) {
                    _results->_table->setItem(nrows, c, new QTableWidgetItem(qry.value(c).toString()));
                }
                nrows++;
            }
            showResults();
	} else {
	    _log->_log->append(tr("Failed to execute query."));
	    QSqlError err = qry.lastError();
	    _log->_log->append(err.text());
	}
    } else {
	_log->_log->append(tr("ERROR: Invalid query!"));
	showLog();
    }   
}
Ejemplo n.º 21
0
void updateItemSiteLeadTimes::sUpdate()
{
  ParameterList params;
  _warehouse->appendValue(params);
  _classCode->appendValue(params);

  XSqlQuery updateUpdate;
  QProgressDialog progress;
  progress.setWindowModality(Qt::ApplicationModal);
  
  MetaSQLQuery mql = mqlLoad("updateItemsiteLeadTimes", "load");
  updateUpdate = mql.toQuery(params);
  if (ErrorReporter::error(QtCriticalMsg, this, tr("Error Loading Item Site Lead Times"),
                           updateUpdate, __FILE__, __LINE__))
  {
    return;
  }
  
  int count=0;
  progress.setMaximum(updateUpdate.size());
  XSqlQuery update;
  while (updateUpdate.next())
  {
    progress.setLabelText(tr("Site: %1\n"
                             "Item: %2 - %3")
                          .arg(updateUpdate.value("warehous_code").toString())
                          .arg(updateUpdate.value("item_number").toString())
                          .arg(updateUpdate.value("item_descrip1").toString()));
    
    ParameterList rparams = params;
    rparams.append("itemsite_id", updateUpdate.value("itemsite_id"));
    rparams.append("leadTimePad", _leadTimePad->value());
    MetaSQLQuery mql2 = mqlLoad("updateItemsiteLeadTimes", "update");
    update = mql2.toQuery(rparams);
    if (ErrorReporter::error(QtCriticalMsg, this, tr("Error Updating Item Site Lead Times"),
                             update, __FILE__, __LINE__))
    {
      return;
    }
    
    if (progress.wasCanceled())
      break;
    
    count++;
    progress.setValue(count);
  }

  accept();
}
Ejemplo n.º 22
0
void XWidget::loadScriptEngine()
{
  if(_private->_scriptLoaded)
    return;
  _private->_scriptLoaded = true;

  QStringList parts = objectName().split(" ");
  QStringList search_parts;
  QString oName;
  while(!parts.isEmpty())
  {
    search_parts.append(parts.takeFirst());
    oName = search_parts.join(" ");
    // load and run an QtScript that applies to this window
    qDebug() << "Looking for a script on widget " << oName;
    XSqlQuery scriptq;
    scriptq.prepare("SELECT script_source, script_order"
                    "  FROM script"
                    " WHERE((script_name=:script_name)"
                    "   AND (script_enabled))"
                    " ORDER BY script_order;");
    scriptq.bindValue(":script_name", oName);
    scriptq.exec();
    while(scriptq.next())
    {
      QString script = scriptHandleIncludes(scriptq.value("script_source").toString());
      if(!_private->_engine)
      {
        _private->_engine = new QScriptEngine();
        if (_preferences->boolean("EnableScriptDebug"))
        {
          _private->_debugger = new QScriptEngineDebugger(this);
          _private->_debugger->attachTo(_private->_engine);
        }
        omfgThis->loadScriptGlobals(_private->_engine);
        QScriptValue mywindow = _private->_engine->newQObject(this);
        _private->_engine->globalObject().setProperty("mywindow", mywindow);
      }

      QScriptValue result = _private->_engine->evaluate(script, objectName());
      if (_private->_engine->hasUncaughtException())
      {
        int line = _private->_engine->uncaughtExceptionLineNumber();
        qDebug() << "uncaught exception at line" << line << ":" << result.toString();
      }
    }
  }
}
Ejemplo n.º 23
0
void itemAliasList::sFillList()
{
  _item->clear();

  if (_alias->text().trimmed().length() == 0)
    return;

  QString pre( "SELECT item_id, itemalias_id, itemalias_number, item_number, (item_descrip1 || ' ' || item_descrip2) AS item_descrip "
               "FROM (SELECT DISTINCT item_id, item_number, item_descrip1, item_descrip2");
  QString post(") AS data, itemalias "
               "WHERE ( (itemalias_item_id=item_id)"
               " AND (UPPER(itemalias_number)~UPPER(:searchString)) )" );

  if(_x_preferences && _x_preferences->boolean("ListNumericItemNumbersFirst"))
    post += " ORDER BY toNumeric(item_number, 999999999999999), item_number";
  else
    post += " ORDER BY item_number";

  QStringList clauses;
  clauses = _extraClauses;
  if ( !(_itemType & ItemLineEdit::cActive) && !_showInactive->isChecked())
    clauses << "(item_active)";

  XSqlQuery alias;
  alias.prepare(buildItemLineEditQuery(pre, clauses, post, _itemType));
  alias.bindValue(":searchString", _alias->text().trimmed());
  alias.exec();
  if (alias.first())
  {
    if (_useQuery)
    {
      XSqlQuery item(_sql);
      if (item.first())
      {
          XTreeWidgetItem *last = NULL;
          do
          {
            if (item.findFirst("item_id", alias.value("item_id").toInt()) != -1)
              last = new XTreeWidgetItem( _item, last, alias.value("item_id").toInt(), alias.value("itemalias_id").toInt(),
                                        alias.value("itemalias_number").toString(), alias.value("item_number").toString(), alias.value("item_descrip").toString() );
          }
          while (alias.next());
      }
    }
    else
      _item->populate(alias, TRUE);
  }
}
Ejemplo n.º 24
0
void displayPrivate::setupCharacteristics(QStringList uses)
{
  QString column;
  QString name;
  QString sql = QString("SELECT char_id, char_name, char_type "
                        "FROM char "
                        "  JOIN charuse ON char_id = charuse_char_id"
                        " WHERE char_search "
                        "   AND charuse_target_type IN ('%1')"
                        " ORDER BY char_name;").arg(uses.join("','"));
  XSqlQuery chars;
  chars.exec(sql);
  if (chars.size() <= 0)
  {
    qWarning() << "Could not find any characteristics matching" << uses;
  }
  while (chars.next())
  {
    characteristic::Type chartype = (characteristic::Type)chars.value("char_type").toInt();
    column = QString("char%1").arg(chars.value("char_id").toString());
    name = chars.value("char_name").toString();
    _list->addColumn(name, -1, Qt::AlignLeft , false, column );
    if (chartype == characteristic::Text)
    {
      _charidstext.append(chars.value("char_id").toInt());
      _parameterWidget->append(name, column, ParameterWidget::Text);
    }
    else if (chartype == characteristic::List)
    {
      _charidslist.append(chars.value("char_id").toInt());
      QString sql =   QString("SELECT charopt_value, charopt_value "
                              "FROM charopt "
                              "WHERE (charopt_char_id=%1);")
          .arg(chars.value("char_id").toInt());
      _parameterWidget->append(name, column, ParameterWidget::Multiselect, QVariant(), false, sql);
    }
    else if (chartype == characteristic::Date)
    {
      _charidsdate.append(chars.value("char_id").toInt());
      QString start = QApplication::translate("display", "Start Date", 0);
      QString end = QApplication::translate("display", "End Date", 0);
      _parameterWidget->append(name + " " + start, column + "startDate", ParameterWidget::Date);
      _parameterWidget->append(name + " " + end, column + "endDate", ParameterWidget::Date);
    }
  }
}
Ejemplo n.º 25
0
void ContactList::sFillList()
{
  _listTab->clear();
  XSqlQuery query;

  query.prepare(_parent->_query +
		_parent->_extraClause +
		" ORDER BY cntct_last_name, cntct_first_name;");
  query.bindValue(":crmacct_id", _parent->_crmAcct->id());
  query.bindValue(":searchAcctId", _parent->_searchAcctId);
  query.exec();
  query.first();
  if (query.lastError().type() != QSqlError::None)
  {
    QMessageBox::critical(this, tr("A System Error Occurred at %1::%2.")
				  .arg(__FILE__)
				  .arg(__LINE__),
			  query.lastError().databaseText());
    return;
  }
  else if (query.size() < 1)	// no rows found with limit so try without
  {
    query.prepare(_parent->_query +
		  " ORDER BY cntct_last_name, cntct_first_name;");
    query.exec();
    query.first();
    if (query.lastError().type() != QSqlError::None)
    {
      QMessageBox::critical(this, tr("A System Error Occurred at %1::%2.")
				    .arg(__FILE__)
				    .arg(__LINE__),
			    query.lastError().databaseText());
      return;
    }
  }

  XTreeWidgetItem *last = 0;
  do {
    last = new XTreeWidgetItem(_listTab, last,
			     query.value("cntct_id").toInt(), 0,
                             query.value("cntct_number"),
			     query.value("cntct_first_name"),
			     query.value("cntct_last_name"),
			     query.value("crmacct_name"));
  } while (query.next());
}
Ejemplo n.º 26
0
void AddressList::sFillList()
{
    _listTab->clear();
    XSqlQuery query;
    query.prepare(_parent->_query +
                  _parent->_extraClause +
                  " ORDER BY addr_country, addr_state, addr_postalcode;");
    query.exec();
    query.first();
    if (query.lastError().type() != QSqlError::None)
    {
      QMessageBox::critical(this, tr("A System Error Occurred at %1::%2.")
                                    .arg(__FILE__)
                                    .arg(__LINE__),
                            query.lastError().databaseText());
      return;
    }
    else if (query.size() < 1)// no rows found with limit so try without
    {
      query.prepare(_parent->_query +
                  " ORDER BY addr_country, addr_state, addr_postalcode;");
      query.exec();
      query.first();
      if (query.lastError().type() != QSqlError::None)
      {
        QMessageBox::critical(this, tr("A System Error Occurred at %1::%2.")
                                      .arg(__FILE__)
                                      .arg(__LINE__),
                              query.lastError().databaseText());
        return;
      }
    }

    XTreeWidgetItem *last = NULL;
    do {
      last = new XTreeWidgetItem(_listTab, last,
                               query.value("addr_id").toInt(), 0,
                               query.value("addr_line1"),
                               query.value("addr_line2"),
                               query.value("addr_line3"),
                               query.value("addr_city"),
                               query.value("addr_state"),
                               query.value("addr_country"),
                               query.value("addr_postalcode"));
    } while (query.next());
}
Ejemplo n.º 27
0
void XComboBox::populate(XSqlQuery &pQuery, int pSelected)
{
  int selected = 0;
  int counter  = 0;

//  Clear any old data
  clear();

  if (allowNull())
    counter++;

//  Load the combobox with the contents of the passed query, if any
  if (pQuery.first())
  {
    do
    {
      append(pQuery.value(0).toInt(), pQuery.value(1).toString(), pQuery.value(2).toString());

      if (pQuery.value(0).toInt() == pSelected)
        selected = counter;

      counter++;
    }
    while(pQuery.next());
  }

  setCurrentIndex(selected);
  if (_ids.count())
  {
    _lastId = _ids.at(selected);

    if (allowNull())
      emit notNull(TRUE);
  }
  else
  {
    _lastId = -1;

    if (allowNull())
      emit notNull(FALSE);
  }

  emit newID(_lastId);
  emit valid((_lastId != -1));
}
Ejemplo n.º 28
0
QueryEditor::QueryEditor(QWidget* parent, Qt::WindowFlags fl)
    : QDialog(parent, fl)
{
  setupUi(this);

  // signals and slots connections
  connect(_metasql, SIGNAL(toggled(bool)), this, SLOT(mqlToggled(bool)));
  connect(_mqlGroup, SIGNAL(editTextChanged(QString)), this, SLOT(groupEditTextChanged(QString)));
  connect(_mqlName, SIGNAL(editTextChanged(QString)), this, SLOT(nameEditTextChanged(QString)));

  XSqlQuery xqry;
  if(xqry.exec("SELECT distinct metasql_group FROM metasql ORDER BY metasql_group;"))
  {
    _mqlGroup->clear();
    while(xqry.next())
      _mqlGroup->addItem(xqry.value(0).toString());
  }
}
void createPlannedOrdersByPlannerCode::sCreate(ParameterList params)
{
  XSqlQuery createCreate;
  QProgressDialog progress;
  progress.setWindowModality(Qt::ApplicationModal);

  MetaSQLQuery mql = mqlLoad("schedule", "load");
  createCreate = mql.toQuery(params);
  if (createCreate.lastError().type() != QSqlError::NoError)
  {
    systemError(this, createCreate.lastError().databaseText(), __FILE__, __LINE__);
    return;
  }

  int count=0;
  progress.setMaximum(createCreate.size());
  XSqlQuery create;
  while (createCreate.next())
  {
    progress.setLabelText(tr("Site: %1\n"
                             "Item: %2 - %3")
                          .arg(createCreate.value("warehous_code").toString())
                          .arg(createCreate.value("item_number").toString())
                          .arg(createCreate.value("item_descrip1").toString()));

    ParameterList rparams = params;
    rparams.append("itemsite_id", createCreate.value("itemsite_id"));
    MetaSQLQuery mql2 = mqlLoad("schedule", "create");
    create = mql2.toQuery(rparams);
    if (create.lastError().type() != QSqlError::NoError)
    {
      systemError(this, create.lastError().databaseText(), __FILE__, __LINE__);
      return;
    }

    if (progress.wasCanceled())
      break;

    count++;
    progress.setValue(count);
  }

  accept();
}
Ejemplo n.º 30
0
QString ExportHelper::generateHTML(const int qryheadid, ParameterList &params, QString &errmsg)
{
  if (DEBUG)
    qDebug("ExportHelper::generateHTML(%d, %d params, errmsg) entered",
           qryheadid, params.size());
  QTextDocument doc(0);
  QTextCursor   cursor(&doc);

  XSqlQuery itemq;
  itemq.prepare("SELECT * FROM qryitem WHERE qryitem_qryhead_id=:id ORDER BY qryitem_order;");
  itemq.bindValue(":id", qryheadid);
  itemq.exec();
  while (itemq.next())
  {
    QString qtext;
    if (itemq.value("qryitem_src").toString() == "REL")
    {
      QString schemaName = itemq.value("qryitem_group").toString();
      qtext = "SELECT * FROM " +
              (schemaName.isEmpty() ? QString("") : schemaName + QString(".")) +
              itemq.value("qryitem_detail").toString();
    }
    else if (itemq.value("qryitem_src").toString() == "MQL")
    {
      QString tmpmsg;
      bool valid;
      qtext = MQLUtil::mqlLoad(itemq.value("qryitem_group").toString(),
                               itemq.value("qryitem_detail").toString(),
                               tmpmsg, &valid);
      if (! valid)
        errmsg = tmpmsg;
    }
    else if (itemq.value("qryitem_src").toString() == "CUSTOM")
      qtext = itemq.value("qryitem_detail").toString();

    if (! qtext.isEmpty())
      cursor.insertHtml(generateHTML(qtext, params, errmsg));
  }
  if (itemq.lastError().type() != QSqlError::NoError)
    errmsg = itemq.lastError().text();

  return doc.toHtml();
}