RESET

Así lo hice y me funcionó…

Archivos en la Categoría: Programación

GeneXus–Por favor haga ’Get’ de los datos antes de actualizarlos


 

image

Después de buscar en internet, tratando de encontrar una solución al mensaje de error –Por favor haga ‘Get’ de los datos antes de actualizarlos – y con el triste final de mirar en los foros solo respuestas nada útiles; aquí les dejo la solución al error que se me presentó.

El problema no es de diseño o de programación. El problema es de la forma en que guardamos y buscamos la DATA.

Expondré mi ejemplo:

1.- La estructura de mi tabla es la siguente

image

Donde CodeC3 y CodeC30 son del tipo dominio, carácter en mayúsculas de 3 y 30 posiciones respectivamente y forman parte de la llave principal (Indices).

2.- Las reglas son las siguientes

image

La DATA la ingreso por medio de un procedimiento que registra mayúsculas y minúsculas en el campo “AutorizationObjectName” en SQL Server.

 

Aquí comienza el problema porque en mi DATA queda registrada la información en mayúsculas y minúsculasimage

 

Mi procedimiento (Procedure)

image

Mi tabla en SQL – Observe el campo AuthorizationObjectName (Mayúsculas y minúsculas)

image

Al momento de actualizar esa data desde mi programa yo lo leo en mayúsculas dado que el dominio CodeC30 así lo especifica.

image

Al momento de guardar el cambio sale el error “Por favor haga ’Get’ de los datos antes de actualizarlos” porque en mi pantalla de consulta la Información se encuentra solo en mayúsculas pero en mi base de datos está con la combinación mayúsculas y minúsculas.

La solución: Leer los datos en mi pantalla de consulta con la combinación de letras o cambiar a mayúsculas la información en la tabla de mi base de datos.

En este ejemplo surge el error porque AuthorizationObjectName forma parte de las llaves (Indices) en la tabla de mi base de datos. En otras palabras, el índice es diferente al intentar almacenar la información.

Problemas con la presentación de los acentos en Harbour-MiniGUI Extended


Este es un problema que se presenta al utilizar un código de página diferente a nuestras necesidades.

Al elegir una página de código no adecuada imposibilita que se muestren algunos caracteres especiales o acentos en las vocales.

EL PROBLEMA

El problema se encuentra en dos partes del desarrollo de nuestro proyecto:

– Nuestro editor de texto

– La indicación que debemos hacer en el código que estamos programando

EJEMPLO

En nuestro editor de texto vemos varios tipos de codificación. Puede ser que tengamos una codificación no compatible.

image

image

Observe que Versión no muestra la ó.

La siguiente es una muestra de la pantalla resultante al ejecutar nuestro programa. Podemos observar que no dice El registro se actualizó correctamente.

image

LA SOLUCION

Primero vamos a corregir nuestro editor de texto, indicando que vamos a utilizar la codificación Codificar en ANSI.

image

Posteriormente vamos al código de nuestro programa y vamos a especificar que vamos a utilizar SPANISH (Set CodePage to SPANISH). Eso le indicará a nuestro programa que se muestren los acentos y caracteres especiales.

image

Si ha diseñado sus pantallas utilizando el IDE, debe editar el código con su editor de texto para asegurar que contiene la codificación correcta.

El resultado final va a ser el siguiente

image

La siguiente figura muestra el comando de Harbour-MiniGUI con sus respectivas opciones.

image

NOTA

Al momento de hacer este documento he estado trabajando con:

-Editor de texto – Notepad++ versión 6.6.9

-Harbour-MiniGUI Oficial versión 3.3.1

CARACTER, CAMPO, REGISTRO, BASE DE DATOS, CONSTANTE, VARIABLE, ANALISIS, ALGORITMO, DIAGRAMA, PROGRAMA


DESCRIPCIONES DE: CARÁCTER, CAMPO, REGISTRO, BASE DE DATOS

CARÁCTER

Es la mínima expresión de un registro y se puede componer de una letra del abecedario o de un número en particular. Ejemplo: 1, 2… a, b, c, etc.

