Ejecucion de Store Procedure en Power Builder

Quiero ejecutar un store procedure, creado en una DB en SQL Server, pero que se dispare al hacer clic en un botón, ¿cómo lo ejecuto?. Ademas quiero escanear una imagen, entonces, necesito saber como accedo al programa del escáner para que se ejecute cuando haga clic en algún botón.

1 Respuesta

Respuesta
1
A ver si esto te ayuda hay 2 ejemplos.
En oracle:
//Dado este procedimiento:
Create or replace procedure sp_mes_numerador (entrada out number,
Fecha OUT DATE, Usuario IN VARCHAR2, PC IN VARCHAR2,
Serie IN NUMBER)
//... cuerpo del procedure
END SP_MES_NUMERADOR;
//Que recibe 2 argumentos a través de los cuales saca datos y 3 argumentos que necesita internamente
//usas la siguiente sintaxis
//(nombre_var_en_el_procedimiento => :variable_entrada)
DECLARE nueva_entrada PROCEDURE FOR SP_MES_NUMERADOR
(usuario => :lstr_usuario, PC => :lstr_equipo, serie => :llng_idtipotramite) USING SQLCA;
//Fíjate que no pongo las variables de salida y ademas uso => porque los args. De salida están a la izquierda de los de entrada
EXECUTE nueva_entrada;
lint_resultado = SQLCA.sqlcode
IF lint_resultado = -1 THEN
ROLLBACK Using SQLCA;
return messageBox("Error", "Error en el procedimiento.", StopSign!)
END IF
FETCH nueva_entrada INTO :llng_nrolibrodiario, :ldt_fechaentrada;
lint_resultado = SQLCA.sqlcode
IF lint_resultado = -1 THEN
ROLLBACK Using SQLCA;
return messageBox("Error", "Error en el procedimiento.", StopSign!)
END IF
//Si llegaste acá, tienes en :llng_nrolibrodiario, :ldt_fechaentrada los valores que devolvió el procedure
--------------------
DECLARE personas PROCEDURE FOR personas_uid(:ls_cuit00,:li_cuit01,:ll_cuit02,:li_cuit03,&
:ll_id_cod_doc,:ll_numero,:ls_apellido,:ls_nombre,:apellido_materno,:ls_carac_telefono,:ll_numero_telefono, &
:ll_cod_calle_leg,:ls_nom_calle_leg,:ll_numero_calle_leg,:ls_letra_parcela_leg,:ls_letra_numero_leg,&
li_piso_leg,:li_depto_leg,:ls_mono_leg,:ls_obs_leg,:ll_cod_postal_leg,:ll_sub_postal_leg,
null,:ll_id_pais_dec,null,:ll_id_profesion,:ls_sexo,:ld_fecha_nac,:ld_fecha_deceso,:ll_id_estado_civil,&
:ll_id_pais_nacionalidad,:li_tipo_op) USING ae_transaccion;
IF ae_transaccion.SQlCode <> 0 THEN
f_mensaje_error_detalle(ae_transaccion.SqlDbcode,ae_transaccion, "Persona", "Declare personas_uid")
CLOSE personas;
return -1
END IF
EXECUTE personas;
IF ae_transaccion.SQlCode <> 0 THEN //execute personas;
f_mensaje_error_detalle(ae_transaccion.SqlDbcode,ae_transaccion, "Persona", "Execute personas_uid")
CLOSE personas;
return -1
ELSE//execute personas;
FETCH personas INTO :ll_resultado;
IF ae_transaccion.SqlCode <> 0 THEN //fetch
f_mensaje_error_detalle(ae_transaccion.SqlDbcode,ae_transaccion, "Persona", "Fetch personas_uid")
CLOSE personas;
return -1
ELSE //fetch
//OK
commit;
END IF
END IF
-----------
Para lo del scanner:
1. si lo queres abrir solamente: usa RUN("c:\xxx\tu_programa.exe")
Si quedan dudas escribí.
Gracias por tus respuestas que me brindas, están ok, pero lo que necesito, ademas, es llamar a un store procedure desde el power builder, pasándole dos variables, las cuales las ingreso en dos singenlineEdit, lo que pasa es que no reconce a estos singlelineEdit a pesar de que los he asignado a variables. Respecto al escáner lo que necesito es desde una aplicación creada en Power Builder poder escanear ciertas imamgenes y poder guardarlas y utilizarlas luego en reportes e impresiones, es como un campo más de una base de datos pero estoy pensando guarlas en el HD y solo tener las direcciones de ubicación de las imágenes para que la DB no se haga muy pesada. Gracias otra vez
con los sle:
Tienes que tomar el valor de lo que tienen en la propiedad text.
Fíjate en el debug si las variables están tomando los valores.
Lo que vas a tener que hacer es colocar en tu aplicación un componente ocx al scanner que te permita interactuar con el mismo. Ademas otro componente para ver las imágenes.
Si las quieres mostrar en las dw podes usar controles picture.
Si quedan dudas escribí.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas