Foros del Web » Programación para mayores de 30 ;) » .NET »

Problemas con Store Procedure

Estas en el tema de Problemas con Store Procedure en el foro de .NET en Foros del Web. Hola a todos!!! Soy un principiante en .NET y como tengo mucha fuerza de voluntad me asignaron la tarea de armar una base de datos ...
  #1 (permalink)  
Antiguo 25/07/2006, 13:31
Avatar de motinuza  
Fecha de Ingreso: julio-2006
Mensajes: 15
Antigüedad: 18 años, 4 meses
Puntos: 0
Problemas con Store Procedure

Hola a todos!!!
Soy un principiante en .NET y como tengo mucha fuerza de voluntad me asignaron la tarea de armar una base de datos de personal en SQL que sea visualizada desde el Browser por los usuarios. Hasta ahi todo bien...
El problema es que necesito enviar a un Store Procedure el número de Legajo de una persona y obtener varios datos de la misma como respuesta
Desde ya muchas gracias a todos!!!
  #2 (permalink)  
Antiguo 25/07/2006, 14:33
Avatar de royrojas  
Fecha de Ingreso: diciembre-2004
Mensajes: 458
Antigüedad: 19 años, 11 meses
Puntos: 3
aqui esta una clase muy completa para manejo de conexiones a la bd y tambien soporta procedimientos almacenados.
ahi esta el codigo de ejemplo tambien para descargar.

http://www.dotnetcr.com/index.aspx?I...clase-conexion

a los admins si gustan pueden poner el ejemplo en los faqs del sitio.
__________________
roy rojas
Programación en Español: DotNetcr.com
  #3 (permalink)  
Antiguo 25/07/2006, 17:30
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 9 meses
Puntos: 50
que milagro que andas por aqui royrojas , en cuanto a tu ejemplo no se ve mal la implementación que tienes aunque como comentario se puede optimizar todavía más ya que no hay manejo de caching en objetos, y en vez de usar los nombres de los tipos (if, then, etc) se pueden trabajar directamente con interfaces, etc, es por ello que te recomiendo que te bajes el Enterprise Library de microsoft y le heches un ojo al de datos para que veas a lo que me refiero.

Cita:
a los admins si gustan pueden poner el ejemplo en los faqs del sitio.
cualquier puede colocar una faq man.

Saludos y cualquier comentario será bienvenido
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #4 (permalink)  
Antiguo 26/07/2006, 23:05
Avatar de royrojas  
Fecha de Ingreso: diciembre-2004
Mensajes: 458
Antigüedad: 19 años, 11 meses
Puntos: 3
si hace tiempo que no entraba aqui, realmente tengo poco tiempo libre.

claro que se puede optimizar mas, pero vamos poco a poco, no se van a tirar todas las monedas en la primera jugada.

hay que ir demostrando los avances del codigo, por eso es que vamos asi.
__________________
roy rojas
Programación en Español: DotNetcr.com
  #5 (permalink)  
Antiguo 27/07/2006, 02:16
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 10 meses
Puntos: 9
Hola motinuza,
Encontré esto que quizá te sirva:
http://www.codeproject.com/aspnet/MyDbViewerSite.asp
Si no tienes unas especificaciones muy concretas claro.
Saludos.
__________________
..:: moNTeZIon ::..
  #6 (permalink)  
Antiguo 27/07/2006, 17:21
Avatar de motinuza  
Fecha de Ingreso: julio-2006
Mensajes: 15
Antigüedad: 18 años, 4 meses
Puntos: 0
Exclamación

Les agradezco a todos pero no entiendo. Tal vez por ser nuevo en el tema no expresé mis dudas correctamente. Acá les mando el Store Procedure y el ASPX a ver si me pueden dar una mano.
Sigo obteniendo un solo parametro de salida y NO 2 o mas como necesito.
Gracias nuevamente!

CREATE procedure GetlastName_Gus2

@LEGAJO_PERSONAL varchar (7),
@nombres varchar (20) output,
@apellido varchar (20) output
as
select @nombres =nombres, @apellido = apellido
from personal
where LEGAJO_PERSONAL = @LEGAJO_PERSONAL
GO
************************************************** **************
<%@ Page Language="VB" %>
<%@ import Namespace="System.Data.SqlClient" %>
<%@ import Namespace="System.Data" %>
<%
Dim conPubs As SqlConnection
Dim cmdLastName As SqlCommand
Dim parmLastName As SqlParameter
Dim parmLP As SqlParameter

Dim strLastName As String

conPubs = New SqlConnection( "Server=localhost;database=PERSONAL_DE_COMUNICACIO NES;Integrated Security=SSPI")
cmdLastName = New SqlCommand( "GetlastName_Gus2", conPubs )
cmdLastName.CommandType = CommandType.StoredProcedure

' Parametro de entrada del LP
cmdLastName.Parameters.Add( "@LEGAJO_PERSONAL", "20557" )

' Parametro de salida del Nombre
parmLastName = cmdLastName.Parameters.Add( "@Nombres", SqlDbType.Varchar )
parmLastName.Size = 40
parmLastName.Direction = ParameterDirection.Output

' Parametro de salida del Apellido
parmLastName = cmdLastName.Parameters.Add( "@Apellido", SqlDbType.Varchar )
parmLastName.Size = 40
parmLastName.Direction = ParameterDirection.Output

' Ejecuta el Comando
conPubs.Open()
cmdLastName.ExecuteNonQuery()

