Bueno os voy a dejar el código fuente de un procedimiento almacenado que se encarga de grabar los accesos de los usuarios a la aplicación.
Le pasamos tres campos de entrada y con estos datos inserta un registro en la tabla usu_accesos. Los datos de entrada son USUARIO, CLAVE y ERROR. Realiza un insert con el usuario SYSDBA, que es el root de firebird.
Procedimiento almacenado en firebird para grabar los accesos al sistema de gestión de la información
SET TERM ^ ;
CREATE PROCEDURE ACCESSOS_ALTA (
USUARIO varchar(50),
CLAVE varchar(50),
ERROR varchar(100) )
AS
begin
INSERT INTO usu_accesos (usuario, password ,error) values (:usuario,:clave ,:error);
when sqlcode -530 do
exception error_accesos_alta;
end^
SET TERM ; ^
GRANT EXECUTE
ON PROCEDURE ACCESSOS_ALTA TO SYSDBA;
Ahora paso a escribir el código fuente en visual basic.net para la llamada al procedimiento almacenado.
Rutina en vb.net para llamar al procedimiento que graba los accesos
Private Sub GrabarAccesoUsuario(Mensaje As String)
'##############################################################################################################################
'
' Inserta registros en la tabla ACCESSOS_ALTA desde un procedimiento
'
'##############################################################################################################################
Using FBconn As New FbConnection(ScSYSDBA)
Using FBcmd As New FbCommand("ACCESSOS_ALTA", FBconn)
Try
FBcmd.Connection.Open()
FBcmd.CommandType = System.Data.CommandType.StoredProcedure
FBcmd.Parameters.Add("@USUARIO", FbDbType.VarChar, 50)
FBcmd.Parameters("@USUARIO").Value = txtUsuario.Text
FBcmd.Parameters.Add("@CLAVE", FbDbType.VarChar, 50)
FBcmd.Parameters("@CLAVE").Value = txtClave.Text
FBcmd.Parameters.Add("@ERROR", FbDbType.VarChar, 100)
FBcmd.Parameters("@ERROR").Value = GetIPAddress() & Mensaje
FBcmd.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.Message)
End Try
FBcmd.Connection.Close()
End Using
End Using
End Sub
' Devuelve la ip del cliente que realiza el acceso al sistema.
Private Function GetIPAddress() As String
Dim strmyHost As String = System.Net.Dns.GetHostName
Dim strIPAddress = System.Net.Dns.GetHostEntry(strmyHost).AddressList(0).ToString()
Return strmyHost & " - " & strIPAddress & " - "
End Function