Alaska Software Inc. - ABM en modo grfico - interfaz GUI
Username: Password:
AuthorTopic: ABM en modo grfico - interfaz GUI
Jose Luis OterminABM en modo grfico - interfaz GUI
on Mon, 01 Nov 2010 12:43:21 -0300
Estimados colegas,

Algunos colegas novicios no se animan a escribir en estos foros y me han 
preguntado por la forma correcta de hacer un ABM.

Alguien querra subir un ejemplo de un ABM hecho en modo grfico? (Interfaz 
grfica, claro).

Dicen que un cuadro vale mil palabras.

Muchas gracias

Jos Luis Otermin
Alaska Software
Soporte Tcnico
--------------------------------------------------------------------
Foros de Usuarios: news://news.alaska-software.com
Pgina Web: http://www.alaska-software.com
Base de Conocimientos en la Web: http://www.alaska-software.com/kbase.shtm
Oficina en Europa: Fax: +49 (0) 61 96 - 77 99 99 23
Oficina en EEUU: Fax: +1 (646) 218 1281
--------------------------------------------------------------------
Jorge LRe: ABM en modo gráfico - interfaz GUI
on Mon, 01 Nov 2010 13:06:01 -0300
Hola José
con su pedido me ha generado algunas dudas

no veo diferencias entre manejar un ABM entre modo gráfico y consola
particularmente desde clipper, siempre he cargado los datos de las dbfs a 2 
juegos de variables de memoria, 1 juego para editar en los gets y otro juego 
para que antes de actualizar a la DBF, testear si la clave existe en caso de 
un alta y verificar en caso de una modificación que los datos en la dbf siga 
siendo los mismo para evitar sobre escrituras cuando 2 usuarios hacen lo 
mismo (viejas teorías de semáforos)
esta secuencia la adopté entre las miles de teorías que hablan de como hacer 
un ABM en una red

lo que le agregaría (esto lo digo..., luego de haber escuchado tu "bendita" 
recomendación de leer el manual) es un testeo para aquellos campos claves 
tenga un valor justamente válido por las dudas que con la ayuda del mouse el 
usuario cargue los campos que le interesa y no los que debe



"Jose Luis Otermin" escribió en el mensaje de 
noticias:b7b73d9$61d4facb$1d122@news.alaska-software.com...

Estimados colegas,

Algunos colegas novicios no se animan a escribir en estos foros y me han
preguntado por la forma correcta de hacer un ABM.

¿Alguien querría subir un ejemplo de un ABM hecho en modo gráfico? (Interfaz
gráfica, claro).

Dicen que un cuadro vale mil palabras.

Muchas gracias

José Luis Otermin
Alaska Software
Soporte Técnico
--------------------------------------------------------------------
Foros de Usuarios: news://news.alaska-software.com
Página Web: http://www.alaska-software.com
Base de Conocimientos en la Web: http://www.alaska-software.com/kbase.shtm
Oficina en Europa: Fax: +49 (0) 61 96 - 77 99 99 23
Oficina en EEUU: Fax: +1 (646) 218 1281
--------------------------------------------------------------------
Jose Luis OterminRe: ABM en modo grfico - interfaz GUI
on Tue, 02 Nov 2010 13:55:28 -0300
Qu mejoras haras a este abm?

Gracias por participar 


Jos Luis Otermin
Alaska Software
Soporte Tcnico
--------------------------------------------------------------------
Foros de Usuarios: news://news.alaska-software.com
Pgina Web: http://www.alaska-software.com
Base de Conocimientos en la Web: http://www.alaska-software.com/kbase.shtm
Oficina en Europa: Fax: +49 (0) 61 96 - 77 99 99 23
Oficina en EEUU: Fax: +1 (646) 218 1281
--------------------------------------------------------------------



Abm.zip
Jose Valle Re: ABM en modo grfico - interfaz GUI
on Wed, 03 Nov 2010 10:46:48 +0100
El Tue, 2 Nov 2010 13:55:28 -0300, Jose Luis Otermin escribió:

> ¿Qué mejoras harías a este abm?
> 
> Gracias por participar 

Hola Jose Luis, nos alegramos de verte por aqui.

El programa queda muy limpio como punto de partida. Pero no hace ni A ni B,
solo M. Tampoco hace validaciones, ni control de concurrencia. Y la parte
visual, redimensionamiento de ventanas, etc supongo que lo dejas para mas
adelante, a efectos didacticos.

Jose Valle
Jose Luis OterminRe: ABM en modo grfico - interfaz GUI
on Wed, 03 Nov 2010 13:57:09 -0300
Hola tocayo!!

Bueno, s que no se hacen validaciones ni se producen altas ni bajas.
Por eso, que resulta evidente, ped un modelo para esta tarea.
Los novicios tienen dificultades a la hora de codificar un ABM.
Mi pregunta fue, creo, clara.

cmo hace un abm un profesional que programa desde hace aos?
Imagino que el cdigo fuente de un ABM no es un Secreto de Estado.
La idea es discutir sobre la mejor forma de codificar algo tan habitual como 
un ABM.

A travs de la discusin encontraremos el patrn de programacin para 
cualquier ABM y de ah a un cdigo fuente genrico, hay un pasito.

te animas?

Un abrazo

Jos Luis Otermin
Alaska Software
Soporte Tcnico
--------------------------------------------------------------------
Foros de Usuarios: news://news.alaska-software.com
Pgina Web: http://www.alaska-software.com
Base de Conocimientos en la Web: http://www.alaska-software.com/kbase.shtm
Oficina en Europa: Fax: +49 (0) 61 96 - 77 99 99 23
Oficina en EEUU: Fax: +1 (646) 218 1281
--------------------------------------------------------------------



"Jose Valle" <jomagava@gmail.com> escribi en el mensaje 
news:1kskuiotqh3og$.1skszofuzai9s.dlg@40tude.net...
> El Tue, 2 Nov 2010 13:55:28 -0300, Jose Luis Otermin escribi:
>
>> Qu mejoras haras a este abm?
>>
>> Gracias por participar ;)
>
> Hola Jose Luis, nos alegramos de verte por aqui.
>
> El programa queda muy limpio como punto de partida. Pero no hace ni A ni 
> B,
> solo M. Tampoco hace validaciones, ni control de concurrencia. Y la parte
> visual, redimensionamiento de ventanas, etc supongo que lo dejas para mas
> adelante, a efectos didacticos.
>
> Jose Valle
>
>
>
>
Jose Valle Re: ABM en modo grfico - interfaz GUI
on Thu, 04 Nov 2010 11:43:47 +0100
El Wed, 3 Nov 2010 13:57:09 -0300, Jose Luis Otermin escribió:

