2 using System.Collections.Generic;
6 using System.Text.RegularExpressions;
11 namespace sage.ew.formul
25 this._DataBase =
"COMUNES";
26 this._Tabla =
"BROWSERS";
27 this._Clave =
"CODIGO";
28 this._TituloMantenimiento =
"Mantenimiento de consultas personalizadas";
29 this._FormManteBaseType = typeof(Forms.frmConsultasBrowsers);
30 this._Pantalla =
"BROWSERS";
31 this._TituloCabecera =
"Consultas de Browsers";
32 this._TituloMenu =
"Consultas de Browsers";
42 this._Codigo = tcCodigo;
45 #endregion CONSTRUCTORS 60 string mascaras = (_lisCampos.ContainsKey(
"MASCARAS") ? _lisCampos[
"MASCARAS"]._NewVal.ToString() :
"");
62 return _oBrowserColumnsConfig;
66 _oBrowserColumnsConfig = value;
67 _RefreshBrowserColumnsConfig();
76 _lisCampos[
"MASCARAS"]._NewVal = _lisCampos.ContainsKey(
"MASCARAS") && _oBrowserColumnsConfig is
BrowserColumnsConfig ? _oBrowserColumnsConfig.
ToString() :
"";
82 public string _Consulta
86 if (_lisCampos.ContainsKey(
"CONSULTA"))
88 return _lisCampos[
"CONSULTA"]._NewVal.ToString();
97 if (_lisCampos.ContainsKey(
"CONSULTA"))
99 _lisCampos[
"CONSULTA"]._NewVal = value;
107 public string _FieldTabla
111 if (_lisCampos.ContainsKey(
"TABLA"))
113 return _lisCampos[
"TABLA"]._NewVal.ToString().ToUpper();
122 if (_lisCampos.ContainsKey(
"TABLA"))
124 _lisCampos[
"TABLA"]._NewVal = value;
132 public string _Claves
136 if (_lisCampos.ContainsKey(
"CLAVES"))
138 return _lisCampos[
"CLAVES"]._NewVal.ToString().ToUpper();
147 if (_lisCampos.ContainsKey(
"CLAVES"))
149 _lisCampos[
"CLAVES"]._NewVal = value;
154 private string _cBrowserClave =
"";
158 public string _BrowserClave
160 get {
return _cBrowserClave; }
161 set { _cBrowserClave = value; }
165 private string _cTablaConsulta =
"";
169 public string _TablaConsulta
171 get {
return _cTablaConsulta; }
176 _cTablaConsulta = value.ToUpper();
181 private string _cDataBaseConsulta =
"";
185 public string _DataBaseConsulta
187 get {
return _cDataBaseConsulta; }
191 value = String.Empty;
192 _cDataBaseConsulta = value.ToUpper();
196 private string _cTituloBrowser =
"";
200 public string _TituloBrowser
202 get {
return _cTituloBrowser; }
203 set { _cTituloBrowser = value; }
209 public string _RequiredFieldsForBrowserExtensions {
get;
set; }
214 public List<string> _CamposResultado =
new List<string>();
216 #endregion PROPIETATS 226 public override void _New(
string tcCodigo =
"")
231 _FieldTabla = _TablaConsulta.ToUpper();
241 _oBrowserColumnsConfig = null;
253 if (
string.IsNullOrWhiteSpace(this._Consulta))
255 this._Error_Message =
"Es obligatorio introducir una consulta.";
260 string lcMensajeError =
"";
261 string lcSql = this._Consulta.ToUpper();
262 DataTable loResultat =
new DataTable();
264 if (!_ComprobarConsulta(ref lcSql, out lcMensajeError, ref loResultat))
266 this._Error_Message =
"La consulta no es correcta. No se puede guardar.";
271 int lnPosSelect = this._Consulta.IndexOf(
"Select", StringComparison.OrdinalIgnoreCase);
272 int lnPosFrom = this._Consulta.IndexOf(
"From", StringComparison.OrdinalIgnoreCase);
273 string lcSelect = this._Consulta.Substring(lnPosSelect + 6, lnPosFrom - (lnPosSelect + 6));
274 int lnPosAll = lcSelect.IndexOf(
"*", StringComparison.OrdinalIgnoreCase);
278 String lcClave, lcConsulta;
280 if (_Hera && _TablaConsulta.ToUpper() ==
"CLIENTES")
282 lcConsulta = this._Consulta.ToLower();
283 MatchCollection loMatches = Regex.Matches(lcConsulta.Substring(0, lnPosFrom),
@"\s+(as)\s+(?<alias>\w+)");
284 lcClave =
"CLIENTEERP";
286 foreach (Match loMatch
in loMatches)
288 if (loMatch.Groups[
"alias"].Value == lcClave.ToLower()) lnPosClave = 0;
293 lnPosClave = lcSelect.IndexOf(_Clave, StringComparison.OrdinalIgnoreCase);
309 _RefreshBrowserColumnsConfig();
311 bool saved = base._Save();
316 string usuario = EW_GLOBAL._GetVariable(
"wc_usuario").ToString();
317 _Vista browserExtPos =
new _Vista(
"COMUNES",
"BROWSEREXTPOS",
new Dictionary<string, object>() { {
"Tabla", _TablaConsulta +
"_" + _Codigo }, {
"Usuario", usuario } });
334 bool lbDelete =
false;
336 lbDelete = base._Delete();
341 string lcCodiConsulta = DB.SQLValor(
"USRBROWSER",
new string[] {
"USUARIO",
"Upper(TABLA)" },
new string[] { global.EW_GLOBAL._GetVariable(
"wc_usuario").ToString(), _FieldTabla.ToUpper() },
"CODIGO",
"COMUNES").ToString();
342 if (this._Codigo.Trim() == lcCodiConsulta.Trim())
345 _Borrar_Predeterminada();
355 public override void _Show(
string tcCodigoConsulta =
"")
357 _Codigo = tcCodigoConsulta;
366 #region MÈTODES PUBLICS 375 public bool _ComprobarConsulta(ref
string tcConsulta, out
string tcMensajeError,
bool tbSoloComprobar =
true)
377 bool lbCorrecte =
false;
380 DataTable loResultat =
new DataTable();
387 tcConsulta = Regex.Replace(tcConsulta,
"Select",
"Select Top 0", RegexOptions.IgnoreCase);
390 lbCorrecte = _ComprobarConsulta(ref tcConsulta, out tcMensajeError, ref loResultat);
396 tcConsulta = Regex.Replace(tcConsulta,
"Top 0 ",
"", RegexOptions.IgnoreCase);
408 public bool _ComprobarConsulta(ref
string tcConsula, out
string tcMensajeError, ref DataTable toResultat)
410 bool lbCorrecte =
false;
411 string consultalocal =
"";
414 toResultat =
new DataTable();
417 tcConsula = Regex.Replace(tcConsula,
@"\s+",
" ");
422 foreach (KeyValuePair<string, string> loDB
in DB._oAliasDB)
424 tcConsula = QuitarAsBD(tcConsula, loDB.Key.Trim());
425 tcConsula = Regex.Replace(tcConsula, loDB.Key.Trim() +
"!", loDB.Value.Trim(), RegexOptions.IgnoreCase);
428 consultalocal = tcConsula;
429 if (!EW_GLOBAL._ReplaceVariables(ref consultalocal))
431 tcMensajeError =
"Falta el corchete de cierre en alguna variable global.";
436 if (DB.SQLExec(consultalocal, ref toResultat) && toResultat != null)
444 tcMensajeError = ex.Message;
447 _CamposResultado.Clear();
452 if (toResultat.Columns.Count > 0)
454 _CamposResultado.Add(
"");
458 foreach (DataColumn camp
in toResultat.Columns)
460 if (_CamposResultado.Contains(camp.ColumnName.Trim().ToUpper()))
462 tcMensajeError =
"Ha incluido el mismo campo o el mismo alias más de una vez en el resultado de la consulta.";
464 _CamposResultado.Clear();
468 _CamposResultado.Add(camp.ColumnName.Trim().ToUpper());
482 string lcUsuario = global.EW_GLOBAL._GetVariable(
"wc_usuario").ToString();
485 _Borrar_Predeterminada();
488 DB.SQLExec(
"Insert Into " + DB.SQLDatabase(
"COMUNES",
"USRBROWSER") +
489 "(USUARIO, TABLA, CODIGO) " +
490 "Values (" + DB.SQLString(lcUsuario) +
"," + DB.SQLString(_FieldTabla.ToUpper()) +
"," + DB.SQLString(_Codigo) +
")");
498 string lcUsuario = global.EW_GLOBAL._GetVariable(
"wc_usuario").ToString();
500 DB.SQLExec(
"Delete From " + DB.SQLDatabase(
"COMUNES",
"USRBROWSER") +
501 " Where USUARIO = " + DB.SQLString(lcUsuario) +
502 " And Upper(TABLA) = " + DB.SQLString(_FieldTabla.ToUpper()));
511 DataTable ldDTP =
new DataTable();
512 string lcMissatge=
"";
513 bool lbCorrecte =
false;
515 string lcCodiConsulta = DB.SQLValor(
"USRBROWSER",
new string[] {
"USUARIO",
"Upper(TABLA)" },
new string[] { global.EW_GLOBAL._GetVariable(
"wc_usuario").ToString(), _FieldTabla.ToUpper() },
"CODIGO",
"COMUNES").ToString();
517 if (!
string.IsNullOrWhiteSpace(lcCodiConsulta))
519 string lcSql = DB.SQLValor(
"BROWSERS",
"CODIGO", lcCodiConsulta,
"CONSULTA",
"COMUNES").ToString();
521 if (!
string.IsNullOrWhiteSpace(lcSql))
524 lbCorrecte = _ComprobarConsulta(ref lcSql, out lcMissatge, ref ldDTP);
539 List<string> lstConsultas =
new List<string>(){
""};
540 DataTable ldtConsultas = _GetDataTableConsultasByTabla();
542 if (ldtConsultas != null && ldtConsultas.Rows.Count > 0)
544 lstConsultas = ldtConsultas.Rows.OfType<DataRow>().Select(dr => dr.Field<
string>(1)).ToList();
548 lstConsultas.Add(
"");
560 DataTable ldtConsultas =
new DataTable();
561 string usuario = global.EW_GLOBAL._GetVariable(
"wc_usuario").ToString();
563 string lcSql =
"Select browsers.codigo, browsers.nombre, CAST( case when usrbrowser.codigo is null then 0 else 1 end as bit) as predet " +
564 "From " + DB.SQLDatabase(
"COMUNES",
"BROWSERS") +
" browsers " +
565 "Left Join " + DB.SQLDatabase(
"COMUNES",
"USRBROWSER") +
" usrbrowser On usrbrowser.codigo = browsers.codigo " +
566 " and usrbrowser.usuario = " + DB.SQLString(usuario) +
567 " and Upper(usrbrowser.tabla) = " + DB.SQLString(_TablaConsulta.ToUpper()) +
" " +
568 "Where Upper(browsers.tabla) = " + DB.SQLString(_TablaConsulta.ToUpper()) +
569 "Order by browsers.codigo";
571 DB.SQLExec(lcSql, ref ldtConsultas);
585 string lcCodiConsulta = DB.SQLValor(
"USRBROWSER",
new string[] {
"USUARIO",
"Upper(TABLA)" },
new string[] { global.EW_GLOBAL._GetVariable(
"wc_usuario").ToString(), _TablaConsulta.ToUpper() },
"CODIGO",
"COMUNES").ToString();
587 return lcCodiConsulta;
599 string lcCodiConsulta = DB.SQLValor(
"USRBROWSER",
new string[] {
"USUARIO",
"Upper(TABLA)" },
new string[] { global.EW_GLOBAL._GetVariable(
"wc_usuario").ToString(), _TablaConsulta.ToUpper() },
"CODIGO",
"COMUNES").ToString();
601 if (!
string.IsNullOrWhiteSpace(lcCodiConsulta))
603 string lcNombre = DB.SQLValor(
"BROWSERS",
"CODIGO", lcCodiConsulta,
"NOMBRE",
"COMUNES").ToString();
624 string lcMissatge =
"";
626 bool lbCorrecte =
false;
628 string codi = tcCodigoConsulta;
630 if (!
string.IsNullOrWhiteSpace(codi))
634 lcSql = this._Consulta;
636 if (!
string.IsNullOrWhiteSpace(lcSql))
639 lcSql = lcSql.Trim().Replace(
"\r",
" ").Replace(
"\n",
" ");
642 lbCorrecte = _ComprobarConsulta(ref lcSql, out lcMissatge, soloComprobar);
659 string lcMissatge =
"";
661 bool lbCorrecte =
false;
663 string codi = DB.SQLValor(
"BROWSERS",
"NOMBRE", tcNombreConsulta,
"CODIGO",
"COMUNES").ToString();
665 if (!
string.IsNullOrWhiteSpace(codi))
669 lcSql = this._Consulta;
671 if (!
string.IsNullOrWhiteSpace(lcSql))
674 lcSql = lcSql.Trim().Replace(
"\r",
" ").Replace(
"\n",
" ");
677 lbCorrecte = _ComprobarConsulta(ref lcSql, out lcMissatge, soloComprobar);
687 #endregion MÈTODES PUBLICS 689 private string QuitarAsBD(
string tcConsula,
string basedatos)
691 basedatos = basedatos.ToUpper();
697 posbd = tcConsula.ToUpper().IndexOf(basedatos +
"!", posbd + 1);
701 int pos1 = tcConsula.ToUpper().IndexOf(
" ", posbd);
705 int pos2 = tcConsula.ToUpper().IndexOf(
" ", pos1 + 1);
709 if (tcConsula.Substring(pos1 + 1, pos2 - pos1 - 1).ToLower() ==
"as")
712 tcConsula = tcConsula.Substring(0, pos1) + tcConsula.Substring(pos2);
Clase de negocio base para mantenimientos
Objeto para la consulta, edición y actualización de datos de tablas (simula vistas de Fox) ...
bool _Delete()
Elimina la fila actual
int _Reccount
Cantidad de registros recuperados
_EstadosMantenimiento
Declaro un enum para los estados del mantenimiento.
bool _TableUpdate()
Guarda los registros a la tabla