I switched the driver from MySQL to ODBC because MXE doesn't support the
MySQL driver in the QtSql module. We would have had to change this
anyway, as we'll need to support connections to the ExactMax database.
// Finally, set up database connection
// Finally, set up database connection
- db = QSqlDatabase::addDatabase("QMYSQL");
+// db = QSqlDatabase::addDatabase("QMYSQL");
+ db = QSqlDatabase::addDatabase("QODBC");
bool ok = false;
// Prime the SQL Settings dialog (in case we need it)
SQLSettingsDialog sqlSettings;
bool ok = false;
// Prime the SQL Settings dialog (in case we need it)
SQLSettingsDialog sqlSettings;
- sqlSettings.edit1->setText(dbHostName);
- sqlSettings.edit2->setText(dbName);
- sqlSettings.edit3->setText(dbUserName);
- sqlSettings.edit4->setText(dbPassword);
-
+ sqlSettings.edit1->setText(dbDriver);
+ sqlSettings.edit2->setText(dbHostName);
+ sqlSettings.edit3->setText(dbName);
+ sqlSettings.edit4->setText(dbUserName);
+ sqlSettings.edit5->setText(dbPassword);
+
+#if 0
+db = QSqlDatabase::addDatabase("QODBC");
+db.setDatabaseName("Driver={MySQL ODBC 5.1 Driver};DATABASE=agp-dbserver01;");
+db.setUserName("xcdr");
+db.setPassword("xcdr");
+#endif
do
{
// Set up the DB connection with saved settings
do
{
// Set up the DB connection with saved settings
+ QString odbc = QString("DRIVER={%1};DATABASE=%2;").arg(dbDriver).arg(dbName);
db.setHostName(dbHostName);
db.setHostName(dbHostName);
- db.setDatabaseName(dbName);
+ db.setDatabaseName(odbc);
db.setUserName(dbUserName);
db.setPassword(dbPassword);
ok = db.open();
db.setUserName(dbUserName);
db.setPassword(dbPassword);
ok = db.open();
{
// User thinks this will work (hit OK button), so prime the variables
// for the next attempt
{
// User thinks this will work (hit OK button), so prime the variables
// for the next attempt
- dbHostName = sqlSettings.edit1->text();
- dbName = sqlSettings.edit2->text();
- dbUserName = sqlSettings.edit3->text();
- dbPassword = sqlSettings.edit4->text();
+ dbDriver = sqlSettings.edit1->text();
+ dbHostName = sqlSettings.edit2->text();
+ dbName = sqlSettings.edit3->text();
+ dbUserName = sqlSettings.edit4->text();
+ dbPassword = sqlSettings.edit5->text();
}
else
return; // User cancelled the dialog, so quit
}
else
return; // User cancelled the dialog, so quit
+ // Check to see how many users are in the system; if less than 2, we don't do a login
+ QSqlQuery query;
+ query.prepare("SELECT COUNT(*) FROM User");
+ query.exec();
+ query.next();
+
+ if (query.value(0).toInt() > 1)
+ {
// Do Login dialog
LoginDialog loginDlg;
bool done = false;
// Do Login dialog
LoginDialog loginDlg;
bool done = false;
// Search DB for this username/login pair
QSqlQuery query("SELECT UID, name, login FROM User WHERE Login=? AND Password=?");
query.addBindValue(loginDlg.edit1->text());
query.addBindValue(loginDlg.edit2->text());
query.exec();
// Search DB for this username/login pair
QSqlQuery query("SELECT UID, name, login FROM User WHERE Login=? AND Password=?");
query.addBindValue(loginDlg.edit1->text());
query.addBindValue(loginDlg.edit2->text());
query.exec();
+#else
+ // Search DB for this username/login pair
+ QSqlQuery query;
+ query.prepare("SELECT UID, name, login FROM User WHERE Login=? AND Password=?");
+ query.addBindValue(loginDlg.edit1->text());
+ query.addBindValue(loginDlg.edit2->text());
+ query.exec();
+#endif
+ }
+ else
+ {
+ fullName = "Administrator";
+ login = "admin";
+ loggedInUID = 1;
+ }
QString s = QString("User: %1 (%2)").arg(fullName).arg(login);
scmWidget->username->setText(s);
QString s = QString("User: %1 (%2)").arg(fullName).arg(login);
scmWidget->username->setText(s);
// Presumably, the user has given us good data, so we try to populate the
// database with this new vendor data.
// Presumably, the user has given us good data, so we try to populate the
// database with this new vendor data.
- QSqlQuery query1("INSERT INTO VALUES (?, ?, ?)");
+ QSqlQuery query;
+ query.prepare("INSERT INTO VALUES (?, ?, ?)");
void MainWindow::FillVendorLevelCombo(QComboBox * combo)
{
void MainWindow::FillVendorLevelCombo(QComboBox * combo)
{
- QSqlQuery query("SELECT VLID, Description FROM VendorLevel");
+ QSqlQuery query;
+ query.prepare("SELECT VLID, Description FROM VendorLevel");
query.exec();
while (query.next())
query.exec();
while (query.next())
void MainWindow::FillContactTypeCombo(QComboBox * combo)
{
void MainWindow::FillContactTypeCombo(QComboBox * combo)
{
- QSqlQuery query("SELECT CTID, Description FROM ContactType");
+ QSqlQuery query;
+ query.prepare("SELECT CTID, Description FROM ContactType");
query.exec();
while (query.next())
query.exec();
while (query.next())
std::vector<VendorType> groupList;
// Pull in definitions from DB for Vendor Classes/Groups
std::vector<VendorType> groupList;
// Pull in definitions from DB for Vendor Classes/Groups
- QSqlQuery query1("SELECT vgid, description FROM VendorGroup ORDER BY seqNo");
+ QSqlQuery query1;
+ query1.prepare("SELECT vgid, description FROM VendorGroup ORDER BY seqNo");
query1.exec();
while (query1.next())
query1.exec();
while (query1.next())
groupList.push_back(v);
}
groupList.push_back(v);
}
- QSqlQuery query2("SELECT vtid, vgid, description FROM VendorType ORDER BY seqNo");
- query2.exec();
+// QSqlQuery query2;
+ query1.prepare("SELECT vtid, vgid, description FROM VendorType ORDER BY seqNo");
+ query1.exec();
int previousID = -1, groupListIndex = 0;
QListWidgetItem * item;
int previousID = -1, groupListIndex = 0;
QListWidgetItem * item;
- int vtid = query2.value(0).toInt();
- int vgid = query2.value(1).toInt();
- QString description = query2.value(2).toString();
+ int vtid = query1.value(0).toInt();
+ int vgid = query1.value(1).toInt();
+ QString description = query1.value(2).toString();
// Check to see if we need to insert new header yet.
// If we're not still in same group, push the next group header into the list
// Check to see if we need to insert new header yet.
// If we're not still in same group, push the next group header into the list
// ((TTEdit *)qApp)->charWnd->resize(size);
// ((TTEdit *)qApp)->charWnd->move(pos);
// ((TTEdit *)qApp)->charWnd->resize(size);
// ((TTEdit *)qApp)->charWnd->move(pos);
+ dbDriver = settings.value("dbDriver", "myodbc-5.1").toString();
dbHostName = settings.value("dbHostName", "localhost").toString();
dbName = settings.value("dbName", "schematic").toString();
dbUserName = settings.value("dbUserName", "scm_user").toString();
dbHostName = settings.value("dbHostName", "localhost").toString();
dbName = settings.value("dbName", "schematic").toString();
dbUserName = settings.value("dbUserName", "scm_user").toString();
// settings.setValue("charWndPos", ((TTEdit *)qApp)->charWnd->pos());
// settings.setValue("charWndSize", ((TTEdit *)qApp)->charWnd->size());
// settings.setValue("charWndPos", ((TTEdit *)qApp)->charWnd->pos());
// settings.setValue("charWndSize", ((TTEdit *)qApp)->charWnd->size());
+ settings.setValue("dbDriver", dbDriver);
settings.setValue("dbHostName", dbHostName);
settings.setValue("dbName", dbName);
settings.setValue("dbUserName", dbUserName);
settings.setValue("dbHostName", dbHostName);
settings.setValue("dbName", dbName);
settings.setValue("dbUserName", dbUserName);
QAction * vendorClassAct;
QAction * newVendorAct;
QAction * vendorClassAct;
QAction * newVendorAct;
QString dbHostName;
QString dbName;
QString dbUserName;
QString dbHostName;
QString dbName;
QString dbUserName;
edit1(new QLineEdit()),
edit2(new QLineEdit()),
edit3(new QLineEdit()),
edit1(new QLineEdit()),
edit2(new QLineEdit()),
edit3(new QLineEdit()),
+ edit4(new QLineEdit()),
+ edit5(new QLineEdit())
{
connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
{
connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
edit4->setEchoMode(QLineEdit::Password);
QFormLayout * formLayout = new QFormLayout;
edit4->setEchoMode(QLineEdit::Password);
QFormLayout * formLayout = new QFormLayout;
- formLayout->addRow(tr("&MySQL Server Hostname:"), edit1);
- formLayout->addRow(tr("&Database Name:"), edit2);
- formLayout->addRow(tr("&Database Username:"), edit3);
- formLayout->addRow(tr("&Database Password:"), edit4);
+ formLayout->addRow(tr("&Database Driver:"), edit1);
+ formLayout->addRow(tr("&Database Server Hostname:"), edit2);
+ formLayout->addRow(tr("&Database Name:"), edit3);
+ formLayout->addRow(tr("&Database Username:"), edit4);
+ formLayout->addRow(tr("&Database Password:"), edit5);
QVBoxLayout * mainLayout = new QVBoxLayout;
mainLayout->addLayout(formLayout);
mainLayout->addWidget(buttonBox);
setLayout(mainLayout);
QVBoxLayout * mainLayout = new QVBoxLayout;
mainLayout->addLayout(formLayout);
mainLayout->addWidget(buttonBox);
setLayout(mainLayout);
- setWindowTitle(tr("MySQL Server Connection"));
+ setWindowTitle(tr("SQL Server Connection"));
SQLSettingsDialog::~SQLSettingsDialog()
{
}
SQLSettingsDialog::~SQLSettingsDialog()
{
}
QLineEdit * edit2;
QLineEdit * edit3;
QLineEdit * edit4;
QLineEdit * edit2;
QLineEdit * edit3;
QLineEdit * edit4;
};
#endif // __SQLSETTINGSDIALOG_H__
};
#endif // __SQLSETTINGSDIALOG_H__
std::vector<VendorType> groupList;
// Pull in definitions from DB for Vendor Classes/Groups
std::vector<VendorType> groupList;
// Pull in definitions from DB for Vendor Classes/Groups
- QSqlQuery query1("SELECT vgid, seqNo, description FROM VendorGroup ORDER BY seqNo");
- query1.exec();
+ QSqlQuery query;
+ query.prepare("SELECT vgid, seqNo, description FROM VendorGroup ORDER BY seqNo");
+ query.exec();
- v.key = query1.value(0).toInt();
- v.seqNo = query1.value(1).toInt();
- v.description = query1.value(2).toString();
+ v.key = query.value(0).toInt();
+ v.seqNo = query.value(1).toInt();
+ v.description = query.value(2).toString();
v.isHeader = true;
groupList.push_back(v);
}
v.isHeader = true;
groupList.push_back(v);
}
- QSqlQuery query2("SELECT vtid, vgid, seqNo, description FROM VendorType ORDER BY seqNo");
- query2.exec();
+ query.prepare("SELECT vtid, vgid, seqNo, description FROM VendorType ORDER BY seqNo");
+ query.exec();
int previousID = -1, groupListIndex = 0;
int previousID = -1, groupListIndex = 0;
- v.key = query2.value(0).toInt();
- int vgid = query2.value(1).toInt();
- v.seqNo = query2.value(2).toInt();
- v.description = query2.value(3).toString();
+ v.key = query.value(0).toInt();
+ int vgid = query.value(1).toInt();
+ v.seqNo = query.value(2).toInt();
+ v.description = query.value(3).toString();
v.isHeader = false;
// Check to see if we need to insert new header yet.
v.isHeader = false;
// Check to see if we need to insert new header yet.
void VendorLevelWidget::DoQuery(int key)
{
void VendorLevelWidget::DoQuery(int key)
{
- QSqlQuery query("SELECT vendorUsable, color, description FROM VendorLevel WHERE VLID=?");
+ QSqlQuery query;
+ query.prepare("SELECT vendorUsable, color, description FROM VendorLevel WHERE VLID=?");
query.addBindValue(key);
query.exec();
query.addBindValue(key);
query.exec();