> Hola tocayo!!
> 
> Bueno, sé que no se hacen validaciones ni se producen altas ni bajas.
> Por eso, que resulta evidente, pedí un modelo para esta tarea.
> Los novicios tienen dificultades a la hora de codificar un ABM.
> Mi pregunta fue, creo, clara.
> 
> ¿cómo hace un abm un profesional que programa desde hace años?
> Imagino que el código fuente de un ABM no es un Secreto de Estado.
> La idea es discutir sobre la mejor forma de codificar algo tan habitual como 
> un ABM.
> 
> A través de la discusión encontraremos el patrón de programación para 
> cualquier ABM y de ahí a un código fuente genérico, hay un pasito.
> 
> ¿te animas?
> 
> Un abrazo

Hola Jose Luis.

Añado un adjunto de lo que uso actualmente. Tiene todos los defectos
posibles pero funciona y para mi es trabajo de media hora hacer un abm de
un fichero nuevo.

Como creo que debe hacerse es así:

1) Borrado: 

Si puedo bloquear el registro.

  Compruebo si hay registros relacionados. Por ejemplo. Si un cliente tiene
facturas, albaranes, pedidos.

  Borro datos del cliente que están en otras tablas, por ejemplo precios
especiales, direcciones de envío, teléfonos, etc.

  Borro el registro, skip +1

  
2) Altas y modificaciones.

Si son altas hago variables de memoria con los valores predeterminados. Por
ejemplo el valor predeterminado para ‘pais’ el 034 en mi caso.

Y si son modificaciones hago estas variables con los valores actuales.

Edito el formulario.

Siempre hay dos botones Validar y Cancelar. Si cancelan se sale sin mas

Valido algunos campos según se teclean pero dejo salir del campo con
errores por si acaso hay que corregir errores en otro campo relacionado
(por ejemplo la validación de una cif depende del campo pais).

Al final repito todas las validaciones. Si no es correcto no dejo salir
(siempre pueden salir con el botón cancelar)

Si es un alta hago un INSERT. Postgree asigna un valor al campo
autoincremental y actualiza el resto de los campos.

Si es una modificación leo de nuevo el registro y comparo con los valores
que he guardado al inicio.

Si hay diferencias puedo intentar resolverlas, pero lo fácil es dar un
mensaje de que otro usuario ha modificado el registro y que vuelva a
modificarlo.

Si no hay diferencias hago el UPDATE.

Me parece una buena idea lo de hacer un ABM genérico. A mi me interesa
hacerlo para Postgree.

Jose Valle


GESMFMA.PRG
Jorge LRe: ABM en modo gráfico - interfaz GUI
on Fri, 05 Nov 2010 10:37:43 -0300
Hola José
te comento que no estoy trabajando en modo gráfico, si estoy trabajando con 
getsysx.prg lo que me pueden saltar con el mouse a cualquier get

y la forma de resolverlo es revisar en el GET de confirmación final si tengo 
valores válidos en los campos que requieren validación obligatoria
particularmente jamás manejo una B dentro de un AM

respondí el mensaje apuntando a la validación de datos y no a como manejar 
resize, validaciones, prevalidaciones, combobox(), xbpbrowse dentro de un 
xbpget y formatos entre otras cosas,
lo que sí particularmente me gustaría es proponer un pequeño ejemplo 
complejo en GET y convertirlo a GUI con ayuda



"Jose Luis Otermin" escribió en el mensaje de 
noticias:d0d0223$40b9bfb3$220a0@news.alaska-software.com...

¿Qué mejoras harías a este abm?

Gracias por participar 


José Luis Otermin
Alaska Software
Soporte Técnico
--------------------------------------------------------------------
Foros de Usuarios: news://news.alaska-software.com
Página Web: http://www.alaska-software.com
Base de Conocimientos en la Web: http://www.alaska-software.com/kbase.shtm
Oficina en Europa: Fax: +49 (0) 61 96 - 77 99 99 23
Oficina en EEUU: Fax: +1 (646) 218 1281
--------------------------------------------------------------------
Jose Luis OterminRe: ABM en modo grfico - interfaz GUI
on Fri, 05 Nov 2010 11:00:35 -0300
Hola Jorge,

Espero tu ejemplo y, junto con el que envi Jos Valle har las sugerencias.
Creo que esta discusin puede llegar a ser muy productiva.
Si se sumaran ms ejemplos (otros usuarios), podramos dar con un modelo 
genrico.

Gracias por escribir


Jos Luis Otermin
Alaska Software
Soporte Tcnico
--------------------------------------------------------------------
Foros de Usuarios: news://news.alaska-software.com
Pgina Web: http://www.alaska-software.com
Base de Conocimientos en la Web: http://www.alaska-software.com/kbase.shtm
Oficina en Europa: Fax: +49 (0) 61 96 - 77 99 99 23
Oficina en EEUU: Fax: +1 (646) 218 1281
--------------------------------------------------------------------



"Jorge L" <jlborlando@way.com.ar> escribi en el mensaje 
news:12a478f8$748b3e75$4a08d@news.alaska-software.com...
> Hola Jos
> te comento que no estoy trabajando en modo grfico, si estoy trabajando 
> con getsysx.prg lo que me pueden saltar con el mouse a cualquier get
>
> y la forma de resolverlo es revisar en el GET de confirmacin final si 
> tengo valores vlidos en los campos que requieren validacin obligatoria
> particularmente jams manejo una B dentro de un AM
>
> respond el mensaje apuntando a la validacin de datos y no a como manejar 
> resize, validaciones, prevalidaciones, combobox(), xbpbrowse dentro de un 
> xbpget y formatos entre otras cosas,
> lo que s particularmente me gustara es proponer un pequeo ejemplo 
> complejo en GET y convertirlo a GUI con ayuda
>
>
>
> "Jose Luis Otermin" escribi en el mensaje de 
> noticias:d0d0223$40b9bfb3$220a0@news.alaska-software.com...
>
> Qu mejoras haras a este abm?
>
> Gracias por participar ;)
>
>
> -- 
> Jos Luis Otermin
> Alaska Software
> Soporte Tcnico
> --------------------------------------------------------------------
> Foros de Usuarios: news://news.alaska-software.com
> Pgina Web: http://www.alaska-software.com
> Base de Conocimientos en la Web: http://www.alaska-software.com/kbase.shtm
> Oficina en Europa: Fax: +49 (0) 61 96 - 77 99 99 23
> Oficina en EEUU: Fax: +1 (646) 218 1281
> --------------------------------------------------------------------
>
>
>
Ingenieria de Sistemas(NQN)Re: ABM en modo grfico - interfaz GUI
on Mon, 08 Nov 2010 21:59:48 -0300
Voy a dar mi opinion sobre un proceso ABM...

