tag:blogger.com,1999:blog-88551747285728895652024-02-02T20:58:04.704-03:00Diego OcampoBlog sobre tecnologías GenexusDiego Ocampohttp://www.blogger.com/profile/16182346507304485510noreply@blogger.comBlogger8125tag:blogger.com,1999:blog-8855174728572889565.post-39404731673553181072013-01-11T13:14:00.000-02:002013-01-11T13:14:03.043-02:00Tip: WebFonts + GeneXus<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-g-__hiPjbv4/UHQM0wle9UI/AAAAAAAAEU8/Ds5vR3snIVw/s400/500-Beautiful-and-Free-Fonts-Must-Have.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="200" src="http://3.bp.blogspot.com/-g-__hiPjbv4/UHQM0wle9UI/AAAAAAAAEU8/Ds5vR3snIVw/s200/500-Beautiful-and-Free-Fonts-Must-Have.jpg" width="200" /></a></div>
<span style="font-family: "Trebuchet MS",sans-serif;">Inaugurando la sección tips les dejo un breve articulo sobre webfonts en GeneXus.<br /><br />Para que nuestra pagina se vea como queremos es importante lograr que las fonts que elegimos sean las que ve el usuario de la aplicación. <br />Cuando trabajamos en nuestro ambiente local tenemos las fuentes instaladas, por lo que la pagina siempre se va a ver como queremos. Para los usuarios que no tengan las fuentes instaladas esto no va a ser así y el diseño que verán de nuestra pagina va a ser distinto.</span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"></span><br />
<span style="font-family: "Trebuchet MS",sans-serif;"><br />Para solucionar este en <a href="http://www.simplifica.com.uy/" target="_blank">Simplifica</a> hacemos lo siguiente:<br /><br /><b>1) </b>Crear un CSS (archivo) con la declaración de las fuentes que voy a utilizar:<br /><br />Por ejemplo font.css con:<br /><br />@font-face{<br />font-family:'MyriadPro-Bold';<br />src: url('MyriadWebPro-Bold.woff') format('woff'),<br />url('MyriadWebPro-Bold.ttf') format('truetype'),<br />url('MyriadWebPro-Bold.svg') format('svg');<br />}<br /><br /><b>2)</b> Agregar la fuente en formato woff, ttf/otf y svg (en el caso de arriba, en la carpeta web)<br /><br /><b>3) </b>Agregar la referencia en la masterpage<br />Form.HeaderRawHTML += '<link href="fonts.css" rel="stylesheet" type="text/css"></link>'<br /><br /><b>4)</b> Luego agregar clases en mi tema y en Font Family poner el nombre que le puse a la fuente, por ejemplo "MyriadPro-Bold'"<br />Siempre es aconsejable que pongan dos, una Webfont y una de las estándar (la que mas se aproxime) para el caso de los browsers viejos.<br /><br />Si tengo un textblock, variable, etc. tengo que asociarle la clase de mi fuente (recuerden que se pueden poner mas de una clase asociada a un elemento html).<br />En el combo de Font de GeneXus tienen que dejar el valor by default para que GX no agregue el Style de la font. En ese combo no les van a aparecer las Webfonts, solo aparecen las ttf instaladas en el sistema.<br /><br /><b>Otra alternativa....</b><br />En lugar de esto se pueden utilizar las Google Webfonts, que son fonts almacenadas en Google, entonces simplemente hay que agregar la referencia a la fuente y esto ya es el CSS + Font<br />ej:<br /><link href="http://fonts.googleapis.com/css?family=Stalemate" rel="stylesheet" type="text/css"></link><br /><br />y ya pueden agregar en la clase que quieran usar la FontFamily Stalemate<br />http://www.google.com/webfonts<br /><br /><br /><br /><br /><br /></span>Diego Ocampohttp://www.blogger.com/profile/16182346507304485510noreply@blogger.com0tag:blogger.com,1999:blog-8855174728572889565.post-43319150812435799362011-04-06T10:50:00.000-03:002011-04-06T10:50:34.775-03:00El futuro del desarrollo móvil: crear una web móvil o una aplicación nativa<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPknVVlJFzD3yoJJgOHw88JLleuDzo15iz-WKcSv3JHTRg768EGN2jir5e_VBOLeAiGpw7Q-IkQYEy5owpGfxkkyd1dUeEPY10bbEMnFeAWr7wX2me-laaiu5JPPH_D9XhZTC6Sni5byQa/s1600/comparativa-so-moviles-2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPknVVlJFzD3yoJJgOHw88JLleuDzo15iz-WKcSv3JHTRg768EGN2jir5e_VBOLeAiGpw7Q-IkQYEy5owpGfxkkyd1dUeEPY10bbEMnFeAWr7wX2me-laaiu5JPPH_D9XhZTC6Sni5byQa/s320/comparativa-so-moviles-2.jpg" width="320" /></a></div>La batalla en el desarrollo móvil va más allá de la lucha entre sistemas móviles como pueden ser Android, iOs o Windows Phone 7. HTML5 lleva tiempo generando altas expectativas y plantea <b>el futuro del desarrollo móvil a caballo entre las aplicaciones nativas y las web móvil</b> que muchos de los desarrolladores acostumbrados a la web tradicional pueden aprovechar. <br />
La tendencia actual sitúa <b>el suculento mercado de las aplicaciones móviles como un fuerte aliciente</b> para que los desarrolladores se decanten por implementar aplicaciones usando un <span class="caps">SDK</span> especifico asumiendo el esfuerzo que conlleva el aprendizaje de una tecnología nueva y en ocasiones cerrada a unos pocos dispositivos<br />
<br />
Los diversos estudios referentes a <b>qué tecnología móvil prefieren los desarrolladores</b>, sitúan <b> iOS por delante con una clara ventaja</b> a pesar de ser una plataforma cerrada y exclusiva para los dispositivos de Apple. Tenemos que reconocer que tanto en el mercado de smartphones como de tablet son los que primero llegaron, al menos sí los que supieron monetizarlo bien. Así que es normal que muchas empresas quieran estar presentes y demanden profesionales cualificados para desarrollar aplicaciones móviles. O incluso el crecimiento de las startups que diseñan aplicaciones para terceros que reclaman este tipo de desarrolladores en plantilla.<br />
En paralelo y creciendo, nos encontramos a <b>los desarrolladores de Android</b>. Muchos de ellos venidos del mundo java dada <b>la ligera curva de aprendizaje si se está familiarizado con el lenguaje Java</b>. La tendencia actual marca que el número de desarrolladores Android crecerá, dado el aumento de dispositivos que llevan el sistema operativo Android y la libertad de creación marcada desde un principio por Google en contraposición a Apple.<br />
El auge en<b> las ofertas de empleo crece para los desarrolladores móviles</b>, muchas veces desarrollando a la par la misma aplicación nativa en iPhone o en Android. Sin olvidarnos de <b>sistemas que empezarán a golpear fuerte como el <span class="caps">RIM</span> con sistema operativo para Blackberry o Windows Phone 7</b> que empieza a tener una comunidad importante de desarrolladores.<br />
<h2>Las aplicaciones nativas ofrecen una serie de funcionalidades imposibles de conseguir en la web</h2>En todos los casos, los desarrolladores de aplicaciones nativas tienen la ventaja de poder usar funciones que de otra forma en la web móvil no se podría.<br />
<div class="post-body"><br />
<br />
<li>El <b>uso de interfaces nativas que proveen los propios SDK</b> como iPhone o Android. Estos componentes facilitan la creación de las aplicaciones móviles desde cero teniendo la mayor parte de los elementos ya creados para ser integrados con la parte especifica de la aplicación.</li><br />
<br />
<br />
<li>El <b>uso de bases de datos locales</b>. Aunque en <span class="caps">HTML</span> 5 se pueden usar un almacenamiento local, hay que reconocer que estas tecnologías están más avanzadas en los sistemas nativos por lo que las aplicaciones podrán hacer uso de ellas para sus funcionalidades.</li><br />
<br />
<br />
<li><b>Notificaciones push</b>. Una fuerte razón que no puede ser implementada en una web móvil y justifica el uso de aplicaciones por parte de las empresas de internet para ofrecer parte de sus servicios de su web a través de una aplicación que proporcione avisos al usuario, cosa imposible desde la web.</li><br />
<br />
<br />
<br />
<li><b>Geolocalización</b>. Hemos visto algunos ejemplos de geolocalización a través de HTML5, pero que no acaban de alcanzar la misma experiencia de usuario que una aplicación móvil. Podemos interactuar con el mapa o con las funcionalidades asociadas a la localización del usuario, pero no ir mucho más allá.</li><br />
<br />
<br />
<br />
<br />
<li><b>Soporte para una cámara o de vídeo</b>. Las funciones multimedia están perfectamente acopladas a las aplicaciones nativa donde se pueden añadir funcionalidades especificas a nuestra aplicación. Complicado de realizar en una web móvil, a pesar de los esfuerzo de estandarizar como los servicios de voz y de envió de archivos en HTML5 desde el móvil.</li><br />
<br />
<br />
<br />
<h2>La web sigue siendo el negocio principal: necesita ser accesible desde cualquier dispositivo</h2>Aunque en las <b>aplicaciones móviles</b> no podamos usar estas funcionalidades, pero <b>se pueden hacer sorprendentes cosas con HTML5, CSS3 y JavaScript</b>. Tres tecnologías que como desarrolladores web no deberíamos perder el tiempo en ponernos a manejar con soltura. En unos meses veremos como maduran los framework móviles que vienen de la web como pueden ser <b>Dojo Mobile</b> o <b>jQuery Mobile</b> para impulsar desarrollos específicos de páginas móviles que tengan unas funcionalidades cercanas a sus web de escritorio. Incluso muchos framework en la cara del servidor nos permiten adaptar el contenido según el dispositivo que se conecte y sus posibilidades técnicas: pantalla táctil, reproducción de vídeos o resolución de pantalla. Un punto muy importante para ser accesible con nuestra web.<br />
La web sigue siendo el negocio principal de muchas empresas de internet. Al final de todo el mundo es donde nos movemos en internet, a pesar de que existan cientos de aplicaciones. Es una necesidad imperiosa que las webs se ven correctamente en cada dispositivo. <b>El desarrollo web no ha muerto por la inclusión de las aplicaciones móviles</b>, sino que se ve afectado por un proceso de cambio hacía la adopción de tecnologías nuevas como HTML5 con la que podemos conseguir que una web se adapte a casi cualquier dispositivo como si fuera una aplicación nativa. Tenemos que tener en cuenta que muchas aplicaciones nativas no son tanto ya que son un mix de tecnologías que soportan por debajo <span class="caps">HTML</span> 5 para visualizar muchas de las pantallas y crear de forma ágil nuevas funcionalidades.<br />
<br />
<br />
Fuente: www.genbetadev.com </div>Diego Ocampohttp://www.blogger.com/profile/16182346507304485510noreply@blogger.com1tag:blogger.com,1999:blog-8855174728572889565.post-39573409957671783352011-03-16T15:23:00.000-03:002011-03-16T15:23:17.247-03:00Mi experiencia armando el ambiente para .NET Mobile<div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Arial; font-size: 12px;"><strong>Estoy escribiendo sobre este tema porque es en general con el primer problema que se enfrentan quienes quieren comenzar a desarrollar una aplicacion para windows mobile. </strong></div><div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Arial; font-size: 12px;"><strong><br />
</strong></div><div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Arial; font-size: 12px;"><strong>La documentacion que sirve como guia es la siguiente:</strong></div><ul style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Arial; font-size: 12px;"><li>Requerimientos: <a href="http://wiki.gxtechnical.com/commwiki/servlet/hwiki?.NET+Mobile+Generator+Requirements">http://wiki.gxtechnical.com/commwiki/servlet/hwiki?.NET+Mobile+Generator+Requirements</a>, </li>
<li>Manual: <a href="http://wiki.gxtechnical.com/commwiki/servlet/hwiki?.NET+Mobile+Manual">http://wiki.gxtechnical.com/commwiki/servlet/hwiki?.NET+Mobile+Manual</a>, </li>
</ul><div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Arial; font-size: 12px;"><br />
</div><div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Arial; font-size: 12px;">Si bien no es trivial armar el ambiente, luego es analogo a un modelo genexus .Net win.</div><div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Arial; font-size: 12px;">En resumen lo que precisas para un <strong>modelo en XEV1</strong>, en Gx 90 cambia un poco, es:</div><div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Arial; font-size: 12px;"><strong>En la maquina desarrollo: </strong></div><ul style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Arial; font-size: 12px;"><li>Si esta con XP ActiveSync >>> <a href="http://archivos.artech.com.uy/Mobile/RequerimientosMobile/ActiveSync4.5.msi">http://archivos.artech.com.uy/Mobile/RequerimientosMobile/ActiveSync4.5.msi</a></li>
<li>Si esta con Win 7 precisas el window mobile device center que ya deberia venir con el sistema operativo </li>
</ul><ul style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Arial; font-size: 12px;"><li>Es preferible que tener instalado visual studio 2008, chequear si estan instalados los componentes mobile</li>
</ul><ul style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Arial; font-size: 12px;"><li>Sdks, estos instalan los emuladores, es preferible en mi experiencia trabajar con emuladores ya que es mucho mas rapido, la lista completa de los que instala se puede visualizar desde "<program files=""> \Microsoft Device Emulator\1.0\dvcemumanager.exe" . De ahi mismo se puede poner el pocket como cradle (conectado) para simular que esta en la red y trabajar por ejemplo con dataviews.<ul><li><a href="http://archivos.artech.com.uy/Mobile/RequerimientosMobile/Windows_Mobile_5.0_Pocket_PC_SDK.msi">http://archivos.artech.com.uy/Mobile/RequerimientosMobile/Windows_Mobile_5.0_Pocket_PC_SDK.msi</a></li>
<li><a href="http://archivos.artech.com.uy/Mobile/RequerimientosMobile/Windows_Mobile_6_Professional_SDK_Refresh.msi">http://archivos.artech.com.uy/Mobile/RequerimientosMobile/Windows_Mobile_6_Professional_SDK_Refresh.msi</a></li>
<li><a href="http://archivos.artech.com.uy/Mobile/RequerimientosMobile/WindowsMobile6.5.rar">http://archivos.artech.com.uy/Mobile/RequerimientosMobile/WindowsMobile6.5.rar</a></li>
</ul></program></li>
<li>SQLCE >> <a href="http://archivos.artech.com.uy/Mobile/RequerimientosMobile/SqlMobile30DeviceSdkENU.msi">http://archivos.artech.com.uy/Mobile/RequerimientosMobile/SqlMobile30DeviceSdkENU.msi</a></li>
<li>Frameworks 3.5<ul><li>Compact Framework 3.5 <a href="http://archivos.artech.com.uy/Mobile/RequerimientosMobile/NetCFSetupv35.msi">http://archivos.artech.com.uy/Mobile/RequerimientosMobile/NetCFSetupv35.msi</a></li>
<li>Framework 3.5 SP1: <a href="http://archivos.artech.com.uy/Mobile/RequerimientosMobile/dotnetfx35setupSP1.exe">http://archivos.artech.com.uy/Mobile/RequerimientosMobile/dotnetfx35setupSP1.exe</a></li>
</ul></li>
</ul><div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Arial; font-size: 12px;"><strong>En el pocket o emulador:</strong></div><ul style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Arial; font-size: 12px;"><li>Bases de datos (SQLCE)<ul><li>SQLServerCompact 3.5 SP2 >> <a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=e497988a-c93a-404c-b161-3a0b323dce24">http://www.microsoft.com/downloads/en/details.aspx?FamilyID=e497988a-c93a-404c-b161-3a0b323dce24</a></li>
</ul></li>
</ul><div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Arial; font-size: 12px;"><br />
</div><div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Arial; font-size: 12px;">Para instalar manualmente en el pocket:</div><ul style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Arial; font-size: 12px;"><li><a href="http://archivos.artech.com.uy/Mobile/RequerimientosMobile/Sqlce3.5sp2.0_cabs+Framework3.5.rar">http://archivos.artech.com.uy/Mobile/RequerimientosMobile/Sqlce3.5sp2.0_cabs+Framework3.5.rar</a></li>
</ul><div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Arial; font-size: 12px;">Esto se instala directamente en el pocket o emulador y NO se debe reiniciar hasta tener instalado el ultimo cab por mas que solicite para hacerlo. Luego de tener instalado todo, lo mejor es poner la propiedade "Deploy required sdk" en NO ( esto hace que el F5 sea mas rapido ademas de prevenir algun problmea con los frameworks instalados).</div><div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Arial; font-size: 12px;">Un problema que puede manifestarse, es que las reorganizaciones, si bien se ejecutan correctamente, no se borre el resumereorg lo que implica que intente ejecutar siempre la misma reorg al dar F5. En ese caso se debe ir a Tools> advanced > mark database as reorganized y no ocurrira dicho comportamiento.</div><div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Arial; font-size: 12px;"><br />
</div><div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Verdana, Arial; font-size: 12px;">Espero les sirva de ayuda.</div>Diego Ocampohttp://www.blogger.com/profile/16182346507304485510noreply@blogger.com0tag:blogger.com,1999:blog-8855174728572889565.post-40579048584733785022010-10-14T00:26:00.001-02:002010-10-14T00:28:00.022-02:00Profiling Mobile ApplicationsEn las aplicaciones generadas con GeneXus tambien podemos realizar analisis de rendimiento. Para ello hay varias herramientas disponibles, yo quiero mostrarles una herramienta gratuita que encontre y creo puede ser de utilidad a muchos.<br />
<br />
Dejo una serie de pasos para quienes quieran hacer alguna prueba. <br />
<br />
<span lang="ES-UY">1. Instalar EQATECProfiler.NET Esta es una herramienta ghratuita que puede ser descargada desde </span><a href="http://www.eqatec.com/tools/profiler"><span lang="ES-UY">http://www.eqatec.com/tools/profiler</span></a><br />
<br />
<span lang="ES-UY"></span><br />
<span lang="ES-UY"></span><br />
<span lang="ES-UY"></span><br />
<span lang="ES-UY"></span><br />
<span lang="ES-UY">2. Abrir el directorio bin de la aplicación mobile desde EQATECProfiler. Es aquí donde se encuentran las dlls generadas de la aplicación.</span><span lang="ES-UY"> </span><span lang="ES-UY"> </span><br />
<br />
<span lang="ES-UY">3. EQATECProfiler.NET tiene una seccion de Build que toma como entrada el directorio bin del modelo, y lo que hacer es crear un directorio bin-profiler hermano que tiene todas las dlls a las que le “inyecta” codigo de profiler (</span><span lang="ES-UY" style="font-family: Wingdings;"></span><span lang="ES-UY"> Ver imagen</span>).<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSLMSM1dAxErCvfjhEF9d3Ygzk5LifC8QfTc6XIN3Ww2lF80YJDsqnY_76dmNSBMqiln7rR8nY9FRdiiDCKFPzvBNS_D-UCiGJr7WQYlAJqcb6wThVwXwLofICrECR4UcQ_wQ4ooXguwTa/s1600/paso5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br />
</a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhajh1ivFYSSvqEbcJRby47LQXH5a95ZImOmt6ZKu9vA5V53wjt2n09tiE-SSaQxZQxgQJcnLgD7l8P4m_AA4pp9dqvgqQvp2xs_LHi2E7Bit16aqwpaIYDOZCsfRvP0lwcF452mO5pd_PP/s1600/pas3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="311" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhajh1ivFYSSvqEbcJRby47LQXH5a95ZImOmt6ZKu9vA5V53wjt2n09tiE-SSaQxZQxgQJcnLgD7l8P4m_AA4pp9dqvgqQvp2xs_LHi2E7Bit16aqwpaIYDOZCsfRvP0lwcF452mO5pd_PP/s400/pas3.png" width="400" /></a></div><br />
4. <span lang="ES-UY">Copiar al pocket pc el directorio bin-profiler y correr la aplacion. Cuando termino, queda en el \Temp\ un .log que lo sacas del pocket y lo abris con este profiler en la seccion View y ahí ves qué metodos se llamaron y cuanto demoro cada uno.</span><br />
Otra opcion <span lang="ES-UY">es abrir directamente el archivo extesion .eqlog que ya te abre todo directamente con el profiler.</span><br />
<span lang="ES-UY"> </span><span lang="ES-UY"> </span><br />
<span lang="ES-UY">5. Analisis de resultados </span><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSLMSM1dAxErCvfjhEF9d3Ygzk5LifC8QfTc6XIN3Ww2lF80YJDsqnY_76dmNSBMqiln7rR8nY9FRdiiDCKFPzvBNS_D-UCiGJr7WQYlAJqcb6wThVwXwLofICrECR4UcQ_wQ4ooXguwTa/s1600/paso5.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="248" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSLMSM1dAxErCvfjhEF9d3Ygzk5LifC8QfTc6XIN3Ww2lF80YJDsqnY_76dmNSBMqiln7rR8nY9FRdiiDCKFPzvBNS_D-UCiGJr7WQYlAJqcb6wThVwXwLofICrECR4UcQ_wQ4ooXguwTa/s400/paso5.png" width="400" /></a></div><div style="text-align: center;"></div><br />
<span lang="ES-UY">Espero que les sirva !! </span>Diego Ocampohttp://www.blogger.com/profile/16182346507304485510noreply@blogger.com0tag:blogger.com,1999:blog-8855174728572889565.post-53927941110001105712010-10-09T14:17:00.000-02:002010-10-09T14:17:31.188-02:00Cómo crear un Data View para conectarse a SQL Server desde un PocketPCEn un post anterior mencionaba las diferentes formas de sincronizacion que existen, hoy voy a mostrar un ejemplo con Data Views.<br />
<br />
<br />
Empezaremos por crear una base de datos a la cual nos conectaremos luego con Genexus. La base de datos se llamara APersona.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7sE_HML6BD9Jkf9TQxhcfoENmK7rxMOeTW4BW1I3XCHPk25SFhJzJSnz2te6vt3W3ruTEWYjh7PmAJrWRixtdxwZhPVmP1GeFEUuY1FLhPGAtOmF9N27ls29aFufm7egEiNQIpzaMQzgc/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7sE_HML6BD9Jkf9TQxhcfoENmK7rxMOeTW4BW1I3XCHPk25SFhJzJSnz2te6vt3W3ruTEWYjh7PmAJrWRixtdxwZhPVmP1GeFEUuY1FLhPGAtOmF9N27ls29aFufm7egEiNQIpzaMQzgc/s320/1.png" /></a></div><br />
Les dejo el script para la creacion de la tabla y sentencias para cargar algunos datos necesarios para probar nuestro ejemplo<br />
<br />
<div class="MsoNormal" style="font-family: Verdana,Arial; font-size: 12px; line-height: normal; margin-bottom: 0pt;"><span class="Apple-style-span" style="color: blue; font-family: 'Courier New'; font-size: small;"><span class="Apple-style-span" style="font-size: 13px;"><br />
</span></span></div><div class="MsoNormal" style="font-family: Verdana,Arial; font-size: 12px; line-height: normal; margin-bottom: 0pt;"><span class="Apple-style-span" style="color: blue; font-family: 'Courier New'; font-size: small;"><span class="Apple-style-span" style="font-size: 13px;">--Script creacion tabla </span></span></div><div class="MsoNormal" style="font-family: Verdana,Arial; font-size: 12px; line-height: normal; margin-bottom: 0pt;"><span class="Apple-style-span" style="color: blue; font-family: 'Courier New'; font-size: small;"><span class="Apple-style-span" style="font-size: 13px;"></span></span><span style="color: blue; font-family: 'Courier New';"><span class="Apple-style-span" style="font-size: x-small;">USE</span></span><span style="font-family: 'Courier New';"><span class="Apple-style-span" style="font-size: x-small;"> </span><a href="http://wiki.gxtechnical.com/commwiki/servlet/APersona" target="_blank"><span class="Apple-style-span" style="font-size: x-small;">APersona</span></a><span class="Apple-style-span" style="font-size: x-small;"><o:p></o:p></span></span></div><div class="MsoNormal" style="font-family: Verdana,Arial; line-height: normal; margin-bottom: 0pt;"><span style="font-family: 'Courier New';"><span class="Apple-style-span" style="font-size: x-small;">GO<o:p></o:p></span></span></div><div class="MsoNormal" style="font-family: Verdana,Arial; line-height: normal; margin-bottom: 0pt;"><span style="color: green; font-family: 'Courier New';"><span class="Apple-style-span" style="font-size: x-small;">/****** Object:</span><span class="Apple-style-span" style="font-size: x-small;"> </span><span class="Apple-style-span" style="font-size: x-small;">Table </span><a href="http://wiki.gxtechnical.com/commwiki/servlet/dbo" target="_blank"><span class="Apple-style-span" style="font-size: x-small;">dbo</span></a><span class="Apple-style-span" style="font-size: x-small;">.</span><a href="http://wiki.gxtechnical.com/commwiki/servlet/Persona" target="_blank"><span class="Apple-style-span" style="font-size: x-small;">Persona</span></a><span class="Apple-style-span" style="font-size: x-small;"> </span><span class="Apple-style-span" style="font-size: x-small;">Script Date: 01/20/2010 15:14:38 ******/<o:p></o:p></span></span></div><div class="MsoNormal" style="font-family: Verdana,Arial; line-height: normal; margin-bottom: 0pt;"><span style="color: blue; font-family: 'Courier New';"><span class="Apple-style-span" style="font-size: x-small;">SET</span></span><span style="font-family: 'Courier New';"><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: blue;"><span class="Apple-style-span" style="font-size: x-small;">ANSI_NULLS</span></span><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: blue;"><span class="Apple-style-span" style="font-size: x-small;">ON<o:p></o:p></span></span></span></div><div class="MsoNormal" style="font-family: Verdana,Arial; line-height: normal; margin-bottom: 0pt;"><span style="font-family: 'Courier New';"><span class="Apple-style-span" style="font-size: x-small;">GO<o:p></o:p></span></span></div><div class="MsoNormal" style="font-family: Verdana,Arial; line-height: normal; margin-bottom: 0pt;"><span style="color: blue; font-family: 'Courier New';"><span class="Apple-style-span" style="font-size: x-small;">SET</span></span><span style="font-family: 'Courier New';"><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: blue;"><span class="Apple-style-span" style="font-size: x-small;">QUOTED_IDENTIFIER</span></span><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: blue;"><span class="Apple-style-span" style="font-size: x-small;">ON<o:p></o:p></span></span></span></div><div class="MsoNormal" style="font-family: Verdana,Arial; line-height: normal; margin-bottom: 0pt;"><span style="font-family: 'Courier New';"><span class="Apple-style-span" style="font-size: x-small;">GO<o:p></o:p></span></span></div><div class="MsoNormal" style="font-family: Verdana,Arial; line-height: normal; margin-bottom: 0pt;"><span style="color: blue; font-family: 'Courier New';"><span class="Apple-style-span" style="font-size: x-small;">SET</span></span><span style="font-family: 'Courier New';"><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: blue;"><span class="Apple-style-span" style="font-size: x-small;">ANSI_PADDING</span></span><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: blue;"><span class="Apple-style-span" style="font-size: x-small;">ON<o:p></o:p></span></span></span></div><div class="MsoNormal" style="font-family: Verdana,Arial; line-height: normal; margin-bottom: 0pt;"><span style="font-family: 'Courier New';"><span class="Apple-style-span" style="font-size: x-small;">GO<o:p></o:p></span></span></div><div class="MsoNormal" style="font-family: Verdana,Arial; line-height: normal; margin-bottom: 0pt;"><span style="color: blue; font-family: 'Courier New';"><span class="Apple-style-span" style="font-size: x-small;">CREATE</span></span><span style="font-family: 'Courier New';"><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: blue;"><span class="Apple-style-span" style="font-size: x-small;">TABLE</span></span><span class="Apple-style-span" style="font-size: x-small;"> </span><a href="http://wiki.gxtechnical.com/commwiki/servlet/dbo" target="_blank"><span class="Apple-style-span" style="font-size: x-small;">dbo</span></a><span style="color: grey;"><span class="Apple-style-span" style="font-size: x-small;">.</span></span><a href="http://wiki.gxtechnical.com/commwiki/servlet/Persona" target="_blank"><span class="Apple-style-span" style="font-size: x-small;">Persona</span></a><span style="color: grey;"><span class="Apple-style-span" style="font-size: x-small;">(<o:p></o:p></span></span></span></div><div class="MsoNormal" style="font-family: Verdana,Arial; line-height: normal; margin-bottom: 0pt;"><span style="font-family: 'Courier New';"><span class="Apple-style-span" style="font-size: x-small;"> </span><a href="http://wiki.gxtechnical.com/commwiki/servlet/IdPersona" target="_blank"><span class="Apple-style-span" style="font-size: x-small;">IdPersona</span></a><span class="Apple-style-span" style="font-size: x-small;"> </span><a href="http://wiki.gxtechnical.com/commwiki/servlet/numeric" target="_blank"><span class="Apple-style-span" style="font-size: x-small;">numeric</span></a><span style="color: grey;"><span class="Apple-style-span" style="font-size: x-small;">(</span></span><span class="Apple-style-span" style="font-size: x-small;">18</span><span style="color: grey;"><span class="Apple-style-span" style="font-size: x-small;">,</span></span><span class="Apple-style-span" style="font-size: x-small;"> 0</span><span style="color: grey;"><span class="Apple-style-span" style="font-size: x-small;">)</span></span><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: grey;"><span class="Apple-style-span" style="font-size: x-small;">NOT</span></span><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: grey;"><span class="Apple-style-span" style="font-size: x-small;">NULL,<o:p></o:p></span></span></span></div><div class="MsoNormal" style="font-family: Verdana,Arial; line-height: normal; margin-bottom: 0pt;"><span style="font-family: 'Courier New';"><span class="Apple-style-span" style="font-size: x-small;"> </span><a href="http://wiki.gxtechnical.com/commwiki/servlet/NombrePersona" target="_blank"><span class="Apple-style-span" style="font-size: x-small;">NombrePersona</span></a><span class="Apple-style-span" style="font-size: x-small;"> </span><a href="http://wiki.gxtechnical.com/commwiki/servlet/char" target="_blank"><span class="Apple-style-span" style="font-size: x-small;">char</span></a><span style="color: grey;"><span class="Apple-style-span" style="font-size: x-small;">(</span></span><span class="Apple-style-span" style="font-size: x-small;">20</span><span style="color: grey;"><span class="Apple-style-span" style="font-size: x-small;">)</span></span><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: grey;"><span class="Apple-style-span" style="font-size: x-small;">NOT</span></span><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: grey;"><span class="Apple-style-span" style="font-size: x-small;">NULL,<o:p></o:p></span></span></span></div><div class="MsoNormal" style="font-family: Verdana,Arial; line-height: normal; margin-bottom: 0pt;"><span style="font-family: 'Courier New';"><span class="Apple-style-span" style="font-size: x-small;"> </span><a href="http://wiki.gxtechnical.com/commwiki/servlet/Direccion" target="_blank"><span class="Apple-style-span" style="font-size: x-small;">Direccion</span></a><span class="Apple-style-span" style="font-size: x-small;"> </span><a href="http://wiki.gxtechnical.com/commwiki/servlet/char" target="_blank"><span class="Apple-style-span" style="font-size: x-small;">char</span></a><span style="color: grey;"><span class="Apple-style-span" style="font-size: x-small;">(</span></span><span class="Apple-style-span" style="font-size: x-small;">30</span><span style="color: grey;"><span class="Apple-style-span" style="font-size: x-small;">)</span></span><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: grey;"><span class="Apple-style-span" style="font-size: x-small;">NOT</span></span><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: grey;"><span class="Apple-style-span" style="font-size: x-small;">NULL,<o:p></o:p></span></span></span></div><div class="MsoNormal" style="font-family: Verdana,Arial; line-height: normal; margin-bottom: 0pt;"><span style="font-family: 'Courier New';"><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: blue;"><span class="Apple-style-span" style="font-size: x-small;">CONSTRAINT</span></span><span class="Apple-style-span" style="font-size: x-small;"> </span><a href="http://wiki.gxtechnical.com/commwiki/servlet/PK_Persona" target="_blank"><span class="Apple-style-span" style="font-size: x-small;">PK_Persona</span></a><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: blue;"><span class="Apple-style-span" style="font-size: x-small;">PRIMARY</span></span><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: blue;"><span class="Apple-style-span" style="font-size: x-small;">KEY</span></span><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: blue;"><span class="Apple-style-span" style="font-size: x-small;">CLUSTERED</span></span><span class="Apple-style-span" style="font-size: x-small;"><o:p></o:p></span></span></div><div class="MsoNormal" style="font-family: Verdana,Arial; line-height: normal; margin-bottom: 0pt;"><span style="color: grey; font-family: 'Courier New';"><span class="Apple-style-span" style="font-size: x-small;">(<o:p></o:p></span></span></div><div class="MsoNormal" style="font-family: Verdana,Arial; line-height: normal; margin-bottom: 0pt;"><span style="font-family: 'Courier New';"><span class="Apple-style-span" style="font-size: x-small;"> </span><a href="http://wiki.gxtechnical.com/commwiki/servlet/IdPersona" target="_blank"><span class="Apple-style-span" style="font-size: x-small;">IdPersona</span></a><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: blue;"><span class="Apple-style-span" style="font-size: x-small;">ASC<o:p></o:p></span></span></span></div><div class="MsoNormal" style="font-family: Verdana,Arial; line-height: normal; margin-bottom: 0pt;"><span style="color: grey; font-family: 'Courier New';"><span class="Apple-style-span" style="font-size: x-small;">)</span></span><span style="color: blue; font-family: 'Courier New';"><span class="Apple-style-span" style="font-size: x-small;">WITH</span></span><span style="font-family: 'Courier New';"><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: grey;"><span class="Apple-style-span" style="font-size: x-small;">(</span></span><span style="color: blue;"><span class="Apple-style-span" style="font-size: x-small;">PAD_INDEX</span></span><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: grey;"><span class="Apple-style-span" style="font-size: x-small;">=</span></span><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: blue;"><span class="Apple-style-span" style="font-size: x-small;">OFF</span></span><span style="color: grey;"><span class="Apple-style-span" style="font-size: x-small;">,</span></span><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: blue;"><span class="Apple-style-span" style="font-size: x-small;">STATISTICS_NORECOMPUTE</span></span><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: grey;"><span class="Apple-style-span" style="font-size: x-small;">=</span></span><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: blue;"><span class="Apple-style-span" style="font-size: x-small;">OFF</span></span><span style="color: grey;"><span class="Apple-style-span" style="font-size: x-small;">,</span></span><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: blue;"><span class="Apple-style-span" style="font-size: x-small;">IGNORE_DUP_KEY</span></span><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: grey;"><span class="Apple-style-span" style="font-size: x-small;">=</span></span><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: blue;"><span class="Apple-style-span" style="font-size: x-small;">OFF</span></span><span style="color: grey;"><span class="Apple-style-span" style="font-size: x-small;">,</span></span><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: blue;"><span class="Apple-style-span" style="font-size: x-small;">ALLOW_ROW_LOCKS</span></span><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: grey;"><span class="Apple-style-span" style="font-size: x-small;">=</span></span><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: blue;"><span class="Apple-style-span" style="font-size: x-small;">ON</span></span><span style="color: grey;"><span class="Apple-style-span" style="font-size: x-small;">,</span></span><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: blue;"><span class="Apple-style-span" style="font-size: x-small;">ALLOW_PAGE_LOCKS</span></span><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: grey;"><span class="Apple-style-span" style="font-size: x-small;">=</span></span><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: blue;"><span class="Apple-style-span" style="font-size: x-small;">ON</span></span><span style="color: grey;"><span class="Apple-style-span" style="font-size: x-small;">)</span></span><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: blue;"><span class="Apple-style-span" style="font-size: x-small;">ON</span></span><span class="Apple-style-span" style="font-size: x-small;"> </span><a href="http://wiki.gxtechnical.com/commwiki/servlet/PRIMARY" target="_blank"><span class="Apple-style-span" style="font-size: x-small;">PRIMARY</span></a><span class="Apple-style-span" style="font-size: x-small;"><o:p></o:p></span></span></div><div class="MsoNormal" style="font-family: Verdana,Arial; line-height: normal; margin-bottom: 0pt;"><span style="color: grey; font-family: 'Courier New';"><span class="Apple-style-span" style="font-size: x-small;">)</span></span><span style="font-family: 'Courier New';"><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: blue;"><span class="Apple-style-span" style="font-size: x-small;">ON</span></span><span class="Apple-style-span" style="font-size: x-small;"> </span><a href="http://wiki.gxtechnical.com/commwiki/servlet/PRIMARY" target="_blank"><span class="Apple-style-span" style="font-size: x-small;">PRIMARY</span></a><span class="Apple-style-span" style="font-size: x-small;"><o:p></o:p></span></span></div><div class="MsoNormal" style="font-family: Verdana,Arial; line-height: normal; margin-bottom: 0pt;"><br />
</div><div class="MsoNormal" style="font-family: Verdana,Arial; line-height: normal; margin-bottom: 0pt;"><span style="font-family: 'Courier New';"><span class="Apple-style-span" style="font-size: x-small;">GO<o:p></o:p></span></span></div><div class="MsoNormal" style="font-family: Verdana,Arial; line-height: normal; margin-bottom: 0pt;"><span style="color: blue; font-family: 'Courier New';"><span class="Apple-style-span" style="font-size: x-small;">SET</span></span><span style="font-family: 'Courier New';"><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: blue;"><span class="Apple-style-span" style="font-size: x-small;">ANSI_PADDING</span></span><span class="Apple-style-span" style="font-size: x-small;"> </span><span style="color: blue;"><span class="Apple-style-span" style="font-size: x-small;">OFF</span></span></span></div><br />
<br />
<span class="Apple-style-span" style="color: blue; font-family: 'Courier New'; font-size: 13px;">--Ingreso de datos</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New';"></span><span class="Apple-style-span" style="font-size: x-small;"><span class="Apple-style-span" style="color: blue;">INSERT INTO Persona SELECT 1 , 'PruebaDataView' , 'PruebaDataView'</span></span><br />
<span class="Apple-style-span" style="font-size: x-small;"><span class="Apple-style-span" style="color: blue;">INSERT INTO Persona SELECT 2 , 'DataView' , 'DataView'</span></span><br />
<br />
<br />
<br />
Una vez creada la KB estamos a cuatro pasos de conectarnos a la base de datos con nuestro Pocket PC.<br />
<br />
1. Crear una KB y seleccionar el Generador .Net Mobile<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVRNd4EsfwzBhn9I-3k15PPLPnk5pNKcbjL2DgCachRdmXZ0-hehyphenhyphencZcwJk2FupnT1rp-Yvgveqgg4umCtzK5IGqaw8sh5ZCuX9YQQ89ksdYWGlz-wKUV2ug-IJLf475qqLOIP0tRDrpv9/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVRNd4EsfwzBhn9I-3k15PPLPnk5pNKcbjL2DgCachRdmXZ0-hehyphenhyphencZcwJk2FupnT1rp-Yvgveqgg4umCtzK5IGqaw8sh5ZCuX9YQQ89ksdYWGlz-wKUV2ug-IJLf475qqLOIP0tRDrpv9/s320/2.png" /></a></div><br />
<br />
<div><br />
</div><div> 2. Crear el Data Store mediante el cual nos conectaremos a nuestra base de datos y configurarlo correctamente, este es el paso en el que se debe tener mas cuidado</div><div><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQ9PieWJEt2_fbJn7TnnXLZjwC6DZ1P-p5YfOrTvclWeBBnF2iIBgbfqcLjC8Fh2egOm5n3AtElO-7mZoefKt3hrcQC0pRKEEgVJHKTiQ0RE0-dXCy6_bUchvUmiCV11XRhXRynoUWXPNz/s1600/3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQ9PieWJEt2_fbJn7TnnXLZjwC6DZ1P-p5YfOrTvclWeBBnF2iIBgbfqcLjC8Fh2egOm5n3AtElO-7mZoefKt3hrcQC0pRKEEgVJHKTiQ0RE0-dXCy6_bUchvUmiCV11XRhXRynoUWXPNz/s320/3.png" /></a></div><div><br />
</div><div><br />
</div><div>La configuracion del Data Store deberia quedar asi </div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPAgju0MTE4Mi-RAP3EQotGV8id7eboECJI6uRA5GwVIvUJEQgZWvUo5p7dsX9NosXAa-0ae4UBaqmUa8KdlJw7SAYO1ZQceKax7LkCa1pGqlc3ggYXltYM_Jf3ScS5BQ1Hde7ru1Z56qP/s1600/4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPAgju0MTE4Mi-RAP3EQotGV8id7eboECJI6uRA5GwVIvUJEQgZWvUo5p7dsX9NosXAa-0ae4UBaqmUa8KdlJw7SAYO1ZQceKax7LkCa1pGqlc3ggYXltYM_Jf3ScS5BQ1Hde7ru1Z56qP/s320/4.png" /></a></div><div><br />
</div><div>Notar que se especifica el Puerto por el cual se va a acceder ("Server TCP/IP port") y la propiedad "Use Trusted Connection" esta en no.</div><div><br />
</div><div>Para quienes tengan la versión Express del SQL deben habilitar el protocolo TCP/IP desde el SQL Server Configuration Manager y en las propiedades especificar el TCP Port (puerto a utilizar: 1433)</div><div><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPErn8DtiFootgnJ6W23aARhZcChHEowqJi9RoS1EWbZ2-P8Dm2_epdb2s-fqO_8JY1ItDoEhKAxWTU5d0INJIOPjGAoi4mDvYUXhs6bQenhSc0xYz1B7c0iYLRCDy4LrE-nII3jvO4oMV/s1600/5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPErn8DtiFootgnJ6W23aARhZcChHEowqJi9RoS1EWbZ2-P8Dm2_epdb2s-fqO_8JY1ItDoEhKAxWTU5d0INJIOPjGAoi4mDvYUXhs6bQenhSc0xYz1B7c0iYLRCDy4LrE-nII3jvO4oMV/s320/5.png" /></a></div><div><br />
</div><div><br />
</div><div> 3. Ahora si ya tenemos todo pronto para crear el Data View. Para esto utilizaremos el Database Reverse Engineering. </div><div>En la configuración del Data View solo debemos tener en cuenta dos cosas: </div><div><ol><ol><li>En Platforms especificamos que es SQL Server CE y no SQL Server. Esta confusión es común y hará que nuestro Data View no funcione. </li>
<li>Property "Data Store" lo apuntamos al Data Store que creamos anteriormente.</li>
</ol></ol></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhM6tpOdS_J-6KtZwQTrrnp6qQdhQVHe7HCNjBAciYr8-XkhiXi3F6ydL8h7N0gMDojnup5kznex5YKG6k1OEU8xWqF_nCRlivP8CnVpctbnQK7j2OsxbdVGD-vM9MhEltMrnemJT55Qcd/s1600/6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhM6tpOdS_J-6KtZwQTrrnp6qQdhQVHe7HCNjBAciYr8-XkhiXi3F6ydL8h7N0gMDojnup5kznex5YKG6k1OEU8xWqF_nCRlivP8CnVpctbnQK7j2OsxbdVGD-vM9MhEltMrnemJT55Qcd/s320/6.png" /></a></div><div><br />
</div><div><br />
</div><div> 4. Por ultimo, solo nos queda probar nuestra aplicacion, entonces indicamos que la Transaccion Persona sera nuestro Startup Object y damos F5. </div><div>Si ingresamos el Id Persona = 1 y todo quedo bien </div><div><br />
</div><div><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_Na_eb1qaiLeOYL_64zsdpw89_Lr8RlvkyxDdgW7JE6fpjvSOARkFsCsKmjhYZ3FxY1-5uNiXJ0WeaD8bXT2X8AEvfAO7662c_sLaPdnlSn5D1dG8MNeg1AFpmtzsXC8u4HB1Rw1kKW1e/s1600/7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_Na_eb1qaiLeOYL_64zsdpw89_Lr8RlvkyxDdgW7JE6fpjvSOARkFsCsKmjhYZ3FxY1-5uNiXJ0WeaD8bXT2X8AEvfAO7662c_sLaPdnlSn5D1dG8MNeg1AFpmtzsXC8u4HB1Rw1kKW1e/s320/7.png" /></a></div><div class="separator" style="clear: both; text-align: center;"><br />
</div><div><br />
</div>Diego Ocampohttp://www.blogger.com/profile/16182346507304485510noreply@blogger.com1tag:blogger.com,1999:blog-8855174728572889565.post-82142307449302236312010-07-16T14:30:00.001-03:002010-07-16T15:57:56.991-03:00Como extender la descripcion de un combo mas alla de su ancho.Un problema con el que se pueden haber encontrado cuando diseñan una pantalla para un dispositivo movil es que el espacio para agregar componentes nunca es suficiente.<br />
<br />
En particular en los combo box la descripcion de los combos no se extiende mas alla del ancho del combo y corta las descripciones, por lo tanto si queremos que se vea todo el contenido que agregamos al combo este debe ser tan ancho como la descripcion mas larga que contiene.<br />
<br />
Lo que se busca es tener un combo mas pequeño en pantalla que optimice el espacio y mejore el diseño del work panel en general y no perder por esto el contenido o parte del contenido del combo.<br />
<br />
En la imgen se puede ver lo que intento describir, la imagen de la derecha en realidad es de un combo box web donde el funcionamiento es de la manera que queremos lograr que funcione en el generador mobile.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgg4u9saXdzN4tYvMgdRb5xu6yrSEvFPmggDimgqR2RedJ2Nw_wr_06jxc3ov0eXP2m0iy8wQduCvneDDOJ19gvELxfb-mlR08sPC7pchMZ37F8ZhZBh5CQtMa_HKpzYEjTWTFBvmo3CtTz/s1600/comparacionCombos.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" rw="true" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgg4u9saXdzN4tYvMgdRb5xu6yrSEvFPmggDimgqR2RedJ2Nw_wr_06jxc3ov0eXP2m0iy8wQduCvneDDOJ19gvELxfb-mlR08sPC7pchMZ37F8ZhZBh5CQtMa_HKpzYEjTWTFBvmo3CtTz/s320/comparacionCombos.png" /></a></div><div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"><br />
</div><div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"><br />
</div><div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"><br />
</div><div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;">La buena noticia es que hay una forma de cambiar el ancho de la descripcion sin necesidad de agrandar el combo. La forma mas sencilla de lograr esto seria cambiando la propiedad DropDownWidth del combobox, pero esta funcionalidad no esta presente en .net compact framework.</div><div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"><br />
</div>Entonces nosotros lo vamos a hacer usando codigo C# directamente en el workpanel donde queremos este comportamiento.<br />
<br />
El primer paso es crear un work panel y agregar una variable "&micombo" con propiedad ControlType = "ComboBox" y un boton con el evento enter asociado (el evento puede ser cualquiera).<br />
<br />
Event Enter<br />
<br />
// Agrego descripciones al combo<br />
&micombo.AddItem("cuatro", "este es mucho mas largo")<br />
&micombo.AddItem("cinco", "y este es mucho pero mucho mas largo")<br />
<br />
<span style="color: red;"><span class="Apple-style-span" style="color: black;"> </span>csharp System.IntPtr handle = ((com.genexus.uifactory.net.NetChoice)((com.genexus.ui.GXComboBox) cmbavMicombo.getGXComponent()).choice).Handle;</span><br />
<br />
<span style="color: red;"><span class="Apple-style-span" style="color: black;"> </span>csharp SendMessage(handle, 352, 300, 0);</span><br />
EndEvent // Enter<br />
<span class="Apple-style-span" style="color: red;"><br />
</span><br />
Sub 'dummy'<br />
<span style="color: red;"><span class="Apple-style-span" style="color: black;"> </span>csharp }</span><br />
<span style="color: red;"><span class="Apple-style-span" style="color: black;"> </span>csharp [System.Runtime.InteropServices.DllImport("coredll.dll")]</span><br />
<span class="Apple-style-span" style="color: red;"><span class="Apple-style-span" style="color: black;"> </span>csharp static extern int SendMessage(System.IntPtr hWnd, int wMsg, int wParam, int lParam);</span><br />
<span class="Apple-style-span" style="color: red;"><span class="Apple-style-span" style="color: black;"> </span>csharp protected void dummy2(){</span><br />
EndSubDiego Ocampohttp://www.blogger.com/profile/16182346507304485510noreply@blogger.com0tag:blogger.com,1999:blog-8855174728572889565.post-68569915020423106782010-06-06T18:31:00.002-03:002010-07-16T15:58:31.586-03:00Como simular la impresión vía bluetooth o serial utilizando HyperTerminal de WindowsCuando desarrollamos aplicaciones por ejemplo de venta en algun momento vamos a necesitar imprimir facturas, recibos, reportes, etc. En aplicaciones móviles lo mas común es utilizar impresoras bluetooth portátiles.<br />
<br />
Claramente lo mas sencillo es tener la impresora que vamos a utilizar luego de puesta en produccion, sin embargo esto no siempre es asi, muchas veces no contamos con la impresora ya sea porque nuestro cliente no la ha adquirido aun o simplemente porque no contamos con una.<br />
<br />
Por suerte no es necesario contar con la impresora para poder realizar las pruebas de impresion, lo que podemos hacer es simular la misma. Para esto necesitamos si tener algunas cosas fáciles de conseguir y mucho mas económicas que comprar una impresora :<br />
<ul><li>Cable USB <> RS232 interface cable : aproximadamente 15 dolares </li>
<li>Bluetooth con adaptador serial: hay de todo, en promedio se puede conseguir uno por 120 dolares</li>
<li><a href="http://technet.microsoft.com/es-es/library/cc736511(WS.10).aspx">Hyperterminal </a>: gratis, hasta Windows XP viene instalado para versiones posteriores hay que descargarlo.</li>
</ul><div><br />
</div><div>Bien una vez que tenemos lo necesario simular la impresion es bien sencillo, una vez conectado todo a nuestro PC debemos configurar el hyperterminal para que escuche el puerto al que hemos conectado el cable USB.</div><div><br />
</div><div>Configuracion de HyperTerminal </div><div><ol><li>Creamos una nueva conexion ingresado el nombre de la misma.</li>
<li>Elegimos el puerto en el que conectamos el cable USB <> RS232, la forma facil para saber el puerto es fijarse en el Administrador de dispositivos.</li>
<li>Configurar las propiedades del COM al que nos hemos conectado, para esto simplemente alcanza con dar click al boton "Restore Defaults". Deberia quedar como se muetra en la imagen.</li>
</ol><div><br />
</div></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEgDjSXEsdZOdFqppsiddwTBKOSPQDrFXeAAvN5T2vJFrrbqKlqoTW-pkBmux5eDTnjUQdsgvWb1WspdP_bXI-G2wCE3zibzLn3DAZCkZe6dKUuuG1qOzBEi0VjroXqilcgcpT9N1uVSfJ/s1600/2010-06-06_1742.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEgDjSXEsdZOdFqppsiddwTBKOSPQDrFXeAAvN5T2vJFrrbqKlqoTW-pkBmux5eDTnjUQdsgvWb1WspdP_bXI-G2wCE3zibzLn3DAZCkZe6dKUuuG1qOzBEi0VjroXqilcgcpT9N1uVSfJ/s320/2010-06-06_1742.png" /></a></div><div><br />
</div><div><br />
</div><div><br />
</div><div>Lo único que queda es tomar la aplicación y enviar un reporte modo texto a imprimir, la pantalla del HyperTerminal mostrara exactamente lo mismo que si estuviéramos imprimiendo con una impresora real.</div><div><br />
</div><div><br />
</div><div><br />
</div>Diego Ocampohttp://www.blogger.com/profile/16182346507304485510noreply@blogger.com0tag:blogger.com,1999:blog-8855174728572889565.post-63333767397517204822010-03-30T00:23:00.002-03:002010-07-16T15:58:36.540-03:00¿Aplicaciones conectadas o desconectadas?Cuando empezamos a pensar en el desarrollo de una aplicación móvil, una de las primeras decisiones que se deben tomar es la arquitectura para la cual vamos a desarrollar nuestra aplicación.<br />
<br />
<br />
<strong>Aplicaciones locales al dispositivo</strong>. Para poder generar este tipo de aplicaciones GeneXus utiliza el Compact Framework, distribuido por Microsoft para poder ejecutar aplicaciones .NET en dispositivos móviles. <br />
<br />
Estas aplicaciones tienen una interfaz estilo Windows y almacenan los datos localmente en la base de datos SQL Server CE (motor de base de datos para PocketPC). Para poblar de datos estas bases o pasar la información generada existen diferentes mecanismos de sincronización como webservices, data views, etc.<br />
<br />
Para poder generar una aplicación .NET Mobile con GeneXus hay que tener en cuenta una serie de requerimientos simples, estos son: Active Sync y Windows Mobile SDK for Pocket PC para el caso que se tenga instalado Microsoft Visual Studio. Mi consejo es utilizarlo con Visual Studio instalado ya que además de brindar ciertas ventajas ofrece una serie de herramientas muy útiles que facilitan el trabajo. Además se cuenta con una serie de emuladores lo que hace que no sea necesario contar con un dispositivo para realizar el desarrollo.<br />
<br />
Si no se cuenta con Visual Studio existen una serie de limitaciones no muy grandes y se agregan algunos ítems a los requerimientos. <a href="http://wiki.gxtechnical.com/commwiki/servlet/hwiki?Mobile+without+Visual+Studio,">Mas info</a> <br />
<br />
<strong>Aplicaciones conectadas o full web</strong>, estas son aplicaciones web como cualquier otra que hayamos desarrollado utilizando GeneXus.<br />
<br />
A partir de GeneXus Evolution 1, el desarrollo de aplicaciones web mobile ha sido mejorado cambiando la forma en que las páginas web, estilos, y java scripts son generados cuando la aplicación es mostrada en los dispositivos móviles. <br />
<br />
Esta versión de GeneXus brinda además la posibilidad de utilizar el Work With Pattern, para que el mismo pueda ser visto desde un dispositivo móvil, en la instancia del pattern debemos chequear que la propiedad "GenerateForSmartDevices" este en true.<br />
<br />
Además se ha agregado el valor AppMasterSD a la property Master page de los web panels creada para: nos permiten tener un diseño consistente, para aplicaciones web mobile existe el tipo.<br />
<br />
Finalmente a la hora de probar nuestra aplicación podemos acceder directamente al localhost desde nuestro dispositivo móvil de manera sencilla por lo que resulta muy fácil testear la aplicación <br />
<br />
<br />
La elección entre una de estas dos arquitecturas debe estar basada en el uso que se le piensa dar a la aplicación. Debemos pensar entonces en las siguientes variables: conectividad, tiempos de ejecución y trafico de información. <br />
<br />
<strong>Conectividad:</strong> si se piensa en una aplicación conectada, se debe estar seguro que se tendrá acceso el 100% del tiempo. En general las aplicaciones conectadas se utilizan dentro de depósitos donde esta variable se puede controlar.<br />
<br />
<strong>Tiempos de ejecución y tráfico de información:</strong> una aplicación local siempre será más rápida que una a la que se aceda vía web además para trabajar no necesita enviar ni recibir información. Si a esto le sumamos el envió de un gran volumen de información puede resultar en que nuestra aplicación web mobile sea inutilizable. <br />
<br />
En las aplicaciones locales se pueden desarrollar mecanismos para sincronizar con la base de datos central en nuestra empresa cuando se tenga conectividad mientras todo quedara almacenado localmente.<br />
<br />
<br />
<strong>Mantenimiento de la aplicación</strong><br />
Por último resta hablar del mantenimiento de la aplicación<strong>,</strong> en ambos casos es muy fácil y no tiene complicaciones. Con respecto a la web basta con actualizar el server los cambios realizados. <br />
<br />
En las aplicaciones locales es un poco diferente. Lo que se debe hacer es generar el cab y publicarlo luego basta con enviar vía mail o sms la url a cada dispositivo donde este quedo publicado, luego de descargado el cab con un clic se instala solo en el dispositivo.Diego Ocampohttp://www.blogger.com/profile/16182346507304485510noreply@blogger.com1