Hola un saludo
Quiero mostrarte un error que no le hallo solución acerca del retorno de una función como un datatable que se carga con valores de una base de datos.
Primero aclaro que se el porque debe ser el error, lo que nose es el como solucionarlo.
El error ocurre porque quiero recibir los datos de una consulta en mi BD pero cargarlos en un datatable y retornarlo haciendo uso de las famosas 3 capas: Formulario-Logica-Datos.
Entonces el Formulario pide los datos a la funcion que se encuentra en la Logica, de ésta forma:
Public Class frmBienvenido
Private Fun_Administrador As New Gestor_Administrador
Private Registro_Administrador As New BindingSource 'Obtiene la el registro del administrador si ya ha sido registrado
Private Sub frmBienvenido_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Iniciar_Sesion()
End Sub
Sub Iniciar_Sesion()
Registro_Administrador.DataSource = Fun_Administrador.Datos_Administrador()
If Registro_Administrador.Count > 0 Then
btnIniciarSesion.Enabled = True
Else
btnIniciarSesion.Enabled = False
End If
End Sub
End class
Ahora donde llamo la función es en :
Registro_Administrador.DataSource = Fun_Administrador.Datos_Administrador()
La función que se llama seria ésta:
Public class
Private usuario as usuarioDAO
Public Function Verificar_Administrador() As DataTable 'Devuelve el registro del administrador
Return usuario.select_administrador '<==== El error está al retornar, pero el codigo está bien, sólo que parece que no admite
End Function
End class
Como es mi clase logica y no voy a realizar una transaccion compleja pues solo llamo directamente a la clase en Datos para que me devuelva el datatable y luego que ésta misma se lo devuelva al formulario. Acceso a datos :
Imports System.Data.SqlClient
Public Class usuarioDAO
Private db As New Conexion_BD
Private Comando As SqlCommand
Public Function select_administrador() As DataTable
Dim Tabla As New DataTable
Try
Dim da As New SqlDataAdapter("SELECT * FROM USUARIO WHERE tipo_usuario = 'Administrador'", db.Conexion)
da.Fill(Tabla)
Catch ex As Exception
MsgBox(ex.Message)
End Try
Return Tabla
End Function
End class
Ahora para ahorrarles el buscar errores, el error no es la consulta ni la conexion, es por el retorno en la clase de Logica; si incluyo la conexion dentro de esta clase junto con el codigo de busqueda obviamente, entonces funciona perfectamente el programa, pero como pido dos retornos de tipo datatable (Formulario pide a Logica y Logica pide a Datos un datatable) entonces me tira el error :
ENTONCES, alguien sabe como conservar el orden de mis 3 capas y que me retorne el datatable normalmente?.
Gracias por leer