' Recupera el valor de salida del Parametro
If Not IsDBNull( cmdLastName.Parameters( "@Apellido" ).Value ) Then
strLastName = cmdLastName.Parameters( "@Nombres" ).Value
Else
strLastName = "DESCONOCIDO !!!"
End If
conPubs.Close()
%>

El apellido es <%=strLastName%>
  #7 (permalink)  
Antiguo 27/07/2006, 21:50
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 9 meses
Puntos: 50
la cuestion es que solo estás creando un solo objeto parámetro y debes crear uno por cada uno que necesites

haciendo unos pequeños ajustes a tu código quedaría de la siguiente forma:

Cita:
...
...
Dim conPubs As SqlConnection
Dim cmdLastName As SqlCommand
Dim parmLP As SqlParameter

Dim parmName As New SqlParameter("@Nombres", SqlDbType.VarChar, 40)
parmName.Direction = ParameterDirection.Output
cmdLastName.Parameters.Add(parmName)

Dim parmLastName As New SqlParameter("@Apellido", SqlDbType.VarChar, 40)
parmLastName.Direction = ParameterDirection.Output
cmdLastName.Parameters.Add(parmLastName)

' Ejecuta el Comando
conPubs.Open()
cmdLastName.ExecuteNonQuery()

' Recupera el valor de salida del Parametro
If Not IsDBNull(parmLastName.Value) Then
strLastName = parmName.Value
Else
strLastName = "DESCONOCIDO !!!"
End If
conPubs.Close()
%>

El apellido es <%=strLastName%>
salu2
  #8 (permalink)  
Antiguo 28/07/2006, 14:02
Avatar de motinuza  
Fecha de Ingreso: julio-2006
Mensajes: 15
Antigüedad: 18 años, 4 meses
Puntos: 0
GRACIAS!, Pero me sigue tirando UN resultado, (el nombre) seguro que me estoy equivocando en algo, en definitiva el codigo me quedo asi:


CREATE procedure GetlastName_Gus2

@LEGAJO_PERSONAL varchar (7),
@nombres varchar (20) output,
@apellido varchar (20) output

as

select @nombres = nombres , @apellido = apellido
from personal
where LEGAJO_PERSONAL = @LEGAJO_PERSONAL
GO

************************************************

<%@ Page Language="VB" %>
<%@ import Namespace="System.Data.SqlClient" %>
<%@ import Namespace="System.Data" %>
<%
Dim conPubs As SqlConnection
Dim cmdLastName As SqlCommand
Dim parmLP As SqlParameter
Dim strLastName As String

conPubs = New SqlConnection( "Server=localhost;database=PERSONAL_DE_COMUNICACIO NES;Integrated Security=SSPI")
cmdLastName = New SqlCommand( "GetlastName_Gus2", conPubs )
cmdLastName.CommandType = CommandType.StoredProcedure

' Parametro de entrada del LP
cmdLastName.Parameters.Add( "@LEGAJO_PERSONAL", "20557" )

' 1er. Parametro de salida, Nombre
Dim parmName As New SqlParameter("@Nombres", SqlDbType.VarChar, 40)
parmName.Direction = ParameterDirection.Output
cmdLastName.Parameters.Add(parmName)

' 2do. Parametro de salida, Apellido
Dim parmLastName As New SqlParameter("@Apellido", SqlDbType.VarChar, 40)
parmLastName.Direction = ParameterDirection.Output
cmdLastName.Parameters.Add(parmLastName)

' Ejecuta el Comando
conPubs.Open()
cmdLastName.ExecuteNonQuery()

' Recupera el valor de salida del Parametro
If Not IsDBNull(parmLastName.Value) Then
strLastName = parmName.Value
Else
strLastName = "DESCONOCIDO !!!"
End If
conPubs.Close()
%>

El apellido y el nombre es <%=strLastName%>
  #9 (permalink)  
Antiguo 28/07/2006, 16:51
Avatar de lanzi  
Fecha de Ingreso: noviembre-2005
Ubicación: BUENOS AIRES
Mensajes: 55
Antigüedad: 19 años
Puntos: 0
Soy bastante nuevo en esto, pero no puede ser que haya algun problema con el SQL? qUIEN HIZO EL sTORED pROCEDURE? Fijate, quizas el problema venga por ahi...
  #10 (permalink)  
Antiguo 28/07/2006, 18:13
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 9 meses
Puntos: 50
cambia ésto:

cmdLastName.ExecuteNonQuery()

por ésto:

Cita:
Dim dr as SqlDataReader = cmdLastName.ExecuteReader()
dr.Read ()
...
  #11 (permalink)  
Antiguo 29/07/2006, 16:17
Avatar de Jorgemen  
Fecha de Ingreso: mayo-2005
Ubicación: Perú
Mensajes: 322
Antigüedad: 19 años, 6 meses
Puntos: 1
Hay un proyecto gratuito que se llama pachacamaq y que es muy bueno para aprender sobre todo esto que plantearón, hay para VB y Csharp, no recuerdo muy bien el link pero en google poniendo pachacamaq lo encuentran de seguro.
__________________
Hosting:www.codeperu.com, Trabajo en Perú: www.trabajoperuano.com
  #12 (permalink)  
Antiguo 31/07/2006, 14:24
Avatar de motinuza  
Fecha de Ingreso: julio-2006
Mensajes: 15
Antigüedad: 18 años, 4 meses
Puntos: 0
Gracias Maestros!!!... me salvaron la vida!!
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 22:17.