Edit in place, agregándoles más trucos (Parte VI)

Código útil, tips de programación, etc.
Responder
R.Pacheco
Al nivel de RZ
Mensajes: 367
Registrado: Lun Feb 07, 2011 4:45 pm
Ubicación: Santo Domingo,Rep.Dominicana
Contactar:

Edit in place, agregándoles más trucos (Parte VI)

Mensaje por R.Pacheco » Lun Abr 25, 2011 7:06 pm

Edit in place, agregándoles más trucos (Parte VI)


Hola a todos,
Siguiendo con el desarrollo de la aplicación Edit in place, continuamos agregándoles más truquitos a nuestro sistema de facturación.

En este post le voy a agregar los siguientes puntos:
1) Una Ventanita Inicializadora
2) Un control para la notificación de factura impresa
3) Un Control para saber si una factura es Original o es una copia
4) Un procedimiento de Membresía
5) Las Vistas en clarión, este tema por ser un poco largo será trato en un post exclusivo,
esperelo en nuestro proximo tema.

Una Ventanita Inicializadora
Es aquella que inicia el sistema con un mensaje de espera, o como usted quiera llamarlo, lo que me interesa es que usted aprenda como hacer esto. Para eso me posiciono en el menú del frame o pantalla del menú presionamos embeds, Local data, Windows Structure, así como se ve en la imagen.
Imagen
Para crear la ventanita desde Windows Structure entre al source luego presione la tecla de Ctrl. + F, inmediatamente le va a presentar una ventana para que elija el tipo de ventana a diseñar, escoja la primera opción, así como se ve en la imagen.
Imagen.
Déle el tamaño que mejor le parezca a su ventanita Inicializadora, luego agréguele el mensaje que usted quiere que diga, yo en mi caso le puse este: Inicializando Sistema, Espere por favor, ahora guarde los cambios, le debe haberle quedado así como se observa en la imagen.
Imagen
Luego de haber creado la estructura de la ventanita, váyase al init de la ventana del Frame en el Inicializer Procedure coloque el siguiente código.

Código: Seleccionar todo

!Inicialize the Procedure  PP 6,400
 SETCURSOR(Cursor:Wait)
OPEN(VentanaInicializadora)
ACCEPT
  IF EVENT() = Event:OpenWindow
Luego el open Window de la misma ventana coloque siguiente código.

Código: Seleccionar todo

!Este codigo va en el init, Open Files Pp7,800
 Acerca1() ! Llamando Splah  
    POST(EVENT:CloseWindow)
  END
END
CLOSE(VentanaInicializadora )
SETCURSOR()
Con esto termino mi primer truquito, compile su sistema, que de cierto le debe haber quedado súper bien.

Control para la notificación de una factura impresa
Ahora le voy agregar a nuestro sistema de facturación un control para la notificación de una Factura Impresa, para hacer esto debemos entrar a nuestro diccionario y en la tabla de factura creamos un nuevo campo llamado ControlImpresion sería un Long(1) luego, grabe y déle convert a la tabla de factura para que asuma los cambio, volvamos a nuestra aplicación.
Ahora vamos al reporte de la factura, si ya lo tiene hecho le recomiendo mejor que se cree otro botón de reporte para que haga otra copia, Para que coloque los códigos de lugar en el nuevo reporte. Este código yo lo voy a poner en puntos legancy, ya usted lo puede reubicar donde mejor le parezca, para eso me voy al botón del menú y seleccionó el icono de legancy, ahí pongo los códigos, así como se observan la imagen.
Imagen
luego ubicamos el primer punto, After Opening Reporte, ahí colocamos este código.

Código: Seleccionar todo

!After Opening Reporte
FAC:ControlImpresion=1
Put(Factura)
Thiswindow.reset(true)
Luego en el segundo punto, befero Opening the Window colocamos el otro código, este es el que hace la notificación de impresión.

Código: Seleccionar todo

!Before Opening the Window
If FAC:ControlImpresion=>1 Then
 Message('Este Nro. de Factura  ya fue Impreso','Aviso de Impresion',ICON:HAND)
 RETURN Level:Notify
