Buen dia....
Tengo este problema.. He desarrollado una clase conexion a una base d datos y dentro de ella tengo una funcion que valida el usuario. Mi tabla Usuario en sql tiene los siguiente campos Cod_usuario, Usuario, Password. Mi estore procedure ejecutado del mismo sql esta bien, pero cuando quiero hacerlo de delphi no se llega a ejecutar. Quisiera saber que parte esta mal. Aca les pongo una parte del store. y la mi clase conexion.
Mi Clase Conexion en Delphi
Código Delphi
[-]CConexion = Class
private
vBD : string;
published
function of_dbconnnect ():boolean;
function uf_valida_usuario (Usuario,Password:string): integer;
constructor create ();
destructor destruye();
end;
implementation
function CConexion.of_dbconnnect : boolean;
var O_conexion : TADOConnection;
begin
try
O_conexion := TADOConnection.Create(nil);
O_conexion.ConnectionString:=vBD;
O_conexion.Provider:='SQLOLEDB.1';
O_conexion.Connected:=true;
if O_conexion.Connected
then
begin
Showmessage('Conexion Establecida1');
result:=true;
end;
Except
on EDatabaseError Do begin
Showmessage ('Conexion rota');
result:= False;
end;
end;
end;
function CConexion.uf_valida_usuario(Usuario,Password:string):integer;
var Commando:TADOCommand;
begin
Commando:=TADOCommand.Create(nil);
commando.ConnectionString:=vBD;
commando.CommandType:= cmdStoredProc;
commando.CommandText:= 'ValidaUsuario;1';
commando.Parameters.Clear;
commando.Parameters.CreateParameter('@Usuario', ftString , pdInput, 50, Usuario);
commando.Parameters.CreateParameter('@Password', FtString, pdInput, 50, Password);
commando.Parameters.CreateParameter('@Existe', FtBoolean, pdOutput, 2, 0);
commando.Execute;
end;
constructor CConexion.create;
begin
vBD:='Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=BDPrueba';
end;
destructor CConexion.destruye;
begin
end;
Este es mi Store Procedure ValidarUsuario
Código SQL
[-]CREATE PROCEDURE ValidaUsuario
@Usuario char(50) ,
@Password char(50),
@Existe bit output
AS
Set @Existe = 0
If (SELECT count(1) From usuarios(nolock) WHERE Usuario = @usuario and Password = @Password ) > 0
Begin
Set @Existe = 1
print 'Usuario Correcto'
End
Else
begin
print 'Usuario Incorrecto'
End
Y este es mi codigo que uso en la interfaz en donde llamo a mi clase.
Código Delphi
[-]procedure TForm1.Button1Click(Sender: TObject);
var O_Conexion : CConexion;
begin
O_Conexion:= CCOnexion.create;
O_Conexion.of_dbconnnect;
if O_Conexion.uf_valida_usuario(edit1.Text,edit2.Text)= 1
then Showmessage ('Usuario y contraseña correcta')
else if O_Conexion.uf_valida_usuario(edit1.Text,edit2.Text)= 0 then showmessage ('Usuario o contraseña incorrecta');
end;
Mi problema

es que no se ejecuta mi funcion Uf_valida_usuario y no se si esta bien enlazado con los parametros y con mi store.
De antemano gracias por sus respuestas.
Atte
Joseph Obando