Soy partidario de realizar los controles a medida que "se pasa de campo", 
como en algunos casos la edicion o modificacion de ciertos campos depende de 
otro..
por supuesto para esto se requiere un pequeno analisis sobre la disposicion 
de los campos (gets) en la pantalla (no importa si es modo consola o grafica 
o web)
Tambien voy a dar por obvio...una serie de cuestiones (no creo que esten mal 
pero en nuestro nivel creo que raya lo obvio (por no decir otra cosa)), como 
ser
verificar que la BD exista, (estoy convencido que mi teoria "sirve" tanto 
para tablas planas DBF, o para BD, no importa el motor por supuesto va ha 
diferir el modo de coneccion, DBF modo directo o nativo, BD a travez de ODBC 
u otro mecanismo), que el servidor este operativo , que la maquina este 
prendida y una serie de obiedades (a mi entender) mas...

Otra teoria que aplico (tal vez por herencia de las viejas maquinas o si 
quieren de viejo maoso je je je)..es realizar las aperturas de los archivos 
(cuando me refiero a archivos me refiero a DBF y/o BD) en el momento que los 
voy a utilizar, vi muchos sistemas que cuando arranca la aplicacion "abren / 
conectan" todos los archivos necesarios, y de esta manera cuando ingresan a 
una opcion ya tienen los datos disponibles, para mi es una pesima manera de 
programar. Por la sencilla razon que los datos estan almacenados en una 
computadora y manejados al final por un sistema operativo, Esto quiere decir 
que estan expuestos a fallas tecnicas/humanas y todos sabemos que pasa 
cuando estoy actualizando datos en el disco y se corta la luz...
Seguramente me podran de decir para eso estan las UPS (SAI), y un monton de 
herramientas preventivas, yo solo puedo garantizar COMO mi aplicacion maneja 
los datos y que algoritmo de recuperacion/o rolback implemento,,,no puedo 
garantizar que la UPS (SAI) tenga las baterias en buen estado, que todo el 
hardware este conectado a una UPS(SAI), que la coneccion de internet no se 
va ha caer en el momento de la actualizacion, en fin un sin numero de 
factores que no puedo controlar PERO que atentan contra la 
seguridad/integridad de mi sistema, entonces trato de  no depender (dentro 
de lo posible por supuesto) de factores externos a mi aplicacion.
La otra, el tiempo que demanda la apertura de los archivos con las maquinas 
de hoy es despreciable, comparado con las antiguas XT por ej. y la seguridad 
que me da no tener los datos en linea todo el tiempo,  para mi es 
fundamental..
Bueee en realidad puedo escribir un par de paginas mas con respecto a 
seguridad e integridad de datos pero para que se me entienda la teoria creo 
que suficiente..

Ahora si volviendo al procese de ABM

Normalmente los procesos de ABM - siempre (por ahora) hablamos de tablas o 
archivos maestros, (ej,. Clientes/Productos/Rubros etc. ) es decir archivos 
que por su condicion NO varian con la frecuencia que lo hacen los archivos 
de movimientos,...(ej. Facturas/Detalles de Fc. Resumens de Cuenta , 
Movimientos de stock etc.)
Yo los manejo desde un menu PERO dentro del mismo prg (o proceso)

Menu Altas - Bajas - Modificaciones - archivo XXXXX (clientes o customer 
etc)

1 - Selecciono la opcion (que esta en el menu)

Ingreso al prg - Formulario que "maneja" mi ABM
2 - Abro los archivos/BD
     use con las dbf...
     Coneccion con BD...(con todo lo que eso significa)

3 - Como de yo se que estoy trabajando con clientes
4 - Cargo en variables LA ESTRUCTURA del registro, no importe si es dbf o BD 
y las inicializo con los valores por defecto..
      mientras estoy "cargando" la estructura del registro a variables de 
memoria voy asignando los valores por defecto..
     por ej, Campos caracter =blanco
                 Campos numericos = 0.00
                 Campos Fecha/time()=en blanco o date/time, segun la 
aplicacion
                 Campos Logicos   = SOY ENEMIGO DE LOS CAMPOS LOGICOS no los 
utilizo en su lugar utilizo un campo caracter  CON 1/0 o S/N etc
                 y asi ......


5 - Muestro/Presento  el Formulario con el diseno del registro, es decir las 
variables  del Clientes/Customer.
     Posiciono el cursor en el primer campo a ingresar y FUERZO el foco en 
ese campo..esta operacion me permite luego realizar todos los demas 
controles..
     SI presiono ESC o Click en Boton Salir, salgo del formulario
     Si ingreso un valor los busco en el archivo..(dbf o con  selec si es 
BD)
        si lo encontro Cargo las variables de memoria con los datos del 
registro, y lo muestro ...(si ocurre esta situacion ACTVO el boton BORRAR - 
GRABAR)
      Si no lo encontro asumo que es una alta (en realidad en este punto 
activo un boton para buscar el cliente o que el sistema genere el nro, 
libre,)
      Haa, tampoco utilizo el famoso ID de la BD, los nros por ej. de 
clientes/customer los manejo yo en la aplicacion...mi teoria es que la 
herramienta sea Xbase.Clipper/V.Fox/ etc. haga lo que yo quiero y no lo que 
ella crea..

6- Como al ingresar al formulario "forze" el get en el campo, Principal (que 
normalmente es el primero de la lista), controlo el LOST FOCUS, y segun esto 
activo o no los campos siguientes...y mientras NO llegue al ultimo campo , 
solo esta activado el boton Cancelar...o Borrar segun el caso..


....bueno manana otro capitulo (o no ) de mi exposicion, voy a ver como se 
recepciona...
Jose Luis OterminRe: ABM en modo grfico - interfaz GUI
on Tue, 09 Nov 2010 00:01:43 -0300
Jelou Carlos!

Muy buena tu exposicin, chango.
Gracias por escribir, dicho sea de paso 

Debido a que uno de los pollos en tu discurso es de mi gallinero, me hago 
cargo y digo:

Lo de las Pre y Post condiciones son un "vicio acadmico" que me gust 
conservar.
La profe de Algoritmos I y II (la misma insistente y morruda) machac con 
esas premisas y me quedaron, a fuerza de garrotazos, impregnadas en algunos 
anlisis donde no siempre es trivial el funcionamiento del algoritmo.

He cargado las tintas en esos puntos ANTES y DESPUES del algoritmo porque en 
cualquier otra discusin de este tipo seguramente saltar a la vista que 
para poder ejecutar una secuencia bastante sencilla de instrucciones 
altamente especficas, las condiciones ambientales deben estar bien claras.

Ahora, yendo a lo nuestro:

El proceso de A-B-M requiere de esas pre y post condiciones.
La representacin de los datos frente al usuario puede ser (como bien apunt 
Angel), GUI (Interfaz Grfica - xbp) o HTML o...

Entonces, es importante considerar que la pantalla, donde se exponen los 
datos para su interaccin con el usuario, es resultado de la estrategia de 
representacin ms que por un imperativo tcnico o algortmico.

El ambiente previo y posterior a la pantalla de edicin es nuestra primer 
consideracin.
Hasta ahora, sin discusin luego de la unificacin de criterios, parece.

Hechas las salvedades, comenzamos con la parte interactiva?

Me gusta esta discusin 

Jos Luis Otermin
Alaska Software
Soporte Tcnico
--------------------------------------------------------------------
Foros de Usuarios: news://news.alaska-software.com
Pgina Web: http://www.alaska-software.com
Base de Conocimientos en la Web: http://www.alaska-software.com/kbase.shtm
Oficina en Europa: Fax: +49 (0) 61 96 - 77 99 99 23
Oficina en EEUU: Fax: +1 (646) 218 1281
--------------------------------------------------------------------
Jose Luis OterminRe: ABM en modo grfico - interfaz GUI
on Sat, 06 Nov 2010 06:48:50 -0300
Estimados Colegas,

Como se sabe, todo algoritmo requiere el siguiente escenario:

Pre-Condicin
Algoritmo
Post-Condicin

Para el caso de Altas (nuevo registro) - Bajas (anular registro) y
Modificaciones (alterar registro):
- Pre-Condicin:
--------------------
a) Existe una tabla.
   a.1) Est abierta.
b) Existe un orden para esa tabla.
   b.1) Ya ha sido creado y activado.
c) El puntero de registro se encuentra en el registro a modificar.
d) Hay una copia del registro a modificar.

- Post-Condicin:
---------------------
a) Tabla permanece abierta.
b) Mismo orden de Pre-Condicin.
c) Los datos manipulados por el algoritmo han sido agregados  anulados  
modificados.
d) El puntero de registro se encuentra en:
  d.1) Altas: El nuevo registro (RECCOUNT()).
  d.2) Bajas: El registro anterior (ltimo existente o BOF()).
  d.3) Modificaciones: El mismo registro de Pre-Condicin.

Estamos de acuerdo hasta aqu?
Es importante que la discusin de estas condiciones ambientales est 
resuelta antes de abordar el desarrollo del algoritmo.

Jos Luis Otermin
Alaska Software
Soporte Tcnico
--------------------------------------------------------------------
Foros de Usuarios: news://news.alaska-software.com
Pgina Web: http://www.alaska-software.com
Base de Conocimientos en la Web: http://www.alaska-software.com/kbase.shtm
Oficina en Europa: Fax: +49 (0) 61 96 - 77 99 99 23
Oficina en EEUU: Fax: +1 (646) 218 1281
--------------------------------------------------------------------
Angel Pais Re: ABM en modo grfico - interfaz GUI
on Sat, 06 Nov 2010 18:00:48 -0200
On Sat, 6 Nov 2010 06:48:50 -0300, Jose Luis Otermin wrote:

> Estimados Colegas,
> 
> Como se sabe, todo algoritmo requiere el siguiente escenario:
> 
> Pre-Condición
> Algoritmo
> Post-Condición
> 
> Para el caso de Altas (nuevo registro) - Bajas (anular registro) y
> Modificaciones (alterar registro):
> - Pre-Condición:
> --------------------
> a) Existe una tabla.
>    a.1) Está abierta.
> b) Existe un orden para esa tabla.
>    b.1) Ya ha sido creado y activado.
> c) El puntero de registro se encuentra en el registro a modificar.
> d) Hay una copia del registro a modificar.
> 
> - Post-Condición:
> ---------------------
> a) Tabla permanece abierta.
> b) Mismo orden de Pre-Condición.
> c) Los datos manipulados por el algoritmo han sido agregados  anulados  
> modificados.
> d) El puntero de registro se encuentra en:
>   d.1) Altas: El nuevo registro (RECCOUNT()).
>   d.2) Bajas: El registro anterior (último existente o BOF()).
>   d.3) Modificaciones: El mismo registro de Pre-Condición.
> 
> ¿Estamos de acuerdo hasta aquí?
> Es importante que la discusión de estas condiciones ambientales esté 
> resuelta antes de abordar el desarrollo del algoritmo.

NO estoy de acuerdo 

Ese modelo solo aplica para aplicaciones desktop que usen dbfs.
Si la GUI es HTML o los datos se encuentran en un servidor stateless (sql o
propio) nada de eso es válido.

Saludos
Angel
Jose Luis OterminRe: ABM en modo grfico - interfaz GUI
on Sun, 07 Nov 2010 01:36:02 -0300
Hola Angel!

Qu gusto leerte por ac!

Bien, si lo anterior es cierto para una tabla plana, Qu solucin 
propondras?

Gracias por sumarte 

Jos Luis Otermin
Alaska Software
Soporte Tcnico
--------------------------------------------------------------------
Foros de Usuarios: news://news.alaska-software.com
Pgina Web: http://www.alaska-software.com
Base de Conocimientos en la Web: http://www.alaska-software.com/kbase.shtm
Oficina en Europa: Fax: +49 (0) 61 96 - 77 99 99 23
Oficina en EEUU: Fax: +1 (646) 218 1281
--------------------------------------------------------------------


"Angel Pais" <amigosam@adinet.com.uy> escribi en el mensaje 
news:1fbg0b4avmn5c.xkn1wl7thbdf.dlg@40tude.net...
> On Sat, 6 Nov 2010 06:48:50 -0300, Jose Luis Otermin wrote:
>
>> Estimados Colegas,
>>
>> Como se sabe, todo algoritmo requiere el siguiente escenario:
>>
>> Pre-Condicin
>> Algoritmo
>> Post-Condicin
>>
>> Para el caso de Altas (nuevo registro) - Bajas (anular registro) y
>> Modificaciones (alterar registro):
>> - Pre-Condicin:
>> --------------------
>> a) Existe una tabla.
>>    a.1) Est abierta.
>> b) Existe un orden para esa tabla.
>>    b.1) Ya ha sido creado y activado.
>> c) El puntero de registro se encuentra en el registro a modificar.
>> d) Hay una copia del registro a modificar.
>>
>> - Post-Condicin:
>> ---------------------
>> a) Tabla permanece abierta.
>> b) Mismo orden de Pre-Condicin.
>> c) Los datos manipulados por el algoritmo han sido agregados / anulados /
>> modificados.
>> d) El puntero de registro se encuentra en:
>>   d.1) Altas: El nuevo registro (RECCOUNT()).
>>   d.2) Bajas: El registro anterior (ltimo existente o BOF()).
>>   d.3) Modificaciones: El mismo registro de Pre-Condicin.
>>
>> Estamos de acuerdo hasta aqu?
>> Es importante que la discusin de estas condiciones ambientales est
>> resuelta antes de abordar el desarrollo del algoritmo.
>
> NO estoy de acuerdo =)
>
> Ese modelo solo aplica para aplicaciones desktop que usen dbfs.
> Si la GUI es HTML o los datos se encuentran en un servidor stateless (sql 
> o
> propio) nada de eso es vlido.
>
> Saludos
> Angel
Jose Valle Re: ABM en modo grfico - interfaz GUI
on Sun, 07 Nov 2010 12:04:15 +0100
El Sun, 7 Nov 2010 01:36:02 -0300, Jose Luis Otermin escribió:

> Hola Angel!
> 
> ¡Qué gusto leerte por acá!
> 
> Bien, si lo anterior es cierto para una tabla plana, ¿Qué solución 
> propondrías?
> 
> Gracias por sumarte 

Variante para sql (aviso que en esto no tengo experiencia)

- Pre-Condición:

d) Hay una copia del registro a modificar. (Incluso creo que esto no es
necesario, porque sql avisará del 'lost update')

- Post-Condición:
c) Los datos manipulados por el algoritmo han sido agregados  anulados 
 modificados. (Creo que basta comprobar que no se ha producido un error)

---
Va a ser verdad lo que dice Boris que con sql todo es mas fácil.

Hasta ahora he trabajado en modo hibrido (solo he usado Td en algunas
aplicaciones) y con dbf. Ahora solo me interesa el modo gráfico y con sql.

Saludos a todos.
Jorge LRe: ABM en modo gráfico - interfaz GUI
on Mon, 08 Nov 2010 16:40:34 -0300
Grupo

José Valle, me sumo a tu interés, pero antes de pasar al sql prefiero 
entender el funcionamiento de las xbppartes

acá he armado un pequeño ejemplo de edición de un get, en donde el usuario 
debe localizar un dato buscandolo por el índice en una dbf

mi dificultad pasa por como armar la relación entre las distintas xbpPartes 
de manera "no modal"

José Luis, si te parece y podés dar el puntapié para iniciar la conversión 
de VIO a GUI, en la medida que vaya entendiendo me sumo para agregar 
funciones o clases de prevalidación y postvalidación de datos para 
"modificar" una dbf



"Jose Valle"  escribió en el mensaje de 
noticias:5qjusbnkkz43$.1968venhuxu76.dlg@40tude.net...

El Sun, 7 Nov 2010 01:36:02 -0300, Jose Luis Otermin escribió:

> Hola Angel!
>
> ¡Qué gusto leerte por acá!
>
> Bien, si lo anterior es cierto para una tabla plana, ¿Qué solución
> propondrías?
>
> Gracias por sumarte 

Variante para sql (aviso que en esto no tengo experiencia)

- Pre-Condición:

d) Hay una copia del registro a modificar. (Incluso creo que esto no es
necesario, porque sql avisará del 'lost update')

- Post-Condición:
c) Los datos manipulados por el algoritmo han sido agregados  anulados 
modificados. (Creo que basta comprobar que no se ha producido un error)

---
Va a ser verdad lo que dice Boris que con sql todo es mas fácil.

Hasta ahora he trabajado en modo hibrido (solo he usado Td en algunas
aplicaciones) y con dbf. Ahora solo me interesa el modo gráfico y con sql.

Saludos a todos.
Jorge LRe: ABM en modo gráfico - interfaz GUI
on Mon, 08 Nov 2010 16:43:10 -0300
Me había olvidado de incluir el ejemplo, aquí va

"Jorge L"  escribió en el mensaje de 
noticias:3fc8218f$ab6f790$3ca8f@news.alaska-software.com...

Grupo

José Valle, me sumo a tu interés, pero antes de pasar al sql prefiero
entender el funcionamiento de las xbppartes

acá he armado un pequeño ejemplo de edición de un get, en donde el usuario
debe localizar un dato buscandolo por el índice en una dbf

mi dificultad pasa por como armar la relación entre las distintas xbpPartes
de manera "no modal"

José Luis, si te parece y podés dar el puntapié para iniciar la conversión
de VIO a GUI, en la medida que vaya entendiendo me sumo para agregar
funciones o clases de prevalidación y postvalidación de datos para
"modificar" una dbf



"Jose Valle"  escribió en el mensaje de
noticias:5qjusbnkkz43$.1968venhuxu76.dlg@40tude.net...

El Sun, 7 Nov 2010 01:36:02 -0300, Jose Luis Otermin escribió:

> Hola Angel!
>
> ¡Qué gusto leerte por acá!
>
> Bien, si lo anterior es cierto para una tabla plana, ¿Qué solución
> propondrías?
>
> Gracias por sumarte 

Variante para sql (aviso que en esto no tengo experiencia)

- Pre-Condición:

d) Hay una copia del registro a modificar. (Incluso creo que esto no es
necesario, porque sql avisará del 'lost update')

- Post-Condición:
c) Los datos manipulados por el algoritmo han sido agregados  anulados 
modificados. (Creo que basta comprobar que no se ha producido un error)

---
Va a ser verdad lo que dice Boris que con sql todo es mas fácil.

Hasta ahora he trabajado en modo hibrido (solo he usado Td en algunas
aplicaciones) y con dbf. Ahora solo me interesa el modo gráfico y con sql.

Saludos a todos.


ADUANA.DBF
Gets.prg
main.PRG
Project.xpj
Jose Luis OterminRe: ABM en modo grfico - interfaz GUI
on Tue, 09 Nov 2010 01:28:30 -0300
Jorge,

En el ejemplo que enviaste existe un browse con una bsqueda.
Sugiero mirar en :

<drive>\ALASKA\XPPW32\source\samples\basics\QBrowse

Para darte una idea de cmo puede utilizarse el XbpQuickBrowse con bsqueda 
por columna.

Fijate en el fuente de QBROWSE2.prg

Esta forma de buscar es apta para tablas chicas y no se aplica a un contexto 
SQL excepto que la vista de la tabla haya sido hecha con un SELECT * FROM 
MiTabla

Mientras tanto, sigo viendo tu cdigo fuente.


Jos Luis Otermin
Alaska Software
Soporte Tcnico
--------------------------------------------------------------------
Foros de Usuarios: news://news.alaska-software.com
Pgina Web: http://www.alaska-software.com
Base de Conocimientos en la Web: http://www.alaska-software.com/kbase.shtm
Oficina en Europa: Fax: +49 (0) 61 96 - 77 99 99 23
Oficina en EEUU: Fax: +1 (646) 218 1281
--------------------------------------------------------------------
Jose Luis OterminRe: ABM en modo grfico - interfaz GUI
on Wed, 10 Nov 2010 07:39:06 -0300
Jorge,

