/
dataload.cpp
executable file
·115 lines (103 loc) · 3.61 KB
/
dataload.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#include "dataload.h"
#include <QtSql/QSqlDatabase>
#include <QSqlQuery>
#include <QSqlIndex>
#include <QTableWidget>
#include <QFileDialog>
#include <QDesktopServices>
#include <QMessageBox>
//#include <QAxObject>
DataLoad::DataLoad(QWidget *p)
:QDialog(p)
{
setupUi(this);
moreGroupBox->hide();
dataloadGridLayout->setSizeConstraint(QLayout::SetFixedSize);
}
void DataLoad::on_openButton_clicked()
{
QString fileName = QFileDialog::getOpenFileName(this,
tr("open file"),
".",
tr("MS FILE (*.mdb)"));
fileLineEdit->setText(fileName);
}
void DataLoad::on_loadButton_clicked()
{
qDebug() << QFileInfo(fileLineEdit->text()).fileName();
connectDB(fileLineEdit->text());
queryDB();
writeFile(profileComboBox->currentText(), profileComboBox->currentText());
progressBar->setValue(30);
writeFile(componentComboBox->currentText(), componentComboBox->currentText());
progressBar->setValue(60);
writeFile(stepComboBox->currentText(), stepComboBox->currentText());
progressBar->setValue(100);
}
void DataLoad::connectDB(QString filename)
{
QSqlDatabase dbconn = QSqlDatabase::database("bosch", false);
if(dbconn.isValid()) {
qDebug() << "dbconn.isValid";
return;
}
dbconn = QSqlDatabase::addDatabase("QODBC", "bosch");
QString dsn = QString("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=%1;").arg(filename);
dbconn.setDatabaseName(dsn);
}
void DataLoad::queryDB()
{
QSqlDatabase dbconn = QSqlDatabase::database("bosch", false);
dbconn.open();
QStringList sl = dbconn.tables();
for (int i = 0; i < sl.size(); i++) {
qDebug() << sl.at(i);
}
profileComboBox->addItems(sl);
stepComboBox->addItems(sl);
componentComboBox->addItems(sl);
for (int i = 0; i < profileComboBox->count(); i++) {
if (profileComboBox->itemText(i) == "CriBoschProfiles")
profileComboBox->setCurrentIndex(i);
if (stepComboBox->itemText(i) == "CriPruefschritte")
stepComboBox->setCurrentIndex(i);
if (componentComboBox->itemText(i) == "CriKomponenten")
componentComboBox->setCurrentIndex(i);
}
}
bool DataLoad::writeFile(const QString &fileName, const QString &tablename)
{
QFile file(fileName);
if (!file.open(QIODevice::WriteOnly)) {
QMessageBox::warning(this, tr("Spreadsheet"),
tr("Cannot write file %1:\n%2.")
.arg(file.fileName())
.arg(file.errorString()));
return false;
}
QDataStream out(&file);
out.setVersion(QDataStream::Qt_4_8);
out << quint32(0x12345678);
QApplication::setOverrideCursor(Qt::WaitCursor);
QSqlDatabase dbconn = QSqlDatabase::database("bosch");
QSqlQuery *query = new QSqlQuery(dbconn);
query->exec(QString("SELECT * FROM %1").arg(tablename));
QSqlRecord sqlRecord;
sqlRecord = query->record();
out << quint32(sqlRecord.count());
for (int i = 0; i < sqlRecord.count(); i++) {
out << sqlRecord.fieldName(i);
}
quint32 num = 0;
while (query->next()) num++;
out << quint32(num);
query->first();
num = 0;
do {
for (int i = 0; i < sqlRecord.count(); i++) {
out << query->value(i).toString();
}
} while (query->next());
QApplication::restoreOverrideCursor();
return true;
}