martes, 11 de noviembre de 2008

QR Codes en IPhone

Los QR Codes son super conocidos y utilizados en Japón. Se trata de un sistema para almacenar información en una matriz de puntos o un código de barras bidimensional.

Los usos practicos son por ejemplo, la administración de inventarios.

Lo que es revolucionario es que estos codigos se pueden leer desde dispositivos moviles. Y debido a esto se han integrado nuevos usos como son, una tarjeta de presentación con QR de forma que no sea necesario estar digitando uno a uno los datos de la persona, entre otros.

Mas información en Wikipedia.

Estos codigos se pueden leer desde el IPhone con programas como DataMatrix (Free) y 2D Sense (Free).

Tambien quisiera dejar un link a una red social en torno a esta tecnología:
http://2dcode.ning.com/

En la práctica

Instale el programa 2d Sense en mi iphone.
Luego genere un código que contiene un link al sitio www.marcosdonoso.cl en la página: http://omarabid.com/barcode/index.php
luego desde el programa 2D Sense le saque una foto al código (en la pantalla del notebook). Y el Safari lanzo una solicitud de conexión a www.marcosdonoso.cl, lo cual acepte.

El codigo generado es este:

lunes, 10 de noviembre de 2008

Nueva entrega de CRMOS

Este blog por si se habran dado cuenta es medio desordenado. La finalidad es que es como un taller, donde voy colocando rapidamente mi experiencia en los desarrollos que estoy realizando. Por eso no me aplico mucho a que la redacción quede perfecta. Lo que me importa es que si coloco un tip o la solución de un error esto pueda ser fácilmente ententido y aplicado por ustedes quienes me visitan. Sino, pueden dejar un comentario para mejorar el post, cosa que haré.

El motivo de este post es comunicar que he dejado una nueva versión del código fuente de CRMOS, en http://code.google.com/p/crmos/downloads/list el archivo a descargar tiene que ser crmos_20081110.rar, el numero indica la fecha 10/11/2008.

Esta entrega le falta mucho,  por lo que si tienes ganas de participar en un proyecto Open Soure te dejo extendida la invitación  a participar. Solo tienes que enviar un e-mail, o registrarte en www.elforo.cl y hacer tus consultas y sugerencias sobre el proyecto. 

domingo, 9 de noviembre de 2008

could not resolve property: Id_Per

En NHibernate lo que manda a grandes rasgos es el maping y si ocurre este error es probable que la propiedad por la que ocurre el error no esta en el mapping, por ejemplo:

En el archivo con error falta la propiedad Id_Per.

Archivo con error:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="crmos.Bo.Contacto, crmos.Bo" table="Contacto">
<id name="Id_Con" type="Int32" unsaved-value="null">
<column name="Id_Con" length="4" sql-type="int" not-null="true" unique="true" index="PK_Contacto"/>
<generator class="native" />
</id>
<property name="Id_Cti" type="Int32">
<column name="Id_Cti" length="4" sql-type="int" not-null="false"/>
</property>
<property name="Fecha_Con" type="DateTime" access="property" >
<column name="Fecha_Con" sql-type="datetime" />
</property>
<property name="Observacion_Con" type="String" access="property">
<column name="Observacion_Con" length="16" sql-type="text" not-null="false"/>
</property>
<property name="Estado_Est" type="Int32" access="property">
<column name="Estado_Est" length="4" sql-type="int" not-null="false"/>
</property>
<property name="Id_Ven" type="Int32" access="property">
<column name="Id_Ven" length="4" sql-type="int" not-null="false"/>
</property>

</class>
</hibernate-mapping>

Archivo correcto
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="crmos.Bo.Contacto, crmos.Bo" table="Contacto">
<id name="Id_Con" type="Int32" unsaved-value="null">
<column name="Id_Con" length="4" sql-type="int" not-null="true" unique="true" index="PK_Contacto"/>
<generator class="native" />
</id>
<property name="Id_Per" type="Int32">
<column name="Id_Per" length="4" sql-type="int" not-null="false"/>
</property>
<property name="Id_Cti" type="Int32">
<column name="Id_Cti" length="4" sql-type="int" not-null="false"/>
</property>
<property name="Fecha_Con" type="DateTime" access="property" >
<column name="Fecha_Con" sql-type="datetime" />
</property>
<property name="Observacion_Con" type="String" access="property">
<column name="Observacion_Con" length="16" sql-type="text" not-null="false"/>
</property>
<property name="Estado_Est" type="Int32" access="property">
<column name="Estado_Est" length="4" sql-type="int" not-null="false"/>
</property>
<property name="Id_Ven" type="Int32" access="property">
<column name="Id_Ven" length="4" sql-type="int" not-null="false"/>
</property>

</class>
</hibernate-mapping>