Adjunto tu ejemplo "convertido" a modo grfico.
Puede que carezca de la belleza de un hermoso diseo pero la intencin es 
mostrar la funcionalidad en modo GUI y cmo se puede hacer una validacin 
con interaccin del usuario.
Adicionalmente hay algunos detalles como navegacin del browse con teclado a 
travs del campo de edicin (SLE).

Si miras EditSLE encontrars que con las teclas K_UP y K_DOWN se puede mover 
el puntero del browse y por consiguiente, el de la tabla / recordset en 
memoria paginada del DacPagedDatastore().

Cuando se mueve el puntero del browse, ste puede hacerse de diversas 
formas:
a) Por teclado - Evento keyboard.
b) Por ratn - Evento itemselected (doble click)
c) Por ratn - Evento itemMarked (un solo click)
d) Por manipulacin directa (ver EditSLE)

Por lo tanto ya no servir la simplicidad del DBEdit porque como vemos, hay 
ms de una forma de mover el puntero del registro e inclusive se puede mover 
el cursor sin mover el puntero de registro.

Estoy seguro que el fuente necesita una pulida y quiz hasta deba retocarse 
el fuente para ajustarlo mejor, pero la idea es mostrar cmo se puede 
disear un formulario con el XppFD (Diseador de Formularios de Xbase++) y 
luego alterar el cdigo fuente generado.

En este caso, el formato de funcin es para que el cdigo "convertido" sea 
semejante al del DOS.
Sin embargo, como veremos ms adelante, se puede crear una clase y desde 
ella administrar mejor toda la funcionalidad sin tener que pensar en un 
plato de cdigo spaguetti como el que se adjunta.

Espero tus comentarios y el de los dems, claro.

Jos Luis Otermin
Alaska Software
Soporte Tcnico
--------------------------------------------------------------------
Foros de Usuarios: news://news.alaska-software.com
Pgina Web: http://www.alaska-software.com
Base de Conocimientos en la Web: http://www.alaska-software.com/kbase.shtm
Oficina en Europa: Fax: +49 (0) 61 96 - 77 99 99 23
Oficina en EEUU: Fax: +1 (646) 218 1281
--------------------------------------------------------------------



Abm.zip
Jorge LRe: ABM en modo gráfico - interfaz GUI
on Wed, 10 Nov 2010 10:01:05 -0300
José, perfecto !

hay cositas que voy a tratar de pulir y tratar de hacer una pantalla como 
para entregar a un cliente

además de ir agregando otros gets como para poder armar todas las 
posibilidades

luego de terminar con todos los gets, voy a agregar las validaciones antes y 
después para hacer las ABM

mil gracias


"Jose Luis Otermin" escribió en el mensaje de 
noticias:7806a94b$458d7f15$89f@news.alaska-software.com...

Jorge,

Adjunto tu ejemplo "convertido" a modo gráfico.
Puede que carezca de la belleza de un hermoso diseño pero la intención es
mostrar la funcionalidad en modo GUI y cómo se puede hacer una validación
con interacción del usuario.
Adicionalmente hay algunos detalles como navegación del browse con teclado a
través del campo de edición (SLE).

Si miras EditSLE encontrarás que con las teclas K_UP y K_DOWN se puede mover
el puntero del browse y por consiguiente, el de la tabla / recordset en
memoria paginada del DacPagedDatastore().

Cuando se mueve el puntero del browse, éste puede hacerse de diversas
formas:
a) Por teclado - Evento keyboard.
b) Por ratón - Evento itemselected (doble click)
c) Por ratón - Evento itemMarked (un solo click)
d) Por manipulación directa (ver EditSLE)

Por lo tanto ya no servirá la simplicidad del DBEdit porque como vemos, hay
más de una forma de mover el puntero del registro e inclusive se puede mover
el cursor sin mover el puntero de registro.

Estoy seguro que el fuente necesita una pulida y quizá hasta deba retocarse
el fuente para ajustarlo mejor, pero la idea es mostrar cómo se puede
diseñar un formulario con el XppFD (Diseñador de Formularios de Xbase++) y
luego alterar el código fuente generado.

En este caso, el formato de función es para que el código "convertido" sea
semejante al del DOS.
Sin embargo, como veremos más adelante, se puede crear una clase y desde
ella administrar mejor toda la funcionalidad sin tener que pensar en un
plato de código spaguetti como el que se adjunta.

Espero tus comentarios y el de los demás, claro.

José Luis Otermin
Alaska Software
Soporte Técnico
--------------------------------------------------------------------
Foros de Usuarios: news://news.alaska-software.com
Página Web: http://www.alaska-software.com
Base de Conocimientos en la Web: http://www.alaska-software.com/kbase.shtm
Oficina en Europa: Fax: +49 (0) 61 96 - 77 99 99 23
Oficina en EEUU: Fax: +1 (646) 218 1281
--------------------------------------------------------------------
Jose Luis OterminRe: ABM en modo grfico - interfaz GUI
on Wed, 10 Nov 2010 10:24:49 -0300
Jorge,

Gracias por tu elogio 
Hay cosas que deberian pulirse como por ejemplo la edicin del SLE.

Lo que s debe hacerse de inmediato es la comprobacin:
Si el SEEK del Valid002 es verdadero, NO debe procederse con la creacin del 
dilogo y todo lo dems.

Es decir,

AD01->( dbSeek( AllTrim( cNOM ), .T., 1 ) )
lRET := Found()
IF .NOT. lRet
   aHeader := {"Aduanas"}
   aFields := {'AD01->NOMBRE'}
   [... etc ...]

   cData := oSLE:getData()
   oDialog:hide()         Oculta oDialog
   oDialog:destroy()      Destruye al objeto
   oDialog := NIL         Libera la memoria

   If ( LastAppEvent() != xbeK_ESC )
      nCOD := AD01->CODIGO
      cNOM := AD01->NOMBRE
      lRET := .T.

      //----------------------------------------//
       Actualiza el contenido del objeto
       XbpGet con los datos encontrados
      //----------------------------------------//
      oObj:SetData(cData)

   EndIF

ENDIF

RETURN lRet

Esa (y no la que he enviado) sera una estrategia de validacin ms 
apropiada.
Me centr en la interaccin con el usuario, la similitud de cdigo y 
estrategia.
Por supuesto, ms lo miro y ms modificaciones le hara 

Espero haber ayudado

Jos Luis Otermin
Alaska Software
Soporte Tcnico
--------------------------------------------------------------------
Foros de Usuarios: news://news.alaska-software.com
Pgina Web: http://www.alaska-software.com
Base de Conocimientos en la Web: http://www.alaska-software.com/kbase.shtm
Oficina en Europa: Fax: +49 (0) 61 96 - 77 99 99 23
Oficina en EEUU: Fax: +1 (646) 218 1281
--------------------------------------------------------------------
Jose Luis OterminRe: ABM en modo grfico - interfaz GUI
on Thu, 25 Nov 2010 22:41:04 -0300
Adjunto imagen del Get con bsqueda incremental.

