Procedimiento SQL en Visual Basic

chikitita
29 de Noviembre del 2004
Hola a todos.

He realizado una aplicación en VB 6.0 y al pulsar un botón hace una conexión con una base de datos de oracle y le mando unos parámetros para ejecutar un procedimiento SQL.

Dim Cn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Dim qryStoredProc As New ADODB.Command


qryStoredProc(0) = ANO_FACTURA
qryStoredProc(1) = MES_FACTURA
qryStoredProc(2) = ANO_MES
qryStoredProc.Execute

El procedimiento en si, me indica el importe de las facturas y dependiento d si son negativas o no, realiza un proceso o no.

Mediante un dbms me muestra los valores y me avisa cuando son negativas (por lo k no realiza el procedimiento).

El tema está en que me han pedido, que cuando haya una factura negativa además de ignorarla le avise al usuario de que existe una factura negativa, y yo no sé como hacer desde el procedimiento que saque un error en visual basic o en el fichero de errores.

Si pueden ayudarme se lo agradecería bastante.

Gracias de antemano

Rodolfo Reyes
29 de Noviembre del 2004
Yo lo que haria sería agregarle un nuevo parametro al procedimiento el cual sería una especie de banera. Y el procedimiento en oracle cambia el balor de esta bandera dependiendo si el resultado es positvo o negativo.

Asi al consultar el valor que te devuelve en Visul Basic, puedes sacar la advertencia desde Visul Basic.

Recuerdate que un procedimiento almacenado se esta ejecutando en el servidor, y si logras que el mismo procedimiento saque un mensaje, lo sacaria en el monitor del servidor.

Isa? Islas
29 de Noviembre del 2004
Rodolfo

No es tan asi la cosa, solo si se usa la instruccion PRINT.

Se esta definiendo un RECORDSET dentro de VB, cualquier cosa que REGRESE el store, que no sea un PRINT, sera alojado en el RECORDSET.

Seria tan simple como que el procedimiento regresara la bandera (bolean) y en VB preguntar por el primera posicion del RECORDSET y tomar la decision correpondiente a dicha bandera.

CREATE PROCEDURE pr_ExisteCliente
@ClienteID INT
AS
SET NOCOUNT ON
IF EXISTS(SELECT CLIENTEID FROM CLIENTE WHERE CLIENTEID = @ClienteID)
RETURN(1)
ELSE
RETURN(0)

En la primera posicion se tendria un UNO, si existe, un CERO, si no existe.

Espero haberme explicado.