CAMPO

Es un espacio de almacenamiento para un dato específico, dentro de un registro.

Por el tipo de información que contendrán los podemos clasificar en:

· Autonúmero (Entero) (Int)

Este tipo de campo se utiliza para llevar una secuencia automática. El motor de base de datos se encarga de asignarle el número de registro siguiente y no es modificable.

· Entero con signo (Signed Int)

Este tipo de campo se utiliza para almacenar un número entero que lleva implícito el tipo de signo según sea su origen positivo o negativo. Ejemplo: 5, -5.

· Entero sin signo (Unsigned Int)

En este tipo de campo el valor que se almacena es un entero donde no se incluye el tipo de signo de su procedencia, negativo o positivo. Ejemplo: 25, 40

· Moneda (Numéricos con el signo de la moneda del país)

Este es un campo numérico que muestra el símbolo de la moneda del país almacenado en la configuración nuestro ordenador. Incluye números enteros y números reales. Ejemplo: $55, $55.80, L800, L800.25,

· Numérico

Es un campo donde se almacenan números que incluyen el signo de su procedencia. Ejemplo: 25.421, -80.9257.

· Alfanumérico

En este tipo de campos podemos almacenar en conjunto números y letras. Ejemplo: Direcciones geográficas. Ejemplo: Colonia Las Colinas, 5ª avenida, 8 calle, Noroeste.

· Caracter

En este tipo de campo solo podemos almacenar letras. Ejemplo: Nombre- Juan Repich, Estado Civil- Casado.

Esta clasificación puede variar de acuerdo al motor de base de datos o del lenguaje de programación que estemos utilizando.

REGISTRO

Es un solo campo o la unión de varios campos que sirven para almacenar la información relacionada y que describe una persona, un objeto, un evento, etc.

Ejemplo:

PERSONA

Registro No.1
NOMBRE DEL CAMPO CONTENIDO DEL CAMPO TIPO DE CAMPO
Nombre Saturnina Mejía Caracter (Char)
Sexo Femenino Carácter (Char)
Edad 50 Número Entero (Int)
Estatura 1.75 Número (Float)
FechaNacimiento 25/10/1963 Fecha (Date)
LugarNacimiento Santa Bárbara Caracter (Char)
Telefono 2552-8046 Alfanumérico (Char)

TABLA

Es la unión de varios registros afines agrupados bajo un solo nombre al que le llamamos nombre de la tabla. Ejemplo:

TABLA PERSONAS

REGISTRO NOMBRE SEXO EDAD
1 María Pascual Femenino 35
2 Ramón Antúnez Masculino 88
3 Damaris Solano Femenino 18

BASE DE DATOS

Es la unión de varias tablas que en conjunto almacenan toda la información de un entorno. Ejemplo: Base de datos de Planillas-(Tabla de Empleados, Tabla de Salarios devengados, etc), Base de datos de Contabilidad-(Tabla de Catálogo contable, Tabla de movimientos contables, etc), etc.

BASE DE DATOS DE PLANILLAS

TABLA EMPLEADOS
Identidad (*)
NombreEmpleado
FechaIngreso
SalarioMensual
TABLA DEVENGADO
Identidad (*)
MontoIngresos
MontoDeducciones
MontoDevengado

DESCRIPCIONES DE: CONSTANTES Y VARIABLES

CONSTANTE

Es todo aquel valor que no debe ser alterado ni modificado durante toda la ejecución del programa. Ejemplo:

CONSTANTE VELOCIDAD DE LA LUZ (Metros por segundo)
299.792.458
CONSTANTE PI
3.14159265358979323846

VARIABLE

Son espacios reservados en memoria y sirven para ir almacenando valores diferentes durante la ejecución del programa.

VARIABLE EDAD
50
VARIABLE EDAD
25
VARIABLE EDAD
38

Al igual que la información almacenada en los campos de un registro, las variables deben tener un tipo de información. Ejemplo: Entero, Caracter, Fecha, etc.

DESCRIPCIONES DE ANALISIS, ALGORITMO, DIAGRAMA, PROGRAMA

ANALISIS

Es la descomposición en partes de una información global para poder entender y comprender de forma individual cada una de esas partes encontradas.

Para realizar efectivamente un análisis debemos formularnos una serie de preguntas que hagan referencia a todo lo que deseamos encontrar. Ejemplo: ¿Qué nos dan?, ¿Qué nos piden?, ¿Qué debemos calcular?, etc.

Ejemplo:

PROBLEMA

Encontrar y mostrar el resultado para la suma de A y B.

ANALISIS

¿Qué nos piden?

R= Encontrar la suma de dos variables.

¿Qué nos dan?

R= Dos variables a las que debemos asignarles un valor en nuestro programa.

¿Qué variable debemos definir?

R= La variable “Respuesta” a la que podemos asignarle el nombre X

¿Qué fórmula debemos realizar?

R=                 X=A+B

ALGORITMO

Los algoritmos son descripciones sucesivas que utilizamos para poder encontrar el resultado de un problema. Ejemplo:

PROBLEMA

Encontrar y mostrar el resultado para la suma de A y B.

ALGORITMO

1) Iniciar nuestro programa

2) Ingresar el valor para la variable A

3) Ingresar el valor para la variable B

4) Despejar la fórmula X=A+B

5) Mostrar el resultado en X

6) Finalizar nuestro programa

DIAGRAMA

Un diagrama de flujo es la representación gráfica de cada uno de los pasos descritos en nuestro algoritmo.

Ejemplo (En paréntesis y en rojo se muestran los pasos del algoritmo):

PROBLEMA

Encontrar y mostrar el resultado para la suma de A y B.

DIAGRAMA

clip_image002

PROGRAMA

Es el conjunto de instrucciones que una vez ejecutadas realizan una o varias tareas en la computadora.

Estas instrucciones se escriben y almacenan en archivos o ficheros, utilizando texto que nosotros entendemos y que al final se convertirán en código binario entendible por la computadora.

Existen varias formas de crear y hacer funcionar los programas:

Interpretados

En esta forma hay un programa binario que va leyendo y adaptando cada instrucción conforme ves encontrada. Ejemplo de ello son HTML, PHP, Java, Visual FoxPro, Framework .NET.

Compilados

En esta forma el código que editamos es transferido o procesado por un compilador que lo convierte a código binario directamente entendible por nuestra computadora. Ejemplo de compiladores: Ensamblador, Lenguaje C.

Ejemplo:

PROBLEMA

Encontrar y mostrar el resultado para la suma de A y B.

PROGRAMA

*Programa para encontrar X=A+B

@x,y Say “Ingrese el valor para A:”

@x,y Get A

@x,y Say “Ingrese el valor para B:”

@x,y Get B

Read

X=A+B

@x,y Say “El valor para X es:”

@x,y say X

Return

Funciones definidas por el usuario


En el término inglés se escribe User Defined Function (UDF). Este es un concepto desarrollado para el mejoramiento y facilitación de escritura y lectura del código fuente desarrollado. Aparte de ayudar a escribir menos repeticiones en la programación.

 

Para desarrollar una UDF se requiere hacer un análisis exhaustivo del código fuente y definir qué partes de ese código podemos convertir en una UDF.

 

Ejemplo:  (Código de programación normal)

 

Si tenemos la ecuación x = a^b (x es igual a “a” elevado a la “b”)

 

Siendo los valores para la ecuación 1 “a= 5 y b=2”, y para la ecuación 2 “a=4 y b=4). Desarrollando un código normal (Lineal) nos quedaría de la siguiente manera

 

Forma 1

Local a, b

a  := 5

b := 2

x := a ^ b

a := 4

b := 4

x:= a ^ b

 

Forma 2

Local a, b

x := 5 ^ 2

x := 4 ^ 4

 

Forma simplificada con UDF

Function Main()

    x := Exponencial(5,2)

    x := Exponencial(4,4)

Return Nil

 

Function Exponencial( a, b)

   Local a, b

Return a ^ b

 