Could not find field 'Fecha_Con' in class 'crmos.Bo.Contacto'

Tube este error en el proyecto CRMOS y solucione cambiando  la propiedad access de field a property.

Código con error:
&lt:property name="Fecha_Con" type="DateTime" access="field" >
<column name="Fecha_Con" sql-type="datetime" />
</property>

Corregido
&lt:property name="Fecha_Con" type="DateTime" access="field" >
<column name="Fecha_Con" sql-type="datetime" />
</property>

Could not find a getter for property

Estube con este error n días hasta que descubrí cual era la razón. ¿De que estamos hablando? Del proyecto CRMOS con NHibernate. Tengo una clase que es Contacto:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="crmos.Bo.Contacto, crmos.Bo" table="Contacto">
<id name="Id" type="Int32" unsaved-value="null">
<column name="Id_Con" length="4" sql-type="int" not-null="true" unique="true" index="PK_Contacto"/>
<generator class="native" />
</id>
<property name="Id_Cti" type="Int32">
<column name="Id_Cti" length="4" sql-type="int" not-null="false"/>
</property>
<property name="Fecha_Con" type="DateTime" access="field" >
<column name="Fecha_Con" length="8" sql-type="datetime" not-null="false"/>
</property>
<property name="Observacion_Con" type="String" access="field">
<column name="Observacion_Con" length="16" sql-type="text" not-null="false"/>
</property>
<property name="Estado_Est" type="Int32" access="field">
<column name="Estado_Est" length="4" sql-type="int" not-null="false"/>
</property>
<property name="Id_Ven" type="Int32" access="field">
<column name="Id_Ven" length="4" sql-type="int" not-null="false"/>
</property>
    
</class>
</hibernate-mapping>

y la clase que estaba implementando tenia campos como:
xId_Con, xId_Cti, etc. Ejemplo:

public virtual int xId_Con{ 
 get {return Id_Con;} set {Id_Con=value;}}

 public virtual int xId_Per{ 
 get {return xId_Per;} set {xId_Per=value;}}
 public virtual int Id_Cti{ 
 get {return Id_Cti;} set {Id_Cti=value;}}
 public virtual DateTime xFecha_Con{ 
 get {return Fecha_Con;} set {Fecha_Con=value;}}
 public virtual string xObservacion_Con{ 
 get {return Observacion_Con;} set {Observacion_Con=value;}}
 public virtual int xEstado_Est{ 
 get {return Estado_Est;} set {Estado_Est=value;}}
 public virtual int xId_Ven{ 
 get {return Id_Ven;} set {Id_Ven=value;}} 


La solución es que si tengo mapeada una propieda Id_Con, Id_Per, etc. Esos es lo que tiene que estar en la clase. Ejemplo (el siguiente código es correcto)

public virtual int Id_Con{ 
 get {return xId_Con;} set {xId_Con=value;}}

 public virtual int Id_Per{ 
 get {return xId_Per;} set {xId_Per=value;}}
 public virtual int Id_Cti{ 
 get {return xId_Cti;} set {xId_Cti=value;}}
 public virtual DateTime Fecha_Con{ 
 get {return xFecha_Con;} set {xFecha_Con=value;}}
 public virtual string Observacion_Con{ 
 get {return xObservacion_Con;} set {xObservacion_Con=value;}}
 public virtual int Estado_Est{ 
 get {return xEstado_Est;} set {xEstado_Est=value;}}
 public virtual int Id_Ven{ 
 get {return xId_Ven;} set {xId_Ven=value;}}

sábado, 8 de noviembre de 2008

de MS SQL 2005 a MS SQL 2000

Probablemente mas de alguno ha intentado migrar una base de datos de SQL 2005 a la versión 2000 a travez de un script del asistente para secuencia de comandos del Magament Studio. Bueno,  lo siguiente es que cuando intentas correr el script en SQL 2000 te da errores.

Para exportar correctamente es posible indicar al asistente de SQL 2005 la versión.
El flujo es:
Seleccionar Base de datos -> 
Elegir opciones de secuencia de comandos, en esta ventana debes buscar la linea Secuencia de comando para versión del servidor y elijes SQL Server 2000.

Error '3622' en tiempo de ejecución:

Siguiendo con el proyectito retro de migrar una aplicación VB6 y Access a SQL. Intente conectarme  a la misma base pero en SQL 2005 Express y me aparecio el siguiente error:

Error '3622' en tiempo de ejecución:

Debe usar la opción dbSeeChanges con OpenRecordset al tener 
acceso a una tabla de SQLServer que tenga una columna IDENTITY.

El cual solucione agregando lo siguiente cuando abro el recordset:

Set rsTmp=gdbCurrentDB.OpenRecordset(rName,dbOpenDynaset, dbSeeChanges)

funciono perfectamente.
La solución la obtuve en el siguiente link: