Visual Basic.NET - Error en la llamada a una fución

 
Vista:

Error en la llamada a una fución

Publicado por Cristian Saavedra (11 intervenciones) el 04/07/2018 15:57:04
Hola Miguel:

lo primero que puedo ver de tu codigo es que la funcion llamada " Public Function MaximoReg() As DataTable " este retorna un datatable y tu en esta linea: " txtId.Text = CStr(MaximoReg() + 1) “Error en la llamada” "lo que estas haciendo es convertir todo lo que esta dentro del Cstr a string pero esto no es posible ya que lo que retorna MaximoReg() no es un numero, si no que un objeto y por ende, te va a arrojar un error ya que la funcion Cstr no es capaz de interpretar este dato.

Para solucionar esto tienes 2 caminos que paso a mencionar a continuación:

1.- cambiar la funcion para que te retorne un entero que es lo que tu necesitas y seria algo asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Public Function MaximoReg() As Integer
    Try
        Dim retorno as Integer
        Dim cmd As New MySqlCommand
        cn.Open()
        cmd = New MySqlCommand("reg_max_calles")
        cmd.CommandType = CommandType.StoredProcedure
        cmd.Connection = cn
        Dim dt As New DataTable
        Dim da As New MySqlDataAdapter(cmd)
        da.Fill(dt)
 
        'Lo que se debe hacer en este paso es recorrer el datatable y obtener el dato
         For Each row As DataRow In dt.Rows
               retorno = Cint(CStr(row("NombreCampo")))
         Next
 
        Return retorno
    Catch ex As Exception
        MsgBox(ex.Message)
        Return Nothing
    Finally
        cn.Close()
    End Try
End Function

2.- Lo otro seria hacer lo mismo pero no en la funcion si no que afuera de la asignación de los datos a la variable:

1
2
3
4
5
6
7
8
9
10
Dim DataTable dt as new DataTable()
Dim retorno as Integer
 
dt = MaximoReg("Id", "Gestion", cn)
 
For Each row As DataRow In dt.Rows
    retorno = Cint(CStr(row("NombreCampo")))
Next
 
txtId.Text = CStr(retorno + 1)

Ve tu cual seria lo mas optimo para ti realizar según tus necesidades.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar