• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

E:/sqlmaster/src/createview.cpp

Go to the documentation of this file.
00001 #include "createview.h"
00002 #include "ui_createview.h"
00003 #include <QMessageBox>
00004 #include "highlighter.h"
00005 #include <Qsci/qsciscintilla.h>
00006 #include <Qsci/qscilexer.h>
00007 #include <Qsci/qscilexersql.h>
00008 CreateView::CreateView(QWidget *parent) :
00009         QDialog(parent),
00010         ui(new Ui::CreateView)
00011 {
00012     ui->setupUi(this);    
00013     isNew = true;
00014     ui->txtGeneratedQuery->setReadOnly(true);
00015     ui->txtGeneratedQuery->setLexer(new QsciLexerSQL);
00016     ui->txtGeneratedQuery->setFolding(QsciScintilla::PlainFoldStyle, 2);
00017     ui->txtGeneratedQuery->setAutoCompletionSource(QsciScintilla::AcsAll);
00018     ui->txtGeneratedQuery->setAutoCompletionFillupsEnabled(true);
00019     ui->txtGeneratedQuery->setBraceMatching(QsciScintilla::StrictBraceMatch);
00020     ui->txtGeneratedQuery->setCallTipsVisible(true);
00021     ui->txtGeneratedQuery->setCallTipsStyle(QsciScintilla::CallTipsNoContext);
00022     ui->txtGeneratedQuery->setCaretLineVisible(true);
00023     ui->txtGeneratedQuery->setMarginWidth(1, 40);
00024     ui->txtGeneratedQuery->setMarginLineNumbers(1, true);
00025     ui->txtViewQuery->setLexer(new QsciLexerSQL);
00026     ui->txtViewQuery->setFolding(QsciScintilla::PlainFoldStyle, 2);
00027     ui->txtViewQuery->setAutoCompletionSource(QsciScintilla::AcsAll);
00028     ui->txtViewQuery->setAutoCompletionFillupsEnabled(true);
00029     ui->txtViewQuery->setBraceMatching(QsciScintilla::StrictBraceMatch);
00030     ui->txtViewQuery->setCallTipsVisible(true);
00031     ui->txtViewQuery->setCallTipsStyle(QsciScintilla::CallTipsNoContext);
00032     ui->txtViewQuery->setCaretLineVisible(true);
00033     ui->txtViewQuery->setMarginWidth(1, 40);
00034     ui->txtViewQuery->setMarginLineNumbers(1, true);
00035 }
00036 
00037 CreateView::~CreateView()
00038 {
00039     delete ui;
00040 }
00041 
00042 void CreateView::generateQuery() {
00043     QString newViewSnippet = tr("CREATE\n/*[ALGORITHM = {UNDEFINED | MERGE |TEMPTABLE}]\n[DEFINER = { user | CURRENT_USER ]}\n [SQL_SECURITY = {DESIGNER | INVOKER}]*/\nVIEW `%1`.`%2` AS\n(\n%3\n)").arg(dbName, ui->txtViewName->text(), ui->txtViewQuery->text());
00044     if (!isNew) {
00045         newViewSnippet = tr("DROP VIEW IF EXISTS `%1`.`%2`;\n%3")
00046                          .arg(dbName, viewToAlter, ui->txtViewQuery->text());
00047     }
00048     ui->txtGeneratedQuery->setText(newViewSnippet);
00049 
00050 }
00051 
00052 void CreateView::on_txtViewName_textEdited(QString )
00053 {
00054     generateQuery();
00055 }
00056 
00057 void CreateView::on_txtViewQuery_textChanged()
00058 {
00059     generateQuery();
00060 }
00061 
00062 void CreateView::setDbName() {
00063     ui->txtDbName->setText(dbName);
00064 }
00065 
00066 void CreateView::on_cmdCancel_clicked()
00067 {
00068     this->reject();
00069 }
00070 
00071 void CreateView::on_cmdExecute_clicked()
00072 {
00073     db.open();
00074     if (db.open()) {
00075         QSqlQuery qu(db);
00076         qu.exec(tr("use `%1`").arg(dbName));
00077         qu.clear();
00078         if (qu.exec(ui->txtGeneratedQuery->text())) {
00079             QMessageBox::information(this, "Success", "View successfully saved.");
00080             this->accept();
00081         } else {
00082             QMessageBox::warning(this, "Error", tr("There was an error when saving the view. \n%1").arg(qu.lastError().text()));
00083         }
00084     }
00085 }
00086 
00087 void CreateView::startAlter() {
00088     isNew = false;
00089     ui->txtViewName->setText(viewToAlter);
00090     ui->txtDbName->setText(dbName);
00091     ui->txtViewName->setReadOnly(true);
00092     db.open();
00093     if (db.open()) {
00094         QSqlQuery qu(db);
00095         qu.exec(tr("use `%1`").arg(dbName));
00096         qu.clear();
00097         if (qu.exec(tr("SHOW CREATE VIEW `%1`.`%2`").arg(dbName, viewToAlter))) {
00098             qu.first();
00099             ui->txtViewQuery->setText(qu.value(1).toString());
00100             generateQuery();
00101         } else {
00102             QMessageBox::warning(this, "Error", tr("There was an error when generating the view. \n%1").arg(qu.lastError().text()));
00103         }
00104     }
00105 }

Generated on Wed Dec 1 2010 08:43:39 for SQL Master by  doxygen 1.7.2