End !if
Ahora compile su aplicación, debe crear una factura para probar su reporte, para ver si su truquito le quedó bien, si es así debió, estar como se observa en la imagen.
Imagen

Control para saber si una factura es Original o es una copia
Ahora a nuestro sistema le agregaré un control, para saber si una factura es original o es una copia. En varios foros de clarión es visto haciendo esta misma pregunta sobre este tema, en la mayoría está sin repuesta o con una respuesta a media.
¿Cómo saber que una factura en un reporte es original o una copia?.
Hoy quiero dar una repuesta clara y precisa a este tema, no te desespere solo les pido que sean humildes y sigan los pasos.


Aclaración Importante
Para que no se confunda con el punto anteriormente descrito,Control de notificación de factura impresa, con este nuevo control que voy a crear, les recomiendo que deben crear otro botón de reporte y hacer una copia del anterior reporte de factura, por favor a esta copia quíteles los códigos que utilizo anteriormente, con esto ahorramos tiempo y comenzamos desde cero, para que se puedan ver los efectos.

Comencemos a crear el nuevo control de original o copia en una factura. Para hacer esto vamos a utilizar los campos anteriores que utilizamos en el punto anterior, este campo fue ControlImpresion sería Long(1).

Al nuevo botón de reporte yo lo voy a llamar “otro Reporte”, y le agrego una copia del anterior reporte, les voy a quitar los códigos que utilice anteriormente en el reporte, luego voy a crear un campo de memoria global llamado Glo:reporte sería un long (1),Al procedimiento lo voy a llamar OtroReporte. Ahora en el aceptar del botón, en el Control event handling, alter generanted source, aquí colocamos el siguiente código.

Código: Seleccionar todo

!Control Reporte
FAC:ControlImpresion = FAC:NumeroFactura
If  Glo:Reporte=1
    FAC:ControlImpresion+=1
end
ThisWindow.Reset(TRUE)
Creando los campos de memoria local en el reporte
Ahora entramos al reporte y creamos tres campos de memoria local,
Loc:MensajeImpresion String (70) ! Despliega mensaje de original o copia
Loc:NoImpresion long (3) ! Contador de Impresión
Loc:Veces String(8) ! Mensaje de veces

Luego de haber creado estos campos, entonces entramos en embeds, en el Window manager (Reporte Manager) en el init initialized the procedure aquí coloque el siguiente código.

Código: Seleccionar todo