Como punto final puedo decir que el desarrollo simplificado con UDF´s hace más fácil la lectura del código fuente y por otro lado evita que ocurran muchas repeticiones innecesarias.

El funcionamiento sería el siguiente: Dentro de Function Main se hace un llamado a Function Exponencial. Dentro de Function Exponencial se desarrolla la ecuación y el resultado se retorna a Function Main para asignarle ese valor a “x”. Caso contrario podríamos evitar “x” y utilizar el resultado directamente ya sea para imprimirlo en pantalla, en impresora o para almacenarlo en el registro especifico dentro de la tabla.

Esto también hace que el resultado del programa binario o ejecutable sea mas pequeño.

Ventajas al programar con Harbour-MiniGUI Experimental


Harbour es un traductor de código fuente (Texto). Toma el código escrito en formato Clipper, Fox, SQL, etc. y lo convierte en un p-seudo código fuente escrito en C++.

MiniGUI es una librería que lleva combinación de códigos fuentes, Lenguaje C y Harbour. Todo este código fuente se encuentra en la carpeta C:\MiniGUI\Source.

Borland C++ 5.5 Command Line es el compilador utilizado para obtener los binarios o ejecutables finales.

 

Ventajas de Harbour

– Harbour  es 100% libre

– Harbour es estable, robusto y eficiente

– Harbour es 100% portable entre multiples sistemas operativos que funcionan con la misma base

– Se puede utilizar para crear aplicaciones de código abierto o comerciales

 

Ventajas de MiniGUI

– Se basa en código libre y de libre distribución

– Se puede modificar basado en los términos de la licencia pública (GNU)

 

Ventajas de Borland C++ 5.5

– Es una versión para uso personal sin cargos

– El resultado final es un fichero binario o ejecutable rápido basado en Lenguaje C.

 

Hay restricciones en el uso y distribución de los binarios generados en Borland C y es por esta razón que la versión oficial de Harbour-MiniGUI ahora está desarrollada para Lenguaje C MinGW.

Descripción de las carpetas dentro de C:\MiniGUI


image

 

BATCH

Carpeta que contiene los archivos .BAT necesarios para ejecutar el proceso de compilación o creación de archivos de librería (.LIB) y ejecutables (.EXE)

image

 

DOC

En esta carpeta se almacenan los archivos de ayuda de MiniGUI y algunas librerías de terceros.

image

 

HARBOUR

Esta carpeta contiene los archivos binarios, documentos, inclusión y librerías propias de Harbour.

image

 

IDE

Esta carpeta contiene la utilidad original. Herramienta necesaria para facilitar el diseño de la parte gráfica de nuestras aplicaciones. Creación de ventanas, botones, combo box, edit box, etc.

image

 

INCLUDE

Esta carpeta contiene una serie de archivos de encabezado (.CH), pertenecientes a la librería de MiniGUI.

image

 

LIB

Esta carpeta contiene la librería principal del MiniGUI y librerías de terceros.

image

 

RESOURCES

Esta carpeta contiene archivos de tipo cursor e imágenes utilizadas en MiniGUI y  en nuestras aplicaciones.

image

 

SAMPLES

Esta carpeta contiene muchos ejemplos necesarios para aprender a programar en MiniGUI.

image

 

SOURCE

Esta carpeta contiene todo el código fuente de la librería MiniGUI y las librerías de terceros.

image

 

UTILS

Esta carpeta contiene código fuente y aplicaciones de terceros que pueden ser utilizadas como herramientas adicionales en nuestra programación.

image

 

WFIDE

IDE en desarrollo por Walter Formigoni

image

 

XHARBOUR

Esta carpeta contiene los archivos binarios, inclusión y librerías correspondientes a xHarbour.

image

 

XLIB

Esta carpeta contiene la librería de MiniGUI y librerías de terceros, desarrolladas para funcionar en combinación con xHarbour.

image

¿Qué necesito para programar con Harbour y MiniGUI?


Para crear aplicaciones que funcionen en Windows desde 16 y hasta 64 bits se requiere lo siguiente:

 

Borland C++ versión 5.5

Harbour (Página oficial de Harbour, Página oficial de xHarbour)

MiniGUI extended (Este instalador trae implícito el Harbour)

– Editor de texto. Notepad++

 

Para las opciones adicionales al crear una distribución formal

– Creador de archivos de ayuda (.HLP). HTML Help Workshop

– Creador de instaladores. Inno Setup Compiler, Utilidad para facilitar el uso de Inno Setup. ISTool 

 

La programación se realiza utilizando varias herramientas, principalmente el editor de texto (Utilice el editor que mas le agrade y que genere archivos de texto [.TXT]). El código o comandos de programación requeridos son una combinación extendida y heredada de dBase, FoxBase, Clipper, Lenguaje C++, Visual Basic, SQL y su motor principal Harbour ó xHarbour; para el manejo de la estructura principal del programa. La parte gráfica se maneja haciendo uso de los comandos y funciones contenidas dentro de las librerias de MiniGUI que es un equivalente al proyecto que originalmente se desarrolló para Clipper, cuyo nombre es FiveWin.

 

La estructura en el disco duro (Directorio raíz) quedaría así:

image

 

Estructura de la carpeta Borland

image

 

Estructura de la carpeta MiniGUI

image

Clase no registrada en GeneXus 9


Aqui describo la solución para un problema presentado con GeneXus 9 en algunas instalaciones.

Muchas veces, al instalar GeneXus 9, en algunas computadoras no todo queda registrado totalmente por lo que tendremos que recurrir a arreglarlo manualmente. De no solucionar esta eventualidad, nuestra programación no podrá continuar ya que luego de este mensaje no podemos pasar al siguiente nivel.

¿Por qué sucede este problema?

Esto sucede cuando aplicamos todas las actualizaciones de Windows, especialmente Framework versión 2.0 y posteriormente instalamos nuestro GeneXus.

Para evitar este inconveniente el órden de instalación de la computadora debería ser:

1.- Instalar el sistema operativo Windows

2.- Instalar GeneXus 9

3.- Activar GeneXus 9

4.- Instalar las actualizaciones de GeneXus 9

5.- Actualizar Windows

¿En qué momento se presenta el problema?

1.- Cuando estamos generando una base de conocimientos, al pasar a prototipo nos pide crear el nuevo modelo.

ErrorGenexus1.jpg

2.- Al tratar de generar el nuevo modelo se nos presenta una pantalla avisándonos que hay una clase no registrada.

ErrorGenexus2.jpg

SOLUCIÓN:

1.- Crear un archivo tipo batch (DOS) y colocar lo siguiente: (Por favor corregir las comillas ya que WordPress las modifica)

Para Windows XP en español

@echo off
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe «C:\Archivos de programa\ARTech\GeneXus\GeneXus90\GXThemeEditor.exe»
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe «C:\Archivos de programa\ARTech\GeneXus\GeneXus90\WizardNewModel.exe»
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe «C:\Archivos de programa\ARTech\GeneXus\GeneXus90\GXWSDLInspector.exe»
Pause

Para Windows XP en inglés

@echo off
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe «C:\Program Files\ARTech\GeneXus\GeneXus90\GXThemeEditor.exe»
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe «C:\Program Files\ARTech\GeneXus\GeneXus90\WizardNewModel.exe»
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe «C:\Program Files\ARTech\GeneXus\GeneXus90\GXWSDLInspector.exe»
Pause

2.- Guardar el archivo con el siguiente formato <nombrearchivo>.bat

3.- Ejecutar el archivo recientemente creado

Si todo está correcto nos aparecerá la siguiente pantalla:

ErrorGenexus3.jpg

Lo que hacemos con este proceso es registrar las clases que hace falta en nuestro sistema operativo y específicamente en nuestro Microsoft .NET FrameWork.

DESCARGAS

Para usuarios de Microsoft Windows XP

Windows XP Español

Windows XP Inglés

Para usuarios de Microsoft Windows 7, Windows 10

Windows 7 x64 Español