CREATE FUNCTION "f_digito_verificador_fv"( IN p_cedula varchar (7) )
RETURNS VARCHAR(1)
BEGIN /*FUNCION QUE HALLA EL DIGITO VERIFICADOR A PARTIR DEL NUMERO DE CEDULA - BY .:fativilla:. 2019.05.30*/
/*SET - PARAGUAY*/
DECLARE i numeric (1);
DECLARE mult numeric (1);
DECLARE valor varchar(1);
DECLARE valor_num NUMERIC (4);
DECLARE v_Digit NUMERIC (4);
DECLARE DV varchar(1);
SET i = 1 ;
SET mult=LENGTH(p_cedula)+1;
SET valor_num=0;
WHILE i <= 8 LOOP
SET valor = substring(p_cedula, i, 1);
SET valor_num= valor_num + ( cast ( valor as numeric) * mult ) ;
SET mult=mult-1;
SET i=i+1;
END LOOP ;
IF MOD (valor_num, 11)>1 THEN
SET v_digit = 11 - MOD (valor_num, 11);
ELSE
SET v_Digit = 0;
END IF;
SET DV=CAST(v_Digit AS VARCHAR(1));
RETURN "DV";
END
Sabias que si comentas un blog estas incentivando a que cada dia haya mas información que podria ser importante para tí o los demas?... :) Espero les pueda ser de utilidad el mio.
jueves, 30 de mayo de 2019
viernes, 26 de abril de 2019
Abrir Archivos con Api de Windows
1. Como primer paso declaramos la API en el Global Functions
/**********************API'S DE WINDOWS*********************///--API PARA ABRIR CARPETAS DE WINDOWS--fativilla 2019.04.25
FUNCTION long ShellExecute(ulong ihwnd,string lpszOp,string lpszFile,string lpszParams,&
string lpszDir,int wShowCmd ) LIBRARY "shell32.dll" ALIAS FOR "ShellExecuteW"
/*************************************************************/
2. Crear una Funcion, que recibirá como parametro la ruta de tipo String (funcion en mi caso de window)
//-------------------------------------------------------------------------
// Función : long gf_Ejecutar(String spRuta)
// Propósito : Ejecuta un fichero, sea lo que sea (doc, pdf, xls, mp3...)
// Parámetros : spRuta.- Ruta del fichero a ejecutar.
// Devuelve : 1.- Todo bien
// -1.- Hay error.
//-------------------------------------------------------------------------
Long lRetorno
String sError, sNulo
SetNull(sNulo)
// Se ejecuta la ruta pasada.
lRetorno = ShellExecute(Handle(this), sNulo, spRuta, sNulo, sNulo, 3)
//El último argumento es el estilo de la ventana:
//SW_HIDE 0
//SW_SHOWNORMAL 1
//SW_NORMAL 1
//SW_SHOWMINIMIZED 2
//SW_SHOWMAXIMIZED 3
//SW_MAXIMIZE 3
//SW_SHOWNOACTIVATE 4
//SW_SHOW 5
//SW_MINIMIZE 6
//SW_SHOWMINNOACTIVATE 7
//SW_SHOWNA 8
//SW_RESTORE 9
//SW_SHOWDEFAULT 10
//SW_MAX 10
IF lRetorno <= 32 THEN
// Hay error
CHOOSE CASE lRetorno
CASE 2
sError = "Fichero no encontrado"
CASE 3
sError = "Ruta no encontrada"
CASE 5
sError = "Acceso denegado"
CASE 8
sError = "Fuera de memoria"
CASE 32
sError = "DLL no encontrada"
CASE 26
sError = "A sharing violation occurred"
CASE 27
sError = "Asociación a fichero no válida o incompleta"
CASE 28
sError = "DDE Time out"
CASE 29
sError = "DDE transaction failed"
CASE 30
sError = "DDE busy"
CASE 31
sError = "No existe ninguna asociación a la extensión del fichero"
CASE 11
sError = "Invalid EXE file or error in EXE image"
CASE ELSE
sError = "Error desconocido"
END CHOOSE
Messagebox("Error..." + String(lRetorno),sError)
Return -1
END IF
// Todo bien.
Return 1
3. Finalmente podemos llamar a nuestra funcion desde donde necesitemos
gf_executar("path" )Fuente: http://picarpiezas.blogspot.com/2011/04/como-ejecutar-cualquier-fichero-en.html
miércoles, 18 de enero de 2017
Sumar Mes a una Fecha en Sybase
SELECT MONTHS( CAST( TODAY()
AS DATETIME ), 5).
Ejemplo: Si tenemos la fecha '05/05/1990' lo siguiente nos devuelve '05/10/1990'.
AS DATETIME ), 5).
Ejemplo: Si tenemos la fecha '05/05/1990' lo siguiente nos devuelve '05/10/1990'.
miércoles, 21 de septiembre de 2016
Recuperar datos de campo ubicado en un datawindow Composite
Me sucedió que quise recuperar un dato que se encontraba en un datawindow Composite, lo hice de la siguiente manera:
ls_prome=cdw_listado.object.dw_3.object.compute_5[1]
Donde: cdw_listado es el datawindow "normal" y
dw_3 es el datawindow composite.
Espero haya sido de provecho.
ls_prome=cdw_listado.object.dw_3.object.compute_5[1]
Donde: cdw_listado es el datawindow "normal" y
dw_3 es el datawindow composite.
Espero haya sido de provecho.
sábado, 15 de febrero de 2014
Utilidades De las tablas SYS en SYBASE
* Estas son utilidades muy básicas, pero debido al poco material sobre esta herramienta en Español, lo comparto con todos Uds. espero que les sea de mucha utilidad como lo fué y es para mi.
- En la tabla Sysobjects podemos ver todas las tablas del sistema que nos puedan servir para hallar alguna otra información....
select * from sysobjects
1) Ver en que tablas hay un campo especifico
--> SELECT * FROM SYSTAB WHERE table_id in (select table_id
from SYSTABCOL
where COLUMN_NAME='nombre_del_campo'1.1 Listar campos de una tabla.
SELECT column_name FROM SYSCOLUMN WHERE table_id=
(SELECT table_id FROM SYSTABLE WHERE table_name = 'vnt_ventas_cab')
2) Ver tablas del sistema
--> select * from SYSTAB3) Funciones y palabras reservadas
--> select * from SYSCAPABILITIES
4) Todos los triggers
--> select * from SYSTRIGGERS
5) Procedimientos y Funciones
--> select * from SYSPROCEDURE
martes, 17 de julio de 2012
Setear Impresora
Si deseamos setear un dw a una impresora que no sea la predeterminada necesariamente, una opcion es utilizar.
this.Object.DataWindow.Printer = "\\IP_de_donde_tienes_instalado\Nombre_de_la_impresora"
this.print()
this.Object.DataWindow.Printer = "\\IP_de_donde_tienes_instalado\Nombre_de_la_impresora"
this.print()
jueves, 5 de julio de 2012
Contar caracteres que se va ingresando a un campo
Esta funcionalidad nos sirve para ir contando los caracteres que ingresamos en un campo, algo similar a lo que nos ofrecen los telefonos móviles cuando estamos escribiendo un mensaje de texto.
Primeramente creamos un objeto tipo text, en mi caso lo llamo t_contar y le asigno un valor 0.
caracteres ingresados*/
if this.getcolumnname() = 'comentario' then
if this.object.t_contar.text='0' then this.TriggerEvent('ue_lencomentarios')
/*si presionamos teclas de arriba, abajo, costados, no hacer nada*/
if KeyDown(KeyLeftArrow!) or KeyDown(KeyUpArrow!) or KeyDown(KeyRightArrow!) or KeyDown(KeyDownArrow!) then return
If KeyDown(KeyBack!) or KeyDown(KeyDelete!) then //si borramos caracteres, restamos sino sumamos
this.object.t_contar.text=string(long(this.object.t_contar.text)-1)
else
this.object.t_contar.text=string(long(this.object.t_contar.text)+1)
end if
if long(this.object.t_contar.text)=290 then messagebox( "Atención", "Esta llegando al límite del texto!",Exclamation!)
end if
Primeramente creamos un objeto tipo text, en mi caso lo llamo t_contar y le asigno un valor 0.
Creo un Evento que lo llamo ue_lencampo, donde cuento cuantos carateres tiene el campo, no hace falta que el evento reciba parametros y tampoco que lo retorne, yo lo hice en un evento nuevo, uds. ya veran si crean o lo hacen en alguno que ya lo tengan, todo depende de la aplicabilidad que se le dará.
Luego creamos un Evento, al cual yo le llamo ue_key con las siguientes caracteristicas y en el colocamos el scrip que continua
/*trabaja en conjunto con el evento ue_lencomentarios para ir mostrando cantidad de caracteres ingresados*/
if this.getcolumnname() = 'comentario' then
if this.object.t_contar.text='0' then this.TriggerEvent('ue_lencomentarios')
/*si presionamos teclas de arriba, abajo, costados, no hacer nada*/
if KeyDown(KeyLeftArrow!) or KeyDown(KeyUpArrow!) or KeyDown(KeyRightArrow!) or KeyDown(KeyDownArrow!) then return
If KeyDown(KeyBack!) or KeyDown(KeyDelete!) then //si borramos caracteres, restamos sino sumamos
this.object.t_contar.text=string(long(this.object.t_contar.text)-1)
else
this.object.t_contar.text=string(long(this.object.t_contar.text)+1)
end if
if long(this.object.t_contar.text)=290 then messagebox( "Atención", "Esta llegando al límite del texto!",Exclamation!)
end if
*No olvides alimentarme con un comentario y/o calificación.
Suscribirse a:
Entradas (Atom)
