Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Ejecutar un Stored Precedure de SQL

Estas en el tema de Ejecutar un Stored Precedure de SQL en el foro de Visual Basic clásico en Foros del Web. Compañeros,, Mi duda es la sigueinte.. Tengo un procedimiento almacenado en una base de datos SQL, ya creado, ahora, necesito ejecutarlo y tomar las variables ...
  #1 (permalink)  
Antiguo 30/11/2005, 05:52
 
Fecha de Ingreso: noviembre-2003
Ubicación: Costa Rica
Mensajes: 85
Antigüedad: 20 años, 5 meses
Puntos: 0
Ejecutar un Stored Precedure de SQL

Compañeros,, Mi duda es la sigueinte..
Tengo un procedimiento almacenado en una base de datos SQL, ya creado, ahora, necesito ejecutarlo y tomar las variables que me devuelve para verificar un login.. O sea, la consulta toma el usuario y password, lo verifica y si es igual sigue, sino, sale.

El procedimiento almacenado se llama [userlogin] @username @pass

las variables en el form se llaman txtusuario y txtpassword, el asunto es que en los lugares que he consultado, en el codigo se crea el procedimiento y luego se ejecuta. Yo solo quiero ejecutarlo.

Muchas Gracias por su ayuda..

Alejandro
  #2 (permalink)  
Antiguo 30/11/2005, 06:10
Avatar de lop7  
Fecha de Ingreso: junio-2005
Ubicación: portuguesa (Venezuela)
Mensajes: 187
Antigüedad: 18 años, 10 meses
Puntos: 1
hola...

Dim str As String
str = "exec userlogin '" & txtusuario & "','" & txtpassword & "'"

cnn1.Execute (str )

claro deberias declarar las variables y eso pero esto es la forma como deberias pasarlo

saludos...
nos vmos...
__________________
A quien dices un secreto le entregas tu libertad :si:
  #3 (permalink)  
Antiguo 01/12/2005, 16:13
 
Fecha de Ingreso: noviembre-2003
Ubicación: Costa Rica
Mensajes: 85
Antigüedad: 20 años, 5 meses
Puntos: 0
Gracias por tu respuesta..
Veamos, pues si y no. O sea. Si me funciona porque no me da error, pero como valido los campos en la tabla contra las variables que se almacenan al digitar el usuario su login y password. Creo que el error es mio, pues no expuse el asunto con mucha claridad.
Ahora, el procedimiento almacenado es este:

[UserLogin]

@User NVARCHAR(20),

@Pass NVARCHAR(20)

Los campos en el Form se llaman txtusuario y txtpassword. la conexion es esta:

cnn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=PhoneSystem; password=bet4aces; Initial Catalog=Development;Data Source=SANTS3C"

ahora.. la conexion la efectuo en el momento de cargar el form del login,
el procedimiento se debe ejecutar en el momento de presionar el boton login, o sea:

Private Sub cmdAceptar_Click()
If txtUsuario = "" Or txtPassword = "" Then
MsgBox "Faltan Datos", vbExclamation
Exit Sub
End If
sqlstr = "exec userlogin '" & txtUsuario & "','" & txtPassword & "'"

cnn.Execute (sqlstr)

Hasta aqui, todo bien, pero el valor que trae txtusuario es el que se digito y como lo valido contra el campo de la base de datos??

Muchas gracias por su respuesta y disculpen por mi ignorancia.

saludos

Alejandro
  #4 (permalink)  
Antiguo 02/12/2005, 07:05
Avatar de lop7  
Fecha de Ingreso: junio-2005
Ubicación: portuguesa (Venezuela)
Mensajes: 187
Antigüedad: 18 años, 10 meses
Puntos: 1
pana pero mustra el codigo del storedprocedure
__________________
A quien dices un secreto le entregas tu libertad :si:
  #5 (permalink)  
Antiguo 03/12/2005, 11:22
 
Fecha de Ingreso: noviembre-2003
Ubicación: Costa Rica
Mensajes: 85
Antigüedad: 20 años, 5 meses
Puntos: 0
el Codigo del Stored Procedure

Gracias de nuevo por tu respuesta, el codigo es este
IF EXISTS (SELECT * FROM dbo.SYSOBJECTS WHERE ID = OBJECT_ID(N'[dbo].[UserLogin]') AND OBJECTPROPERTY(ID, N'IsProcedure') = 1)
DROP PROCEDURE [dbo].[UserLogin]
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [UserLogin]
@User NVARCHAR(20),
@Pass NVARCHAR(20)
WITH ENCRYPTION
AS

SET NOCOUNT ON
IF EXISTS
(
SELECT COUNT(*) FROM Users
WHERE Login = @User AND UserPass = @Pass AND Status = 1
HAVING COUNT(*) > 0
)
BEGIN
SELECT COUNT(*) AS Error,
UserID ID,
Login 'User',
UserPass Password
FROM Users
WHERE Login = @User
GROUP BY
UserID,
Login,
UserPass
RETURN
END

ELSE

BEGIN
SELECT COUNT (*) AS Error,
0 ID,
'' 'User',
'' Password
FROM Users
WHERE Login = @User
AND UserPass = @Pass
RETURN
END

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
GRANT EXECUTE ON [dbo].[UserLogin] TO [Phone]
GO
  #6 (permalink)  
Antiguo 05/12/2005, 07:54
Avatar de lop7  
Fecha de Ingreso: junio-2005
Ubicación: portuguesa (Venezuela)
Mensajes: 187
Antigüedad: 18 años, 10 meses
Puntos: 1
prueba asi...

Prueba asi...
Código:
Private Sub cmdAceptar_Click()
	If txtUsuario = "" Or txtPassword = "" Then
		MsgBox "Faltan Datos", vbExclamation
		Exit Sub

	End If
	cnn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=PhoneSystem; password=bet4aces; Initial Catalog=Development;Data Source=SANTS3C"
	sqlstr = "exec userlogin '" & txtUsuario & "','" & txtPassword & "'"

	rec.Open sqlstr, cnn, adOpenStatic, , adCmdText

	If Not rec.EOF Then 
        	continua cargando el programa
        else
	        msgbox "No tiene permiso"
	end if
	rec.close
	cnn.close
end sub
__________________________________________________ ____________________
pero en ves de hacer el stored procedure todo lo hiciera en VB
Código:
sqlstr="SELECT COUNT(*) FROM Users WHERE Login = '" & txtUsuario & "','" & txtPassword & "'"
	rec.Open sqlstr, cnn, adOpenStatic, , adCmdText
__________________________________________________ _____________________________________
procedimiento yo lo aria asi

Código:
IF EXISTS (SELECT * FROM dbo.SYSOBJECTS WHERE ID = OBJECT_ID(N'[dbo].[UserLogin]') AND OBJECTPROPERTY(ID, N'IsProcedure') = 1)
DROP PROCEDURE [dbo].[UserLogin]
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [UserLogin]
@User NVARCHAR(20),
@Pass NVARCHAR(20)
WITH ENCRYPTION
AS

SET NOCOUNT ON

SELECT COUNT(*) FROM Users
WHERE Login = @User AND UserPass = @Pass

GO
porq lo q quieres es verificar si el login y password coresponde con el q esta en la BD...haces la consulta y con esto
Código:
If Not rec.EOF Then
verificas si existe o no
saludos...
nos vmos...
__________________
A quien dices un secreto le entregas tu libertad :si:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:03.