00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <QKeyEvent>
00022 #include <QEvent>
00023 #include <QFile>
00024 #include <QLocale>
00025 #include <QRegExp>
00026
00027 #include "subform.h"
00028
00029
00031
00034 SDBRecord::SDBRecord(postgresiface2 *con) : DBRecord(con) {
00035 _depura("SDBRecord::SDBRecord", 0);
00036 static int creaciones = 0;
00037 creaciones++;
00038 _depura("SDBrecord::creados: ",0, QString::number(creaciones));
00039 _depura("END SDBRecord::SDBRecord", 0);
00040 }
00041
00042
00044
00046 SDBRecord::~SDBRecord() {
00047 static int destrucciones = 0;
00048 _depura("SDBRecord::~SDBRecord", 0);
00049 destrucciones++;
00050 _depura("SDBrecord::destruidos: ",0 , QString::number(destrucciones));
00051 _depura("SDBRecord::~SDBRecord", 0);
00052 }
00053
00054
00056
00060 int SDBRecord::DBsave(QString &id) {
00061 _depura("SDBRecord::DBsave", 0);
00062 refresh();
00063 _depura("END SDBRecord::DBsave", 0);
00064 return DBRecord::DBsave(id);
00065 }
00066
00067
00069
00071 void SDBRecord::refresh() {
00072 _depura("SDBRecord::refresh", 0);
00073 SDBCampo *camp;
00074 for (int i = 0; i < m_lista.size(); ++i) {
00075 camp = (SDBCampo *) m_lista.at(i);
00076 camp->refresh();
00077 }
00078 _depura("END SDBRecord::refresh", 0);
00079 }
00080
00081
00083
00090 int SDBRecord::addDBCampo(QString nom, DBCampo::dbtype typ, int res, QString nomp) {
00091 _depura("SDBRecord::addDBCampo", 0);
00092 SDBCampo *camp = new SDBCampo(this, m_conexionbase, nom, typ, res, nomp);
00093 camp->set("");
00094 m_lista.append(camp);
00095 _depura("END SDBRecord::addDBCampo", 0);
00096 return 0;
00097 }
00098
00099
00101
00109 SDBCampo::SDBCampo(SDBRecord *par, postgresiface2 *com, QString nom, dbtype typ, int res, QString nomp)
00110 :QTableWidgetItem2(), DBCampo(com, nom, typ, res, nomp) {
00111 _depura("SDBCampo::SDBCampo", 0);
00112 m_pare = par;
00113 _depura("SDBCampo::SDBCampo", 0);
00114 }
00115
00116
00118
00120 SDBCampo::~SDBCampo() {
00121 _depura("SDBCampo::~SDBCampo()", 0);
00122 _depura("END SDBCampo::~SDBCampo()", 0);
00123 }
00124
00125
00127
00129 void SDBCampo::refresh() {
00130 _depura("SDBCampo::refresh", 0);
00131 if (this->tipo() == DBCampo::DBboolean)
00132 DBCampo::set(checkState() == Qt::Checked ? "TRUE" : "FALSE");
00133 else
00134 DBCampo::set(text());
00135
00136 _depura("END SDBCampo::refresh", 0);
00137 }
00138
00139
00141
00145 int SDBCampo::set(QString val) {
00146 _depura("SDBCampo::set", 0, nomcampo() + " = " + val);
00147 QRegExp importe("^\\d*\\.\\d{2}$");
00148 if (tipo() == DBCampo::DBboolean) {
00149 if (restrictcampo() == SHeader::DBNoWrite) {
00150 setFlags(this->flags() & (~Qt::ItemIsUserCheckable));
00151 }
00152 if (val == "TRUE" || val == "t") {
00153 setCheckState(Qt::Checked);
00154 } else {
00155 setCheckState(Qt::Unchecked);
00156 }
00157 } else if (tipo() == DBCampo::DBnumeric && importe.exactMatch(val)) {
00158 setText(val);
00159 } else if (tipo() == DBCampo::DBdate) {
00160 setText(val.left(10));
00161 } else {
00162 setText(val);
00163 }
00164 DBCampo::set(val);
00165 _depura("END SDBCampo::set", 0, val);
00166 return 0;
00167 }
00168
00169
00171
00175 bool SDBCampo::operator< (const QTableWidgetItem &other) {
00176 _depura("SDBCampo::operator <", 0, text());
00177 SDBCampo *ot = (SDBCampo *) &other;
00178 dbtype tip = ot->tipo();
00179 if (tip == this->tipo()) {
00180 QString val = ot->valorcampo();
00181
00182 if (this->tipo() == DBCampo::DBnumeric || this->tipo() == DBCampo::DBint) {
00183 _depura("SDBCampo::operator < es del tipo numerico:", 0, this->nomcampo() + QString::number(this->tipo()));
00184 double db1 = this->valorcampo().toDouble();
00185 double db2 = val.toDouble();
00186 return (db1 < db2);
00187 }
00188
00189 if (this->tipo() == DBCampo::DBdate) {
00190 _depura("SDBCampo::operator < es del tipo fecha:", 0, this->nomcampo() + QString::number(this->tipo()));
00191 QDate fech = normalizafecha(this->valorcampo());
00192 QString db1 = fech.toString(Qt::ISODate);
00193 QDate fech1 = normalizafecha(val);
00194 QString db2 = fech1.toString(Qt::ISODate);
00195 return (db1 < db2);
00196 }
00197
00198 if (this->tipo() == DBCampo::DBvarchar) {
00199 _depura("SDBCampo::operator < es del tipo varchar:", 0, this->nomcampo() + QString::number(this->tipo()));
00200 return (this->valorcampo() < val);
00201 }
00202 _depura("tipo desconocido", 0);
00203 }
00204 _depura("END SDBCampo::operator <", 0, text());
00205 return FALSE;
00206 }
00207
00208
00210
00213 SDBRecord *SDBCampo::pare() {
00214 _depura("SDBCampo::pare", 0);
00215 _depura("END SDBCampo::pare", 0);
00216 return m_pare;
00217 }
00218
00219
00221
00228 SHeader::SHeader(QString nom, DBCampo::dbtype typ, int res, int opt, QString nomp) {
00229 _depura("SHeader::SHeader", 0);
00230 m_nomcampo = nom;
00231 m_tipo = typ;
00232 m_restricciones = res;
00233 m_options = opt;
00234 m_nompresentacion = nomp;
00235 m_valorcampo = "";
00236 _depura("END SHeader::SHeader", 0);
00237 }
00238
00239
00241
00243 SHeader::~SHeader() {
00244 _depura("SHeader::~SHeader", 0);
00245 _depura("END SHeader::~SHeader", 0);
00246 }
00247
00248
00250
00254 int SHeader::set(QString val) {
00255 _depura("SHeader::set", 0);
00256 m_valorcampo = val;
00257 _depura("END SHeader::set", 0);
00258 return 0;
00259 }
00260
00261
00263
00266 unsigned int SHeader::options() {
00267 _depura("SHeader::options", 0);
00268 _depura("END SHeader::options", 0);
00269 return m_options;
00270 }
00271
00272
00274
00277 unsigned int SHeader::restricciones() {
00278 _depura("SHeader::restricciones", 0);
00279 _depura("END SHeader::restricciones", 0);
00280 return m_restricciones;
00281 }
00282
00283
00285
00288 DBCampo::dbtype SHeader::tipo() {
00289 _depura("DBCampo::dbtype SHeader::tipo", 0);
00290 _depura("END DBCampo::dbtype SHeader::tipo", 0);
00291 return m_tipo;
00292
00293 }
00294
00295
00297
00300 QString SHeader::nompresentacion() {
00301 _depura("SHeader::nompresentacion", 0);
00302 _depura("EDN SHeader::nompresentacion", 0);
00303 return m_nompresentacion;
00304 }
00305
00306
00308
00311 int SHeader::restrictcampo() {
00312 _depura("SHeader::restrictcampo", 0);
00313 _depura("END SHeader::restrictcampo", 0);
00314 return m_restricciones;
00315 }
00316
00317
00319
00322 QString SHeader::nomcampo() {
00323 _depura("SHeader::nomcampo", 0);
00324 _depura("END SHeader::nomcampo", 0);
00325 return m_nomcampo;
00326 }
00327