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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | 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 |