jueves, 13 de febrero de 2014

Efimeras

Algunos preguntan ¿en esta vida que es perdurable? Ya que otros tantos aseveran... "que las palabras se las lleva el viento"
"que las promesas son solo palabras" y que "las reglas estan hechas para transgredirse"
Pero entonces, ¿que es duradero en una persona? ¿Que es aquello que se puede prender en un ser humano y permanecer en el a traves del tiempo?
!las emociones! Pequeñas o grandes generadoras de recuerdos y que despiertan y agitan las fibras mas sensibles de  una persona. Eso amigos mios es lo verdaderamente inolvidable, claro esta que las hay buenas y malas por eso esforcemonos en generar en los demas solo gratos sentimientos pues podemos estar seguros que aquello que plantemos ya no se ira...

lunes, 9 de diciembre de 2013

Obtener el nodo de un Xml (Cfdi) con todo y que tenga la nomenclatura ns:elemento, en 2 pataditas con LINQ. [LINQ TO XML]

 

Que tal pues nada que como parte de mi trabajo me vi en la necesidad de obtener el nodo del complemento TimbreFiscalDigital desde una factura CFDi que como bien sabran es un XML. Pues bien tras intentarlo con XPATH, y demas… siempre obtenia un error de Espacio de Nombres, y es que estos archivos poseen una nomenclatura basada en NameSpace y aun administrandolos no conseguia mi cometido.

Sin embargo he aqui como lo solucione extremadamente facil, claro esta con LINQ.

Espero que les sea de utilidad.

 



   1:  Dim xdoc = XDocument.Load(pArchivoXmlCfdiGenerado)
   2:              Dim timbreFiscal = (From item In xdoc.Descendants
   3:                                  Where item.Name.LocalName = "TimbreFiscalDigital"
   4:                                  Select item).First()
   5:   
   6:              pHistoricoTimbreCFDi.FechaTimbrado = Convert.ToDateTime(timbreFiscal.Attribute("FechaTimbrado").Value)
   7:              pHistoricoTimbreCFDi.UUID = timbreFiscal.Attribute("UUID").Value
   8:              pHistoricoTimbreCFDi.NoCertificadoSAT = timbreFiscal.Attribute("noCertificadoSAT").Value
   9:              pHistoricoTimbreCFDi.SelloCFD = timbreFiscal.Attribute("selloCFD").Value
  10:              pHistoricoTimbreCFDi.SelloSAT = timbreFiscal.Attribute("selloSAT").Value
  11:              pHistoricoTimbreCFDi.Version = timbreFiscal.Attribute("version").Value
  12:              pHistoricoTimbreCFDi.Esquemas = timbreFiscal.Parent.ToString

jueves, 31 de octubre de 2013

Posteando desde android con soffice

image

Pues nada, aqui probando la edicion de blogs desde android con Soffice. Que para ser desde un celular me parece sencillo en cuanto al manejo; pero con muy buenas opciones sobre todo en lo que respecta a la inserción de elementos.
La pega que le veo es que solo es posible editar las entradas agregadas desde el dispositivo por lo que olvidate de querer modificar tus demas posts.
En conclusión recomendado en definitiva, pues me parece que de las alternativas es la mejor para mobiles.

miércoles, 30 de octubre de 2013

Como llamar un Constructor Base desde una clase Heredada, en Vb y C#

 

Escribo esta entrada porque algunos colegas tal vez no estan al tanto de las diferencias que implica el lenguaje al momento de llamar un constructor Base desde la clase que la hereda.

C#

En la Firma del constructor de la clase heredada, especificamos a que constructor base debe llamar y que parametros se enviaran al mismo.

   1:          public AtmException(object pOrigen,string pMensaje)
   2:              : base(pMensaje)
   3:          {
   4:              Data.Add("ObjectSource", pOrigen);
   5:              Data.Add("Mensaje", pMensaje);
   6:          }
   7:      }




Vb.Net


En este caso utilizaremos el objeto MyBase para llamar al constructor deseado, en la linea inmediata a la firma del Constructor de la clase derivada.


 


   1:    Public Class ExceptionNumeroRegistrosExcedido
   2:          Inherits Exception
   3:   
   4:          Sub New(pMensajeExcepcion As String)
   5:              MyBase.New(pMensajeExcepcion)
   6:          End Sub
   7:      End Class



 


Bien pues como siempre espero que les sea de utilidad.


Happy Coding… KarlozArba

miércoles, 31 de octubre de 2012

Deshabilitar que la tecla ENTER dispare el evento Button.Click

 

Este caso aunque la solución llegue a ser sencilla en implementación, no me parece que este al alcance de quienes tenemos un conocimiento básico, intermedio de DotNet. En fin, cuando necesitemos que un botón dispare su evento click al pulsar la tecla ENTER cuando esté enfocado, deberemos forzosamente crear nuestro propio botón heredándolo de otro botón claro esta, en mi caso lo he hecho a partir de uno de DevExpress.

Una vez hecho esto, sobrescribir el método ProcessCmdKey tal como muestro más abajo.

Para mi  caso muy particular se requería que si se detectara a tecla y de ser ENTER se enviara el foco al siguiente control, lo cual realice mediante un PreviewKeyDown.

image

Public Class iBotonDx     Inherits DevExpress.XtraEditors.SimpleButton     Protected Overrides Function ProcessCmdKey(ByRef msg As Message, ByVal keyData As Keys) As Boolean         Return keyData = Keys.Enter OrElse MyBase.ProcessCmdKey(msg, keyData)     End Function     Private Sub iBotonDx_PreviewKeyDown(sender As System.Object, e As System.Windows.Forms.PreviewKeyDownEventArgs) Handles Me.PreviewKeyDown         If e.KeyCode = Keys.Enter Then             SendKeys.Send("{TAB}")         End If     End Sub

End Class

Bien es todo en este entrada. Como siempre espero sea de utilidad.


 


Happy Coding… KarlozArba

lunes, 15 de octubre de 2012

La propiedad EditValue de un TextEdit de DevExpress devuelve error en su método GET si no se tiene un valor inicial.

Bueno pues resulta que si no hemos asignado mediante código un valor inicial para la propiedad EditValue en un TextEdit de DevExpress este nos tira un error de referencia nula. Y este error se dispara aun cuando validemos el contenido de la propiedad con IsNothing o String.IsNullOrEmpty.

Bien la solución es bastante sencilla, lo único que debemos hacer es configurar en tiempo de diseño dicha propiedad, estableciendo el tipo de dato que contendrá y el valor que almacenara cuando nosotros no establezcamos nada de forma predeterminada.

image

 

Espero que les sea de utilidad.

 

Happy Coding…. KarlozArba

viernes, 5 de octubre de 2012

Binding de los valores de una ENUMERATION en el DataSource de un Control.

 

El día de hoy, muy brevemente comentare que cuando nos sea necesario cargar los valores de una enumeración en el DataSource de un control [ej. Combo, List, etc] quizá nuestra primera intensión sea recorrer la enumeración sin embargo la solución que les recomiendo es la siguiente:

cbEstatus.Properties.DataSource = System.Enum.GetValues(GetType(Dominio.Enumeraciones.EnEstatus))

Con lo cual cargaran inmediatamente los valores, ahorrándonos un poco de trabajo y alguno que otra contratiempo.

 

Bien como dije la entrada de hoy ha pecado de breve, pero como siempre espero que sea de utilidad para la comunidad.
Happy Coding... Karloz Arba