QString conn1 = QString("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=%1;").arg(dbName);
db.setDatabaseName(conn1);
if(!db.open()){
qDebug()<<("Failed to open the database");
return false;
}
else{
qDebug()<<("Connected....");
return true;
}
}
public:
explicit Login(QWidget *parent = 0);
~Login();
private slots:
void on_btnExit_clicked();
void on_btnLogin_clicked();
void on_btnClear_clicked();
private:
Ui::Login *ui;
};
#endif // LOGIN_H
mainwindow.h
#include <QMainWindow>
#include <QSqlDatabase>
#include <QTimer>
#include <QPixmap>
namespace Ui {
class MainWindow1;
}
class MainWindow1 : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow1(QWidget *parent = 0);
~MainWindow1();
private slots:
void on_actionSpravPol_triggered();
void on_actionSpravPar_triggered();
void on_actionExit_triggered();
void on_actionSpravSost_triggered();
void on_actionSpravObj_triggered();
void on_actionJournal_triggered();
void on_actionSpravka_triggered();
void QQQ();
void on_pushButton_clicked();
private:
Ui::MainWindow1 *ui;
QSqlDatabase db;
QTimer *m_timer;
void UpdateState();
};
#endif // MAINWINDOW1_H
objects.h
#ifndef OBJECTS_H
#define OBJECTS_H
#include <QDialog>
#include <QSql>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlTableModel>
#include <QMessageBox>
#include <QTableView>
#include <QSqlError>
namespace Ui {
class Objects;
}
class Objects : public QDialog
{
Q_OBJECT
public:
explicit Objects(QWidget *parent = 0);
~Objects();
private slots:
void on_btnSaveExit_clicked();
void on_btnInsert_clicked();
void on_btnDelete_clicked();
private:
Ui::Objects *ui;
QSqlDatabase db;
QSqlTableModel *model;
QTableView *view;
};
#endif // OBJECTS_H
parametry.h
#ifndef PARAMETRY_H
#define PARAMETRY_H
#include <QDialog>
#include <QSql>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlTableModel>
#include <QMessageBox>
#include <QTableView>
#include <QSqlError>
namespace Ui {
class Parametry;
}
class Parametry : public QDialog
{
Q_OBJECT
public:
explicit Parametry(QWidget *parent = 0);
~Parametry();
private slots:
void on_btnSaveExit_clicked();
void on_btnInsert_clicked();
void on_btnDelete_clicked();
private:
Ui::Parametry *ui;
QSqlDatabase db;
QSqlTableModel *model;
QTableView *view;
};
#endif // PARAMETRY_H
polzovateli.h
#ifndef POLZOVATELI_H
#define POLZOVATELI_H
#include <QDialog>
#include <QSql>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlTableModel>
#include <QMessageBox>
#include <QTableView>
#include <QSqlError>
namespace Ui {
class Polzovateli;
}
class Polzovateli : public QDialog
{
Q_OBJECT
public:
explicit Polzovateli(QWidget *parent = 0);
~Polzovateli();
private slots:
void on_btnInsert_clicked();
void on_btnDelete_clicked();
void on_btnSaveExit_clicked();
private:
Ui::Polzovateli *ui;
QSqlDatabase db;
QSqlTableModel *model;
QTableView *view;
};
#endif // POLZOVATELI_H
sostoyaniya.h
#ifndef SOSTOYANIYA_H
#define SOSTOYANIYA_H
#include <QDialog>
#include <QSql>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlTableModel>
#include <QMessageBox>
#include <QTableView>
#include <QSqlError>
namespace Ui {
class Sostoyaniya;
}
class Sostoyaniya : public QDialog
{
Q_OBJECT
public:
explicit Sostoyaniya(QWidget *parent = 0);
~Sostoyaniya();
private slots:
void on_btnSaveExit_clicked();
void on_btnInsert_clicked();
void on_btnDelete_clicked();
private:
Ui::Sostoyaniya *ui;
QSqlDatabase db;
QSqlTableModel *model;
QTableView *view;
};
#endif // SOSTOYANIYA_H
spravka.h
#ifndef SPRAVKA_H
#define SPRAVKA_H
#include <QDialog>
namespace Ui {
class Spravka;
}
class Spravka : public QDialog
{
Q_OBJECT
public:
explicit Spravka(QWidget *parent = 0);
~Spravka();
private slots:
void on_pushButton_clicked();
private:
Ui::Spravka *ui;
};
#endif // SPRAVKA_H
spravochniki.h
#ifndef SPRAVOCHNIKI_H
#define SPRAVOCHNIKI_H
#include <QDialog>
namespace Ui {
class Spravochniki;
}
class Spravochniki : public QDialog
{
Q_OBJECT
public:
explicit Spravochniki(QWidget *parent = 0);
~Spravochniki();
private slots:
void on_btnBack_clicked();
void on_btnSpravPol_clicked();
void on_btnSpravPar_clicked();
void on_btnSpravSost_clicked();
void on_pushButton_clicked();
private:
Ui::Spravochniki *ui;
};
#endif // SPRAVOCHNIKI_H
journal.cpp
#include "journal.h"
#include "ui_journal.h"
Journal::Journal(QWidget *parent) :
QDialog(parent),
ui(new Ui::Journal)
{
ui->setupUi(this);
QSqlQueryModel * modal = new QSqlQueryModel();
QSqlQuery *qry = new QSqlQuery();
qry->prepare("SELECT objectName, stateName, eventDate, eventTime, eventTemperatureValue, eventHumidityValue "
"FROM journal, object, state "
"WHERE "
"(journal.objectID = object.objectID) AND (journal.stateID = state.stateID) ");
qry->exec();
modal->setQuery(*qry);
ui->tableView->setModel(modal);
modal->setHeaderData(0, Qt::Horizontal, QObject::trUtf8("Объект"));
modal->setHeaderData(1, Qt::Horizontal, QObject::trUtf8("Состояние объекта"));
modal->setHeaderData(2, Qt::Horizontal, QObject::trUtf8("Дата"));
modal->setHeaderData(3, Qt::Horizontal, QObject::trUtf8("Время"));
modal->setHeaderData(4, Qt::Horizontal, QObject::trUtf8("Значение температуры"));
modal->setHeaderData(5, Qt::Horizontal, QObject::trUtf8("Значение влажности"));
}
Journal::~Journal()
{
delete ui;
}
void Journal::on_btnBack_clicked()
{
close();
}
login.cpp
#include "login.h"
#include "ui_login.h"
#include "mainwindow1.h"
Login::Login(QWidget *parent) :
QDialog(parent),
ui(new Ui::Login)
{
ui->setupUi(this);
// if(connOpen())
// ui->lblResult->setText("[+]База Данных подключена");
// else
// ui->lblResult->setText("[!]Файл Базы Данных не найден");
}
Login::~Login()
{
delete ui;
}
void Login::on_btnExit_clicked()
{
db.close();
db.removeDatabase(db.connectionName());
qApp->exit();
}
void Login::on_btnLogin_clicked()
{
QString Username, Password;
Username = ui->txtUser->text();
Password = ui->txtPass->text();
if(!connOpen()){
qDebug() << "No connection to db :(";
}
QSqlQuery qry;
qry.prepare("SELECT * FROM USER Where userUsername=\'" + Username +"\' AND userPassword=\'" + Password + "\'");
if(qry.exec())
{
if(qry.next())
{
this->hide();
MainWindow1 w;
w.show();
}
else
{
QMessageBox::warning(this, "Ошибка!","Неверный логин или пароль.");
ui->txtUser->setText("");
ui->txtPass->setText("");
}
}
}
void Login::on_btnClear_clicked()
{
ui->txtUser->setText("");
ui->txtPass->setText("");
}
main.cpp
#include "login.h"
#include "mainwindow1.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Login login;
login.setModal(true);
login.exec();
MainWindow1 w;
w.show();
return a.exec();
}
mainwindow.cpp
#include "mainwindow1.h"
#include "ui_mainwindow1.h"
#include "polzovateli.h"
#include "parametry.h"
#include "login.h"
#include "journal.h"
#include "spravka.h"
#include "sostoyaniya.h"
#include "objects.h"
#include <QStringList>
MainWindow1::MainWindow1(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow1)
{
ui->setupUi(this);
m_timer = new QTimer(this);
connect(m_timer, SIGNAL(timeout()), this, SLOT(QQQ()));
m_timer->setInterval(5000);
m_timer->start();
UpdateState();
}
MainWindow1::~MainWindow1()
{
delete ui;
}
void MainWindow1::QQQ()
{
UpdateState();
}
void MainWindow1::UpdateState()
{
QString dbName = "C:\\BD1.mdb";
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC", "q1");
QString conn1 = QString("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=%1;").arg(dbName);
db.setDatabaseName(conn1);
db.open();
if (db.isOpen()) {
QSqlQuery q(db);
QSqlQuery q1(db);
QSqlQuery q2(db);
QSqlQuery q3(db);
QSqlQuery q4(db);
QString query;
QStringList objects, objectNames;
objects.clear();
objectNames.clear();
query = "SELECT objectID, objectName FROM object ";
if (q.exec(query)) {
while (q.next()) {
objects.append(q.value(0).toString());
objectNames.append(q.value(1).toString());
}
int journalID = 0;
int eventTemperatureValue, eventHumidityValue = 0;
for(int i = 0; i<objects.length(); i++) {
query = QString("SELECT eventID, eventTemperatureValue, eventHumidityValue "
"FROM journal "
"WHERE eventID IN ( "
"SELECT LAST(eventID) FROM journal WHERE objectID = %1 "
") ")
.arg(objects.at(i));
if (q1.exec(query)) {
//QMessageBox::information(this, "", query);
while (q1.next()) {
journalID = q1.value(0).toInt();
eventTemperatureValue = q1.value(1).toInt();
eventHumidityValue = q1.value(2).toInt();
// QMessageBox::information(this,"", QString("Объект - %1 Темп1 - %2 Темп2 - %3 ")
// .arg(objects.at(i))
// .arg(eventTemperatureValue)
// .arg(eventHumidityValue));
int stateID = 0;
QString stateName;
query = QString("SELECT stateID, stateName "
"FROM state "
"WHERE "
"(%1 >= stateTemperatureMin AND %1 <= stateTemperatureMax) "
"AND (%2 >= stateHumidityMin AND %2 <= stateHumidityMax) ")
.arg(eventTemperatureValue)
.arg(eventHumidityValue);
if (q2.exec(query)) {
while (q2.next()) {
stateID = q2.value(0).toInt();
stateName = q2.value(1).toString();
}
query = QString("UPDATE journal "
"SET stateID = %1 "
"WHERE eventID = %2 ")
.arg(stateID)
.arg(journalID);
//QMessageBox::information(this,"", query);
if (q3.exec(query)) {
switch (i) {
case 0:
ui->lblObject1->setText(objectNames.at(i));
ui->lblState1->setText(stateName);
// if(stateID == 1){
// ui->lblState1->setStyleSheet("background-color: green");
// }
// if(stateID == 2){
// ui->lblState1->setStyleSheet("background-color: green");
// }
// if(stateID == 3){
// ui->lblState1->setStyleSheet("background-color: yellow");
// }
// if(stateID = 4){
// ui->lblState1->setStyleSheet("background-color: yellow");
// }
// if(stateID = 5)
// {
// ui->lblState1->setStyleSheet("background-color: red");
// }
break;
case 1:
ui->lblObject2->setText(objectNames.at(i));
ui->lblState2->setText(stateName);
// if(stateID == 1){
// ui->lblState1->setStyleSheet("background-color: green");
// }
// if(stateID == 2){
// ui->lblState1->setStyleSheet("background-color: green");
// }
// if(stateID == 3){
// ui->lblState1->setStyleSheet("background-color: yellow");
// }
// if(stateID = 4){
// ui->lblState1->setStyleSheet("background-color: yellow");
// }
// if(stateID = 5)
// {
// ui->lblState1->setStyleSheet("background-color: red");
// }
break;
case 2:
ui->lblObject3->setText(objectNames.at(i));
ui->lblState3->setText(stateName);
// if(stateID == 1){
// ui->lblState1->setStyleSheet("background-color: green");
// }
// if(stateID == 2){
// ui->lblState1->setStyleSheet("background-color: green");
// }
// if(stateID == 3){
// ui->lblState1->setStyleSheet("background-color: yellow");
// }
// if(stateID = 4){
// ui->lblState1->setStyleSheet("background-color: yellow");
// }
// if(stateID = 5)
// {
// ui->lblState1->setStyleSheet("background-color: red");
// }
break;
}
}
}
//To Do.....
}
}
else {
QMessageBox::information(this,"", q1.lastError().text());
}
}
}
else {
QMessageBox::information(this, "", q.lastError().text());
}
}
else {
QMessageBox::information(this, "", db.lastError().text());
}
}
void MainWindow1::on_actionSpravPol_triggered()
{
Polzovateli polzovateli;
polzovateli.setModal(true);
polzovateli.exec();
}
void MainWindow1::on_actionSpravPar_triggered()
{
Parametry parametry;
parametry.setModal(true);
parametry.exec();
}
void MainWindow1::on_actionExit_triggered()
{
db.close();
db.removeDatabase(db.connectionName());
qApp->exit();
}
void MainWindow1::on_actionSpravSost_triggered()
{
Sostoyaniya sostoyaniya;
sostoyaniya.setModal(true);
sostoyaniya.exec();
}
void MainWindow1::on_actionSpravObj_triggered()
{
Objects objects;
objects.setModal(true);
objects.exec();
}
void MainWindow1::on_actionJournal_triggered()
{
Journal journal;
journal.setModal(true);
journal.exec();
}
void MainWindow1::on_actionSpravka_triggered()
{
Spravka spravka;
spravka.setModal(true);
spravka.exec();
}
void MainWindow1::on_pushButton_clicked()
{
QString dbName = "C:\\BD1.mdb";
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC", "q1");
QString conn1 = QString("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=%1;").arg(dbName);
db.setDatabaseName(conn1);
db.open();
if (db.isOpen()) {
QSqlQuery q(db);
QSqlQuery q1(db);
QSqlQuery q2(db);
QSqlQuery q3(db);
QSqlQuery q4(db);
QString query;
QStringList objects, objectNames;
objects.clear();
objectNames.clear();
query = "SELECT objectID, objectName FROM object ";
if (q.exec(query)) {
while (q.next()) {
objects.append(q.value(0).toString());
objectNames.append(q.value(1).toString());
}
int journalID = 0;
int eventTemperatureValue, eventHumidityValue = 0;
for(int i = 0; i<objects.length(); i++) {
query = QString("SELECT eventID, eventTemperatureValue, eventHumidityValue "
"FROM journal "
"WHERE eventID IN ( "
"SELECT LAST(eventID) FROM journal WHERE objectID = %1 "
") ")
.arg(objects.at(i));
if (q1.exec(query)) {
//QMessageBox::information(this, "", query);
while (q1.next()) {
journalID = q1.value(0).toInt();
eventTemperatureValue = q1.value(1).toInt();
eventHumidityValue = q1.value(2).toInt();
// QMessageBox::information(this,"", QString("Объект - %1 Темп1 - %2 Темп2 - %3 ")
// .arg(objects.at(i))
// .arg(eventTemperatureValue)
// .arg(eventHumidityValue));
int stateID = 0;
QString stateName;
query = QString("SELECT stateID, stateName "
"FROM state "
"WHERE "
"(%1 >= stateTemperatureMin AND %1 <= stateTemperatureMax) "
"AND (%2 >= stateHumidityMin AND %2 <= stateHumidityMax) ")
.arg(eventTemperatureValue)
.arg(eventHumidityValue);
if (q2.exec(query)) {
while (q2.next()) {
stateID = q2.value(0).toInt();
stateName = q2.value(1).toString();
}
query = QString("UPDATE journal "
"SET stateID = %1 "
"WHERE eventID = %2 ")
.arg(stateID)
.arg(journalID);
//QMessageBox::information(this,"", query);
if (q3.exec(query)) {
switch (i) {
case 0:
ui->lblObject1->setText(objectNames.at(i));
ui->lblState1->setText(stateName);
break;
case 1:
ui->lblObject2->setText(objectNames.at(i));
ui->lblState2->setText(stateName);
break;
case 2:
ui->lblObject3->setText(objectNames.at(i));
ui->lblState3->setText(stateName);
break;
}
}
}
//To Do.....
}
}
else {
QMessageBox::information(this,"", q1.lastError().text());
}
}
}
else {
QMessageBox::information(this, "", q.lastError().text());
}
}
else {
QMessageBox::information(this, "", db.lastError().text());
}
}
objects.cpp
#include "objects.h"
#include "ui_objects.h"
Objects::Objects(QWidget *parent) :
QDialog(parent),
ui(new Ui::Objects)
{
ui->setupUi(this);
model = new QSqlTableModel(0,db);
model->setTable("OBJECT");
model->setEditStrategy(QSqlTableModel::OnFieldChange);
model->select();
model->setHeaderData(0, Qt::Horizontal, QObject::trUtf8("№"));
model->setHeaderData(1, Qt::Horizontal, QObject::trUtf8("Объект"));
model->setHeaderData(2, Qt::Horizontal, QObject::trUtf8("Адрес"));
view = ui->tableView;
view->setModel(model);
view->setAlternatingRowColors(true); // Подсветка строк разными цветами
view->resizeRowsToContents();
view->resizeColumnsToContents();
view->setSortingEnabled(true); // Сортировка таблицы
view->sortByColumn(0,Qt::AscendingOrder); // Порядок сортировки по умолчанию
}
Objects::~Objects()
{
delete ui;
}
void Objects::on_btnSaveExit_clicked()
{
close();
}
void Objects::on_btnInsert_clicked()
{
QString Object, Address;
Object = ui->txtObject->text();
Address = ui->txtAddress->text();
QSqlQuery qry;
qry.prepare("INSERT INTO OBJECT (objectName,objectAddress) VALUES ('"+Object+"','"+Address+"')");
if (ui->txtObject->text() == "" || ui->txtAddress->text() == "")
{
QMessageBox::warning(this, "Ошибка!",
"Вы не заполнили одно из полей, перепроверьте информацию.");
return;
}
else
{
if(qry.exec())
{
QMessageBox::critical(this,tr("Сохранение"),tr("Запись сохранена."));
model->select();
}
else
{
QMessageBox::critical(this,tr("Ошибка!"),qry.lastError().text());
}
}
ui->txtObject->setText("");
ui->txtAddress->setText("");
}
void Objects::on_btnDelete_clicked()
{
QMessageBox::StandardButton stButtonYes;
stButtonYes = QMessageBox::question(this, "Подтверждение удаления",
"Вы действительно хотите удалить строку?",
QMessageBox::Yes | QMessageBox::No);
if(stButtonYes == QMessageBox::Yes)
{
model->removeRow(ui->tableView->currentIndex().row());
model->select();
}
}
parametry.cpp
#include "parametry.h"
#include "ui_parametry.h"
Parametry::Parametry(QWidget *parent) :
QDialog(parent),
ui(new Ui::Parametry)
{
ui->setupUi(this);
model = new QSqlTableModel(0,db);
model->setTable("PARAMETER");