Диплом (1189781), страница 8
Текст из файла (страница 8)
Код основных компонентов АИС
//Подключение к базе данных и вывод содержимого таблицы показаний
db = QSqlDatabase:: addDatabase("QMYSQL");
db.setUserName("root");
db.setDatabaseName("energia");
db.setPassword("chebura4122");
db.setHostName("localhost");
if (!db.open()){
QMessageBox::critical(this,"Error", model->lastError().text());
}
model = new QSqlQueryModel;
qry = new QSqlQuery;
if(db.open()){
qry->prepare("select pokazania.id, pokazania.istochnik, pokazania.obd, pokazania.datap, adresa.opisadresa, schetchiki.opisschetchika,
pokazania.tekuchp, pokazania.predp, pokazania.kolvoenergii, pokazania.raschkolen, pokazania.procentp, pokazania.koefft, pokazania.tippotreb, pokazania.pokazan, fidertp.opisfideratp, fiderap.opisaniefiderap, classnapr.napryag, pokazania.dobavl, rabotniki.surname, pokazania.numbert, pokazania.faznost, potrebitely.opisaniep from pokazania inner join adresa on pokazania.adresa_id=adresa.id inner join schetchiki on pokazania.schetchik_id=schetchiki.id inner join fidertp on pokazania.fidertp_id=fidertp.id inner join fiderap on pokazania.fiderap_id=fiderap.id inner join classnapr on pokazania.classnapr_id=classnapr.id inner join rabotniki on pokazania.rabotniki_id=rabotniki.id inner join potrebitely on pokazania.potrebitely_id=potrebitely.id;");
qry->exec();
model->setQuery(*qry);
model->setHeaderData(1, Qt::Horizontal, "Источник");
model->setHeaderData(2, Qt::Horizontal, "ОБД");
model->setHeaderData(3, Qt::Horizontal, "Дата показания");
model->setHeaderData(4, Qt::Horizontal, "Адрес");
model->setHeaderData(5, Qt::Horizontal, "Счетчик");
model->setHeaderData(6, Qt::Horizontal, "Текущие показания");
model->setHeaderData(7, Qt::Horizontal, "Предыдущие показания");
model->setHeaderData(8, Qt::Horizontal, "Количество энергии");
model->setHeaderData(9, Qt::Horizontal, "Расчетное количество энергии");
model->setHeaderData(10, Qt::Horizontal, "Процент потерь");
model->setHeaderData(11, Qt::Horizontal, "Коэффициент");
model->setHeaderData(12, Qt::Horizontal, "Тип потребителя");
model->setHeaderData(13, Qt::Horizontal, "Показания");
model->setHeaderData(14, Qt::Horizontal, "Фидер ТП");
model->setHeaderData(15, Qt::Horizontal, "Фидер пит.");
model->setHeaderData(16, Qt::Horizontal, "Напряжение");
model->setHeaderData(17, Qt::Horizontal, "Дата добавления");
model->setHeaderData(18, Qt::Horizontal, "Кем добавлены");
model->setHeaderData(19, Qt::Horizontal, "№ потребителя");
model->setHeaderData(20, Qt::Horizontal, "Фазность");
model->setHeaderData(21, Qt::Horizontal, "Потребитель");
ui->tableView->setModel(model);
ui->tableView->setColumnHidden(0, true);
table="pokazania";
}
//Вызов диалогового окна для добавления записей в таблицу «Работники»
if(table=="rabotniki"){
rabotniki1 rab(db);
rab.exec();
qry->exec();
model->setQuery(*qry);
ui->tableView->setModel(model)
}
//Добавление записи в таблицу «Работники»
if(ui->lineEdit->text().contains(QRegExp("^[А-Я][а-я]+$")) && ui->lineEdit_2->text().contains(QRegExp("^[А-Я][а-я]+$")) && ui->lineEdit_3->text().contains(QRegExp("^[А-Я][а-я]+$")) && ui->lineEdit_4->text().contains(QRegExp("^[0-9]{4}$"))
&& ui->lineEdit_5->text().contains(QRegExp("^[0-9]{11}$")) && ui->lineEdit_6->text().contains(QRegExp("^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$"))){
ui->lineEdit_4->setInputMask("00-00");
ui->lineEdit_5->setInputMask("0-000-000-00-00");
QString surname = ui->lineEdit->text();
QString name = ui->lineEdit_2->text();
QString otchestvo = ui->lineEdit_3->text();
QString rabtel = ui->lineEdit_4->text();
QString sottel = ui->lineEdit_5->text();
QString email = ui->lineEdit_6->text();
QString pol = ui->comboBox->currentText();
QSqlQuery qry1;
if(surname != "" && name != "" && otchestvo != "" && rabtel != "" && sottel != "" && email != "" && pol != ""){
qry1.prepare("insert into rabotniki (surname, name, otchestvo, pol, rabtel, sottel, email ) values (:surname, :name, :otchestvo, :pol, :rabtel, :sottel, :email) ;");
qry1.bindValue(":surname", surname);
qry1.bindValue(":name", name);
qry1.bindValue(":otchestvo", otchestvo);
qry1.bindValue(":rabtel", rabtel);
qry1.bindValue(":sottel", sottel);
qry1.bindValue(":email", email);
qry1.bindValue(":pol", pol);
qry1.exec();
close();
} }
else {
ui->label_8->setText("Вы вводите не верно!");
}
//Удаление записи из таблицы «Тип улицы»
QSqlQuery qry1;
QString tip = model->data(model->index(ui->tableView->currentIndex().row(),1 ),Qt::DisplayRole).toString();
qry1.prepare("select id from tipulic where tipulic = :tip;");
qry1.bindValue(":tip", tip);
if(qry1.exec()) {
qry1.next();
int id = qry1.value(0).toInt();
qry1.prepare("select id from street where tipulic_id = :id;");
qry1.bindValue(":id", id);
qry1.exec();
qry1.next();
int streetid = qry1.value(0).toInt();
qry1.prepare("select id from adresa where street_id = :streetid;");
qry1.bindValue(":streetid", streetid);
qry1.exec();
qry1.next();
int adresid = qry1.value(0).toInt();
qry1.prepare("select id from pokazania where adresa_id = :adresid;");
qry1.bindValue(":adresid", adresid);
qry1.exec();
qry1.next();
int pokazid = qry1.value(0).toInt();
qry1.prepare("delete from pokazania where id=:pokazid;");
qry1.bindValue(":pokazid", pokazid);
qry1.exec();
qry1.next();
qry1.prepare("delete from adresa where id=:adresid;");
qry1.bindValue(":adresid", adresid);
qry1.exec();
qry1.next();
qry1.prepare("delete from street where id=:streetid;");
qry1.bindValue(":streetid", streetid);
qry1.exec();
qry1.next();
qry1.prepare("delete from tipulic where id=:id;");
qry1.bindValue(":id", id);
qry1.exec();
//Отображение в comboBox строк из связанных таблиц для редактирования записей таблицы «Населенный пункт»
this->setWindowTitle("Окно редактирования");
if(table=="naselpunkt"){
ui->label->setText("Тип населенного пункта");
ui->label_2->setText("Населенный пункт");
QSqlQuery qry;
naselpu = new QSqlQueryModel;
qry.prepare("select tip from tipnaspunkt;");
qry.exec();
naselpu->setQuery(qry);
ui->comboBox->setModel(naselpu);
int index = ui->comboBox->findText(tip);
if(index != -1){
ui->comboBox->setCurrentIndex(index);
} }
if(table=="street"){
ui->label->setText("Тип улицы");
ui->label_2->setText("Улица");
QSqlQuery qry;
naselpu = new QSqlQueryModel;
qry.prepare("select tipulic from tipulic;");
qry.exec();
naselpu->setQuery(qry);
ui->comboBox->setModel(naselpu);
int index = ui->comboBox->findText(tip);
if(index != -1){
ui->comboBox->setCurrentIndex(index);
} }
ui->lineEdit->setText(nasel);
//Редактирование записи из таблицы «Населенный пункт»
QString nasa = model->data(model->index(ui->tableView->currentIndex().row(),2 ), Qt::DisplayRole).toString();
ednasel nas (table, model->data(model->index(ui->tableView-> currentIndex(). row(),1), Qt::DisplayRole).toString(),model->data(model -> index(ui-> tableView->currentIndex().row(),2), Qt::DisplayRole).toString());
QSqlQuery qry1;
qry1.prepare ("select id from naselpunkt where namenaselpunkt=:nasa;");
qry1.bindValue(":nasa", nasa);
qry1.exec();
qry1.next();
int id= qry1.value(0).toInt();
nas.exec();
QString tip=nas.tip();
QString nase=nas.nasel();
qry1.prepare ("select id from tipnaspunkt where tip=:tip;");
qry1.bindValue(":tip", tip);
qry1.exec();
qry1.next();
int tipid = qry1.value(0).toInt();
qry1.prepare ("update naselpunkt set tipnaspunkt_id=:tipid, namenaselpunkt=:nase, naselpunkt = concat (:tip, ' ', :nase) where id=:id;");
qry1.bindValue(":tip", tip);
qry1.bindValue(":tipid", tipid);
qry1.bindValue(":nase", nase);
qry1.bindValue(":id", id);
qry1.exec();
qry1.prepare ("select street_id from adresa where naselpunkt_id=:id;");
qry1.bindValue(":id", id);
qry1.exec();
qry1.next();
int streetid = qry1.value(0).toInt();
qry1.prepare ("select street from street where id=:streetid;");
qry1.bindValue(":streetid", streetid);
qry1.exec();
qry1.next();
QString street = qry1.value(0).toString();
qry1.prepare ("update adresa set opisadresa=concat(:tip, ' ',:nase, ' ',:street , ' ', number, ' ', korpus, ' ', kvartira) where naselpunkt_id=:id;");
qry1.bindValue(":street", street);
qry1.bindValue(":nase", nase);
qry1.bindValue(":id", id);
qry1.bindValue(":tip", tip);
qry1.exec();
qry->exec();
model->setQuery(*qry);
ui->tableView->setModel(model);
//Формирование отчета для таблицы «Показания электроэнергии»
QString strStream;
QTextStream out (&strStream);
const int rowCount = ui->tableView->model()->rowCount();
const int columnCount = ui->tableView->model()->columnCount();
out << "<html>\n" <<"<head><meta charset='UTF-8'></head>\n" "<body bgcolor = #ffffff>\n";
QSqlQuery qry1;
qry1.prepare("select nado from nado where id = 1;");
qry1.exec();
qry1.next();
QString nado = qry1.value(0).toString();
qry1.prepare("select nado from nado where id = 2;");
qry1.exec();
qry1.next();
QString konfid = qry1.value(0).toString();
out<< "<p><h3>"<<nado<<" "<<konfid<< " </h3></p><hr><\n>";
qry1.prepare("select nado from nado where id = 3;");
qry1.exec();
qry1.next();
QString otchet = qry1.value(0).toString();
qry1.prepare("select nado from nado where id = 4;");
qry1.exec();
qry1.next();
QString popokaz = qry1.value(0).toString();
qry1.prepare("select nado from nado where id = 5;");
qry1.exec();
qry1.next();
QString datav = qry1.value(0).toString();
out <<"<p align='center'><h2>" << otchet <<"<br>"<< popokaz << "<br>" << datav << "</h2></p><br>";
out << "<small><table border=1 cellspacing cellpadding=2>\n";
out << "<thead><tr bgcolor=#ffffff>";
for(int column = 0; column < columnCount; column++)
if(!ui->tableView->isColumnHidden(column)){
if(column==3){
out <<QString("<th bgcolor = '#DCDCDC'>%1</th>").arg(ui-> tableView->model()->headerData(column, Qt::Horizontal).toString());
}