!El Init, inicializando procedimiento
FAC:ControlImpresion = FAC:ControlImpresion +1
Put(Factura)
ThisWindow.reset(true)
Luego en el mismo punto váyase hasta el TakeRecord(PROCEDURE(),Bytes, VIRTUAL en la Priodad 450 coloque el siguiente código.

Código: Seleccionar todo

  !Mesanje de Impresion
IF  FAC:ControlImpresion = 1
    Report$?Loc:MensajeImpresion  {prop:hide} =true
    Report$?Vece{prop:hide} =true
    MensajeImpresion = ' Esta Salida es Original'
 Else
     MensajeImpresion = 'Esta Salida es una Copia se ha Impreso'
    Vece='Veces'
End
IF SAL:ControlImpresion = 1
    NoImpresion = 0
ELSE
   NoImpresion =  SAL:ControlImpresion
END
Ahora ponga los campos de memoria locales en reporte, mensaje, NoImpresion y veces en una misma línea, así se como se muestra en la siguiente imagen, en la línea roja.
Imagen
Si usted siguió los pasos tal como fueron descrito de seguro que su reporte quedó como
Se muestra la siguiente imagen
Imagen
Termino aquí este truquito.

Un Procedimiento de Membresía
Yo no se como usted lo puede llamar en su país, en mi país yo lo llamo procedimiento de membresía, es aquel donde se guardan los datos de un negocio, esos datos son:
El nombre, el Eslogan, la Dirección, el Sector Barrio, la Ciudad y los Teléfonos.
Para eso creo un procedimiento de un solo registro para guarda esta información. Usted quizás se pregunte que importancia tiene esto, tiene una gran importancia por que guarda los datos relacionado con la empresa, ya con los datos guardado podemos ponerlos en todos los reportes del sistema.
Ahora voy hacer este truquito para que ustedes tengan una idea, por favor lo invito una vez más a que siga los pasos.

1- Crea estructura de tabla Membresía
Primeramente volvemos al diccionario de datos y creamos ahí una tabla que llamaremos Membresía.
Con la siguiente estructura que puede ser así o como a usted le guste.
Titulo1 String(100)
Titulo2 String(100)
Titulo3 String(100)
Titulo4 String(60)
Titulo5 String(100)
Titulo6 String(100)

También puede ser este modelo, de otra manera de hacer la membresía.

Nombre empresa String(100)
Eslogan Stringo(150) ¡Un para guardar el slogan
Dirección String(100)
SectorBario String(50)
Ciudad String(50)
Email: String(100)
Telefonos String(100)

Si usted quiere le pone una llave aunque sea al primer campo, si desea la puede dejar así, que le va a funcionar mucho mejor. Ahora guarde su diccionario váyase a la aplicación.
2-Creando Procedimiento Membresía
Ahora entramos al menú de nuestro sistema de facturación y creamos un opción llamada Configuraciones en esta creamos un item llamado Membresía, grabamos
Y diseñamos el procedimiento usando la tabla Membresía.

3- Modificando una tabla con un único registro
Si ya hizo su diseño y creo un browse con su formulario, así como se muestra en la siguiente imagen.

Imagen
Yo le recomiendo que borre el browse y conserve el formulario por que con él es que vamos trabajar. Ahora vamos a crear un procedimiento para modificar una tabla con solo registro, pero primero debemos colocar el formulario en el procedimiento
Donde iba el Browse y desde ahí modifíquelo a su gusto talvez le quedo así como se observa en la imagen.
Imagen
4- Colocándoles los códigos al formulario
Ahora procedemos a colocarles los códigos de lugar a este procedimientos, entramos en el embids de la ventana y nos vamos al Window manager,en el Init de la misma en el primer punto que dice “Enter Procedure scope” Prioridad 4,900 ahí ponemos este código.

Código: Seleccionar todo

GlobalRequest = ChangeRecord
Luego mas abajo en el Open Files coloque este otro código

Código: Seleccionar todo

!Inicializando tabla Membresia
Set(Membresia)
IF access:Membresia.Next()
  access:Membresia.Insert()
END
Ahora yo le recomiendo que compile su aplicación, que le agregue datos, guarde la información, pruebe saliendo del sistema y vuelva entrar y consulte haber si los datos todavía siguen iguales ahí, tal vez le quedo así como se observa en la imagen.
Imagen
5- Agregando los datos de membresía a un reporte o una Ventana
Ahora quiero enseñarle a poner los datos de la tabla membresía a un reporte, o a una ventana, solo lo voy hacer para el reporte, usted se encarga de ponerlos en la ventana es el mismo procedimientos para ambos.
Lo Primero que debemos hacer es entrar al reporte y poner la tabla membresía en el esquemático en otra tabla. Luego entramos al reporte en la parte de encabezado ahí
Colocamos los campos de dicha tabla, así como se observa en la imagen.
Imagen.
Ahora guarde los cambio hecho en su reporte y vayamos a colocar los códigos necesarios, hay varios punto donde usted puede poner este código, puede ser el Window Manager, en el Init, Open files, y también el Open PROCEDURE(*Windw, pWindow,<*Window pwoner),Virtual, aqui functiona muy bien para ventana. Yo en lo personal me gusta poner este código en el Next del reporte sería así:
Next (PROCEDURE(), Byts,Virtual después del parent, este código se coloca en todos los reporte que interviene en su sistema.

Código: Seleccionar todo

!Inicializando Membresía
SET(Membresía)
Access:Membresia.Next()
Si siguió cada pasos de seguro que le quedo súper bien, ahora compile nuevamente y pruebe su reporte haber como le quedó, excelente, así como se observa en la siguiente imagen.
Imagen

CONTINUARA

En mi próxima entrega estaré hablando con el tema: Creando Vistas en tabla tps de clarion, será uno de los mejores post que he publicado, por que les cambiará el estilo de hacer consultas en tablas con clarion.

Que Dios continué bendiciendo su vida y recuerden,
Que Cristo murio por todos nosotros y un dia nos quiere ver en su reino.


Bendiciones
Ing. R. Pacheco
Analista Programador
Pachecoramon@hotmail.com, Skype:pachecoramon
Santo Domingo, Rep. Dominicana
Para cualquier consulta rápida: hacerla por WhatApp al 1 347-6159 US


HDMadeira
Al nivel de RZ
Mensajes: 306
Registrado: Dom Feb 06, 2011 10:02 pm
Ubicación: Trelew, Chubut, Argentina
Contactar:

Re: Edit in place, agregándoles más trucos (Parte VI)

Mensaje por HDMadeira » Lun Abr 25, 2011 11:11 pm

Te pasate Ramoncito....!!!

R.Pacheco
Al nivel de RZ
Mensajes: 367
Registrado: Lun Feb 07, 2011 4:45 pm
Ubicación: Santo Domingo,Rep.Dominicana
Contactar:

Re: Edit in place, agregándoles más trucos (Parte VI)

Mensaje por R.Pacheco » Mar Abr 26, 2011 11:49 am

Que pasó mi
Hermano Daniel
Dame tu critica seran bien recibidas.

Recibe
Bendiciones
Ing. R. Pacheco
Analista Programador
Pachecoramon@hotmail.com, Skype:pachecoramon
Santo Domingo, Rep. Dominicana
Para cualquier consulta rápida: hacerla por WhatApp al 1 347-6159 US

HDMadeira
Al nivel de RZ
Mensajes: 306
Registrado: Dom Feb 06, 2011 10:02 pm
Ubicación: Trelew, Chubut, Argentina
Contactar:

Re: Edit in place, agregándoles más trucos (Parte VI)

Mensaje por HDMadeira » Mié Abr 27, 2011 12:17 am

Perfecto Ramon, te has tomado un buen trabajo para cada post...
Mi agradecimiento en nombre de los colegas ...

Saludos

Daniel

educarma
Novato
Mensajes: 29
Registrado: Dom Feb 06, 2011 11:37 pm
Contactar:

Re: Edit in place, agregándoles más trucos (Parte VI)

Mensaje por educarma » Mar May 10, 2011 12:34 am

Ramón, es muy bueno el trabajo que has echo, esto va a enriquecer mucho el contenido del foro.
Mis felicitaciones..

Avatar de Usuario
martinq
Al nivel de RZ
Mensajes: 128
Registrado: Dom Feb 06, 2011 9:43 pm
Ubicación: Montevideo - Uruguay
Contactar:

Re: Edit in place, agregándoles más trucos (Parte VI)

Mensaje por martinq » Mié May 25, 2011 6:35 pm

Impecable Ramón ! Estamos a la espera del tuturial sobre las Vistas con Clarion.

Saludos !

R.Pacheco
Al nivel de RZ
Mensajes: 367
Registrado: Lun Feb 07, 2011 4:45 pm
Ubicación: Santo Domingo,Rep.Dominicana
Contactar:

Re: Edit in place, agregándoles más trucos (Parte VI)

Mensaje por R.Pacheco » Jue May 26, 2011 12:37 am

Hola
Mi Hermano

La proxima semana si Dios quieres, estaré publicando ese tema
es tenido muchos trabajo, ademas estoy dando chance de
que avancen un poco en su aprendizaje con los demas temas, para no
no dar todos de golpe, sino pasos a pasos.

No se deseperen que ya viene

Recibe muchas bendiciones
Ing. R. Pacheco
Analista Programador
Pachecoramon@hotmail.com, Skype:pachecoramon
Santo Domingo, Rep. Dominicana
Para cualquier consulta rápida: hacerla por WhatApp al 1 347-6159 US

CWeidl
Novato
Mensajes: 47
Registrado: Mié Abr 16, 2014 8:23 pm
Ubicación: Buenos Aires - Argentina
Contactar:

Re: Edit in place, agregándoles más trucos (Parte VI)

Mensaje por CWeidl » Lun Jul 11, 2016 11:42 pm

Muy buen trabajo y colaboración. Felicitaciones y gracias.
Saludos

Carlos


Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 14 invitados