Error visual basic

Cuando intento eliminar algún dato de la tabla me sale este error:
Error de servidor en la aplicación '/'.
No se puede convertir un objeto de tipo 'System. String' al tipo 'System. Data. DataSet'.
Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.
Detalles de la excepción: System. InvalidCastException: No se puede convertir un objeto de tipo 'System. String' al tipo 'System. Data. DataSet'.
Error de código fuente:
Línea 13: Dim ds As New DataSet Línea 14: Dim destinatario As New datos Línea 15: ds = destinatario.Deletedestinatario(Val(txtelidestinatario.Text)) Línea 16: End Sub Línea 17: End Class
Archivo de origen: C:\Users\Mauro\Desktop\Proyecto Alfa\Projects\proyecto\proyecto\EliDestinatario.aspx.vb Línea: 15
Seguimiento de la pila:
[InvalidCastException: No se puede convertir un objeto de tipo 'System.String' al tipo 'System.Data.DataSet'.] proyecto.EliDestinatario.cmdeliminar_Click(Object sender, EventArgs e) in C:\Users\Mauro\Desktop\Proyecto Alfa\Projects\proyecto\proyecto\EliDestinatario.aspx.vb:15 System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110 System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565
Información de versión: Versión de Microsoft .NET Framework:2.0.50727.4961; Versión ASP.NET:2.0.50727.4955
Y se va a la aplicación y me señala esta linea de código que esta en el botón:
ds = destinatario.Deletedestinatario(Val(txtelidestinatario.Text)) y lo cambie asi y tampoco: ds = destinatario.Deletedestinatario (txtelidestinatario.Text).
¿Qué podrá ser?

2 Respuestas

Respuesta
1
Ahí está el error "'System.String' al tipo 'System.Data.DataSet'." es decir, le pasas cadena a un DataSet.
Muéstrame la linea que se cae.
Hola.
Después de intenatr eliminar un dato sale el error y señala esta liena:
ds = destinatario.Deletedestinatario(Val(txtelidestinatario.Text))
Seguido de esto: No se puede convertir un objeto de tipo 'System.String' al tipo 'System. Data.DataSet'.
Gracias..
Muéstrame la función "Deletedestinatario".
Hola..
Este es el código:
Function Deletedestinatario(ByVal codigo As Integer)
Dim conMyData As SqlConnection
Dim strSql As String
strSql = "Delete from destinatario where codigo like '%" & codigo & "%'"
'Conexión a la base de datos
conMyData = New SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("StrCon").ConnectionString)
Try 'Control de errores
conMyData.Open()
'crea y ejecuta la consulta al sqldataadapter que devuelve registros
Dim sda As SqlDataAdapter = New SqlDataAdapter(strSql, conMyData)
'crea un nuevo dataset vacio
Dim ds As DataSet = New DataSet
sda.Fill(ds)
conMyData.Close()
Return ds
Catch ex As Exception 'Se produce error en el uso del procedimiento
Dim err As String
err = ex.Message
Return err
End Try
End Function
Lo que te pasa aquí que esa función devuelve un error, y al error ser una cadena (String) y tu lo estás asignando a DS que debe ser una variable DataSet (RecordSet) se genera el error.
Para trabajar con errores dentro de un Try Catch, debes producir el error con Throw New como te mostré en la otra pregunta (de las miles que me haces).
Cambia el código del Carch por Throw New como te mostré.
Luego de cambiar eso, el sistema dará un error al hacer ds = destinatario.Deletedestinatario(Val(txtelidestinatario.Text)) y me dices que es.
Respuesta
1
El error dice que estas devolviendo una cadena o sea un dato de tipo String y lo quieres almacenar en una dataset. Verifica esto
Supongo que el método Deletedestinatario devuelve un dato de tipo string y la variable ds es de tipo dataset
Hola..
Gracias por la pronta respuesta:
Mi pregunta es como lo cambio ya que lo que quiero es iliminar un dato
¿Y me aaroja este error?
El problema es la lógica que estés aplicando a tu programa, no te pued decir como lo cambias, ¿lo qué se me ocurre es porque le asignas el valos de Deletedestinatario a un dataset?
Allí esta tu respuesta
Hola.. Como seria entonces erl código para elinar, ¿yo tengo este como lo harías tu?
Mil gracias..
Protected Sub cmdeliminar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles cmdeliminar.Click
Dim ds As New DataSet
Dim destinatario As New datos
ds = destinatario.Deletedestinatario(Val(txtelidestinatario.Text))
End Sub..
Function Deletedestinatario(ByVal codigo As Integer)
Dim conMyData As SqlConnection
Dim strSql As String
strSql = "Delete from destinatario where codigo like '%" & codigo & "%'"
'Conexión a la base de datos
conMyData = New SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("StrCon").ConnectionString)
Try 'Control de errores
conMyData.Open()
'crea y ejecuta la consulta al sqldataadapter que devuelve registros
Dim sda As SqlDataAdapter = New SqlDataAdapter(strSql, conMyData)
'crea un nuevo dataset vacio
Dim ds As DataSet = New DataSet
sda.Fill(ds)
conMyData.Close()
Return ds
Catch ex As Exception 'Se produce error en el uso del procedimiento
Dim err As String
err = ex.Message
Return err
End Try
Revisa que es lo que deseas hacer después que se ejecute el método de eliminar, en eso es lo que debes pensar y revisar para poder corregir el método y saber que devuelves cuando sepas que devuelves del método en vez de la variable de tipo datatset debes colocar una variable del mismo tipo que se devueleve en el método de borrado.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas