CLR: .Net / Mono / Boo / Otros CLR > ASP .NET
Procedimientos Almacenados
ErWillem:
Ahora vuelvo pero con otro dilema distinto...
Estoy trabajando con SQL2000 y Visual Studio.Net 2003, especificamente con visual basic en asp.net ...
Ahora tengo el siguiente dilema... Estamos trabajando con procedimientos almacenados, y las funciones de buscar sirven a la perfeccion
El problema esta en que cuando ejecuto algun procedimiento que sea para agregar modificar un registro en especifico no se reflejan en la tabla...
Pensando que podia ser alguna validacion en la pagina me dedique a colocarle mensajes a todo lo importante de manera que falle lo que falle me de un mensaje para saber donde estaba el problema, pero el detalle es que se ejecuta la pagina como si nada y nunca me da mensaje de error... Si alguien sabe que podría ser les agradezco su ayuda.
Sin embargo a mi se me ocurre que podría ser el metodo de coneccion que utilice, asi que si alguno puede orientarme o aconsejarme de cual metodo es mas adecuado para manipular procedimientos almacenados pues acepto sugerencias...
NOTA PERSONAL: Cuando ya estoy :comp: de lo mas feliz me consigo otro problema :( :unsure: :angry: hasta que me proboca agarrar a la computadora y picarla en pedazitos :lightsabre:
Gracias por su paciencia ;) :rolleyes: :P
hellscream:
Muestra código.
xcx:
Hola, yo estoy trabajando los procedimientos almacenados con clases, algo similar a esto, y no he tenido ningun atado para recuperar datos u otra cosa...
--- Código: Text --- Imports SystemImports System.DataImports System.Data.OleDBImports System.IOImports System.Data.SqlClientNamespace Identificacion Public Class Perfil Public rut As Integer Public usuNombre As String Public usuEmail As String... Public accion As Integer Public Function ObtenerDetalles(ByVal dperfil As Perfil, ByVal detalles As Perfil) As Perfil Dim Conn As New OleDbConnection("Provider=SQLOLEDB.1;Password=;Persist Security Info=True;User ID=usuario;Initial Catalog=bd;Data Source=ipservidor") Dim CMD As New OleDbCommand("nombreprocalmacenado", Conn) Dim valor As OleDbDataReader CMD.CommandType = CommandType.StoredProcedure 'Rut del usuario Dim Param As New OleDbParameter("@usuRut", OleDbType.Integer) Param.Direction = ParameterDirection.Input Param.Value = dperfil.rut CMD.Parameters.Add(Param) 'Nombre del usuario Param = New OleDbParameter("@usuNombre", OleDbType.VarChar) Param.Direction = ParameterDirection.Input Param.Value = dperfil.usuNombre CMD.Parameters.Add(Param) 'Email del usuario Param = New OleDbParameter("@usuEmail", OleDbType.VarChar) Param.Direction = ParameterDirection.Input Param.Value = dperfil.usuEmail CMD.Parameters.Add(Param)... Try CMD.Connection.Open() valor = CMD.ExecuteReader Catch Ex As OleDbException Throw Ex End Try While valor.Read() If valor.GetValue(valor.GetOrdinal("usuRut")) = dperfil.rut Then detalles.rut = valor.GetValue(valor.GetOrdinal("usuRut")) detalles.usuNombre = valor.GetValue(valor.GetOrdinal("usuNombre")) detalles.usuEmail = valor.GetValue(valor.GetOrdinal("usuEmail")) detalles.idPerfilWeb = valor.GetValue(valor.GetOrdinal("idPerfilWeb")) If Not IsDBNull(valor.GetValue(valor.GetOrdinal("idPerfilOirs"))) Then detalles.idPerfilOirs = valor.GetValue(valor.GetOrdinal("idPerfilOirs")) End If detalles.idDpto = valor.GetValue(valor.GetOrdinal("idDpto")) detalles.bitActivo = valor.GetValue(valor.GetOrdinal("bitActivo")) Exit While End If End While CMD.Connection.Close() Return detalles End Function ... End ClassEnd Namespace
ErWillem:
Disculpen que no respondi antes, justamente ayer solucioné el problema y tampoco me llego informe de que tuviera respuesta.
Para variar siempre es lo mas estupido, un pequeño conflicto con los tipos de datos :whistling:
Respecto a xbx, debes ser mas claro en el codigo, especificar el tipo de error, o almenos explica que pretendes hacer con la funcion ObtenerDetalles porque "a simple vista" da la impresion que los ingresas desde dperfil al procedimiento, despues no se que hace el procedimiento pero asumo que ingresa o extrae los datos, los comparas con dperfil y los guardas luego en detalles, de paso esa funcion pertenece a la clase asi que debe existir otro objeto de tipo Perfil y me parece algo absurdo tanto movimiento de datos... No le veo mucho sentido, se mas especifico.
xcx:
bueno es xcx y no xbx, pero voy a pensar en esa posibilidad.. :D
Respecto a la clase, pues es una clase y tiene varios métodos, yo solo coloqué ese porque era el mas largo y era mas explicativo. pues el procedimiento ese tiene 12 parámetros, pero yo los acorte para este ejemplo, tampoco era la idea que lo posteara completo porque no venía al caso, no había para qué mostrar los otros métodos para validar y eso si solo necesitabas como invocar un procedimiento almacenado y saber como obtener los detalles. Al menos eso creo yo.
Respecto a especificar el tipo de error te refieres al trow? no lo se ocupar bien, aun soy algo novato en .net mi fuerte es java. así que hay varias cosas incompletas por lo mismo...
Bueno la idea del procedimiento en esa parte, es justamente obtener detalles y devolver un objeto de tipo perfil. pues recibe un objeto de tipo perfil, el procedimiento almacenado se encarga de verificar si existe o no y si es así me devuelve el dato, el cual extraigo y lo asigno a un objeto detalles de tipo perfil y lo devuelvo para usarlo en otro lado de la aplicación. eso.
Lo encuentro claro, no le veo complejidad.. el asunto de si hay muchas sentencias es porque no se de que otra manera llamar el procedimiento almacenado en .net o de como pasarle los parámetros mas claros o que ocupe menos líneas. Recuerda que soy novato aun en .net, ya lo he dicho en otros post...
Ahora si tienes tiempo y me puedes hacer un ejemplo de como se debiera hacer correctamente te lo agradecería, yo solo te intenté ayudar pues es lo único que encontre para manejar procedimientos almacenados.. ^_^. :hola:
Navegación
[#] Página Siguiente
Ir a la versión completa