Es a ttulo ilustrativo.

Jos Luis Otermin
Alaska Software
Soporte Tcnico
--------------------------------------------------------------------
Foros de Usuarios: news://news.alaska-software.com
Pgina Web: http://www.alaska-software.com
Base de Conocimientos en la Web: http://www.alaska-software.com/kbase.shtm
Oficina en Europa: Fax: +49 (0) 61 96 - 77 99 99 23
Oficina en EEUU: Fax: +1 (646) 218 1281
--------------------------------------------------------------------



GetConValidacionPorBusquedaIncremental.jpg
Angel Pais Re: ABM en modo grfico - interfaz GUI
on Sun, 07 Nov 2010 09:36:38 -0200
On Sun, 07 Nov 2010 01:36:02 -0300, Jose Luis Otermin wrote:

> Hola Angel!
> 
> ¡Qué gusto leerte por acá!
> 
> Bien, si lo anterior es cierto para una tabla plana, ¿Qué solución 
> propondrías?
> 
> Gracias por sumarte 


Un placer Don Gato !!!

Bueno creo que una variante mas generica podiras ser:


> Pre-Condición
> Algoritmo
> Post-Condición
> 
> Para el caso de Altas (nuevo registro) - Bajas (anular registro) y
> Modificaciones (alterar registro):
> - Pre-Condición:
> --------------------
> a) Existe una tabla.
>    a.1) Está abierta.
> b) Existe un orden para esa tabla.
>    b.1) Ya ha sido creado y activado.
> c) El puntero de registro se encuentra en el registro a modificar.
> d) Hay una copia del registro a modificar.

Si es alta
   inicializar las variables temporales valores por defecto
si no
   buscar el registro que se quiere modificar
   si existe
      iniciar variables temporales con los datos del registro
   si no
      error

  
> - Post-Condición:
> ---------------------
> a) Tabla permanece abierta.
> b) Mismo orden de Pre-Condición.
> c) Los datos manipulados por el algoritmo han sido agregados  anulados  
> modificados.
> d) El puntero de registro se encuentra en:
>   d.1) Altas: El nuevo registro (RECCOUNT()).
>   d.2) Bajas: El registro anterior (último existente o BOF()).
>   d.3) Modificaciones: El mismo registro de Pre-Condición.

Si es alta
   crear registro con los datos de variables temporales

Si es baja
   buscar registro
   si existe
      borrarlo
   si no
      ignorar comando

Si es modificacion
   buscar registro
   si existe
      variante a:
      borrarlo o moverlo a historico de cambios
      crear registro con los datos de variables temporales
      variante b:
      sobreescribir registro con los datos de variables temporales
   si no
      error

No me preocupa si el registro fue modificado por alguien en la red, el
ultimo usuario es el que gana.
Si se quiere saber quien modifico que, hay que llevar un archivo historico
de cambios para saber quien hizo que y cuando.

Si en vez de estar en una dbf clasica estamos en un recordset en memoria
hay que volver a cargar el mismo desde la fuentes de datos.

HTH
Angel
Jose Luis OterminRe: ABM en modo grfico - interfaz GUI
on Sun, 07 Nov 2010 11:33:55 -0300
Hola Angel,

Intentar poner en un conjunto de Pre y Post condiciones tus estrategias y 
de paso las combinar con lo que se dijo (siempre que no haya colisiones). 
Adems, tenemos que ver dnde cae la estrategia sugerida por Jos (Valle).

> Bueno creo que una variante mas generica podria ser:

Para el caso de Altas (nuevo registro) - Bajas (anular registro) y
Modificaciones (alterar registro):

NOTA:
Ampliaremos el concepto de Tabla para evitar confusiones en el cdigo.
Debemos tener en cuenta que las tablas planas (DBF) tienen un tratamiento y 
los conjuntos  de registros (en ingls: recordset) tienen otro.
No obstante, las instrucciones de tratamiento en algunos casos son los 
mismos.
Supongamos que usamos ODBCDBE (el motor ODBC de Xbase++ para BD SQL).
En ese caso, las instrucciones para administracin de tablas planas son LAS 
MISMAS que para tablas ODBC.
Si usamos SQL como lenguaje de conversacin con el motor de la BD, la 
estrategia cambia.
En donde sea necesario, agregaremos las aclaraciones pertinentes.

Escenario:
-----------
Imaginemos una pantalla con un Browse (o QuickBrowse).
En las lneas del Browse estn los registros de nuestro inters (Plan de 
cuentas - ACCOUNTS.dbf que se envi al comienzo del hilo).
El usuario busca un registro y procede a:
a) Modificar el saldo de cuenta.
b) Dar de baja la cuenta.
c) Insertar una cuenta nueva.
Aqu es donde surge la necesidad de discutir la estrategia del ABM.
Si los datos son locales (Tabla plana) o remotos (SQL).

- Pre-Condicin:
--------------------

a) Existe una tabla (o un conjunto de registros).
    a.1) Est abierta (o: est disponible).
b) Existe un orden para esa tabla.
    b.1) Ya ha sido creado y activado.
//------------------------//
 Estrategia de Angel 
//------------------------//
Si es Alta
    Inicializar las variables temporales valores por defecto
SiNo
   Buscar el registro que se quiere Modificar / Eliminar
   Si existe
      iniciar variables temporales con los datos del registro
   SiNo
      error
   FinSi
FinSi

 - Post-Condicin:
 ---------------------
 a) Tabla permanece abierta.
 b) Mismo orden de Pre-Condicin.
 c) Los datos manipulados por el algoritmo han sido agregados  anulados 
 modificados.

Si EsTablaPlana  DBF

 d) El puntero de registro se encuentra en:
   d.1) Altas: El nuevo registro (RECCOUNT()).
   d.2) Bajas: El registro anterior (ltimo existente o BOF()).
   d.3) Modificaciones: El mismo registro de Pre-Condicin.

Sino
   Si es Alta
       crear registro con los datos de variables temporales
   Si es baja
       buscar registro
       Si existe
           borrarlo
       SiNo
           ignorar comando
       FinSi

    Si es modificacion
        buscar registro
        si existe
        Si AuditoriaDeCambios     Variante A
             borrarlo o moverlo a historico de cambios
             crear registro con los datos de variables temporales
        Sino                                 Variante B
             sobreescribir registro con los datos de variables temporales
        FinSi
     SiNo
         error
     FinSi
FinSi

Ntese que la estrategia de Jos (Valle) est englobada en esta sintesis.

> No me preocupa si el registro fue modificado por alguien en la red, el
> ultimo usuario es el que gana.
> Si se quiere saber quien modifico que, hay que llevar un archivo historico
> de cambios para saber quien hizo que y cuando.
>
> Si en vez de estar en una dbf clasica estamos en un recordset en memoria
> hay que volver a cargar el mismo desde la fuentes de datos.

//-----------------------------------------------//

Creo que los aportes han enriquecido no slo a la discusin sino tambin al 
concepto.
Alguien cree que nos olvidamos de algo?

Todo comentario es bienvenido!!

Gracias por compartir sus conocimientos. 


Jos Luis Otermin
Alaska Software
Soporte Tcnico
--------------------------------------------------------------------
Foros de Usuarios: news://news.alaska-software.com
Pgina Web: http://www.alaska-software.com
Base de Conocimientos en la Web: http://www.alaska-software.com/kbase.shtm
Oficina en Europa: Fax: +49 (0) 61 96 - 77 99 99 23
Oficina en EEUU: Fax: +1 (646) 218 1281
--------------------------------------------------------------------
Jose Luis OterminRe: ABM en modo grfico - interfaz GUI
on Sun, 07 Nov 2010 11:02:10 -0300
Hola otra vez,

Para quienes se sumen (y no estn en tema), amplo un par de conceptos:
NOTA: Estas consideraciones de Pre y Post condiciones sirven para tablas 
planas.
Para el caso de situaciones cuyo estado es desconocido (SQL, HTML, etc), 
seguir el hilo anterior.
Por favor, tomen nota que no se ha hablado del algoritmo aun.

Pre.condicin:
----------------
Son las tareas que deben realizarse ANTES de la ejecucin de un algoritmo.
Entre ellas corresponde mencionar:
- Apertura de la tabla  cursor  puntero / conjunto de registros, etc.
- Busqueda del registro sobre el cual trabajar,
- Bloqueo de la Tabla (altas), Bloqueo del registro (modificaciones).
- Sume ac las acciones que quiera incorporar:
(Por ejemplo, bloqueo en cascada de un cliente y sus vnculos para el caso 
de "baja").


Post.condicin:
------------------
Son las tareas que debern realizarse luego de ejecutar el algoritmo.
Por ejemplo:
- Si la accin es Alta,
a.1) Bloquear tabla
a.2) agregar registro en blanco
a.3) substituir los campos por datos en memoria.
a.4) Desbloquear tabla.

- Si la accin es Bajas
b.1) Bloquear registro.
b.2) Ejecutar DELETE()
b.3) Desbloquear registro.

- Si la accin es Modificacin.
m.1) Bloquear registro
m.2) substituir los campos por los datos en memoria.
m.3) Desbloquear registro.

Por supuesto, estamos en medio de un debate sobre estos elementos.
Este es el momento ideal para discutir esta estrategia.

Le parece que nos olvidamos algo?


Jos Luis Otermin
Alaska Software
Soporte Tcnico
--------------------------------------------------------------------
Foros de Usuarios: news://news.alaska-software.com
Pgina Web: http://www.alaska-software.com
Base de Conocimientos en la Web: http://www.alaska-software.com/kbase.shtm
Oficina en Europa: Fax: +49 (0) 61 96 - 77 99 99 23
Oficina en EEUU: Fax: +1 (646) 218 1281
--------------------------------------------------------------------
Jose Luis OterminRe: ABM en modo grfico - interfaz GUI
on Wed, 10 Nov 2010 10:48:34 -0300
Estimados Colegas,

Luego de un par de das sin objeciones, creo que podemos continuar con el 
asunto que nos ocupa.

Resueltas las estrategias de las Pre y Post condiciones, podemos proceder al 
algoritmo principal.

No es ningn secreto de Estado que una pantalla de ABM debe llevar como 
mnimo las etiquetas descriptivas de los campos a mostrar, sus mscaras de 
edicin y, en caso de ser datos editables, sus condiciones de validacin.

Resumiendo, el siguiente conjunto de datos debera contemplar lo que se ha 
dicho.

aCampo := {;
   "Etiqueta",;
   "NombreCampo",;
   "MscaraDeEdicin",;
   "PreValidacin",;
   "PostValidacin",;
   "Editable";
  }

Ejemplo:
aCampo := {;
  "Razn Social",;
  "CLI->RSOCIAL",;
  "@!",;
  {| oGet | NombreEmpresa(CLI->CODCLI, oGet) },;
  {| | .T. },;
   .F.;
}

En este punto quisiera llamar la atencin sobre el codeblock de 
prevalidacin:
  {| oGet | NombreEmpresa(CLI->CODCLI, oGet) }

Se puede apreciar que el codeblock recibe al oGet como parmetro y se lo 
reenva a la funcin invocada.
En ese caso la funcin podr hacer lo mismo que Valid002( cNom, nCod, oObj) 
en el ejemplo enviado anteriormente.
Debido a que XbpGet deriva de XbpSLE, se puede ejecutar:

     oGet:SetData( cData )

De esta forma, anloga a  Valid002( ) , se puede localizar un registro y 
colocar un dato en el buffer de edicin del objeto prevalidado. As, luego 
de colocar el cdigo de cliente (en un paso anterior) y, en su 
postvalidacin, encontrado su registro, se puede colocar la descripcin en 
un campo de slo lectura cuando ste deba ganar el foco de edicin.

Si no hay observaciones, maana continuar con este tema.

Jos Luis Otermin
Alaska Software
Soporte Tcnico
--------------------------------------------------------------------
Foros de Usuarios: news://news.alaska-software.com
Pgina Web: http://www.alaska-software.com
Base de Conocimientos en la Web: http://www.alaska-software.com/kbase.shtm
Oficina en Europa: Fax: +49 (0) 61 96 - 77 99 99 23
Oficina en EEUU: Fax: +1 (646) 218 1281
--------------------------------------------------------------------
Jose Luis OterminRe: ABM en modo grfico - interfaz GUI
on Fri, 12 Nov 2010 11:54:23 -0300
Antes de continuar con el paso anterior me interesa saber:

a) Cmo posicionan los campos en pantalla?
b) Usan algn mtodo para calcular posiciones?
c) De dnde se sacan las descripciones?
d) Alguien usa un Diccionario de Datos?

Nota: Si a alguien le interesa discutir el Diccionario de Datos, por favor 
abra un tema nuevo.

Espero las respuestas antes de seguir.

Jos Luis Otermin
Alaska Software
Soporte Tcnico
--------------------------------------------------------------------
Foros de Usuarios: news://news.alaska-software.com
Pgina Web: http://www.alaska-software.com
Base de Conocimientos en la Web: http://www.alaska-software.com/kbase.shtm
Oficina en Europa: Fax: +49 (0) 61 96 - 77 99 99 23
Oficina en EEUU: Fax: +1 (646) 218 1281
--------------------------------------------------------------------