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

Clases relacionadas en VB.net !!!

Estas en el tema de Clases relacionadas en VB.net !!! en el foro de .NET en Foros del Web. Hola Sr(es). aqui nuevamente publicando un nuevo tema para dar ideas acerca de las dudas que tengo. Gracias de antemano. Bueno el tema es que ...
  #1 (permalink)  
Antiguo 06/06/2012, 07:00
Avatar de junior1920  
Fecha de Ingreso: noviembre-2010
Ubicación: Tumán
Mensajes: 77
Antigüedad: 13 años, 5 meses
Puntos: 1
Exclamación Clases relacionadas en VB.net !!!

Hola Sr(es). aqui nuevamente publicando un nuevo tema para dar ideas acerca de las dudas que tengo. Gracias de antemano.
Bueno el tema es que tengo 2 tablas categorias y subcategorias:
Código SQL:
Ver original
  1. CREATE TABLE categoria(
  2. idcat serial PRIMARY KEY,
  3. nom_cat CHARACTER(50),
  4. desc_cat text)
  5.  
  6. CREATE TABLE subcategoria(
  7. idsubcat serial PRIMARY KEY,
  8. nomsub_cat CHARACTER(60),
  9. idcat INTEGER,
  10. CONSTRAINT subcatego_idcat_fkey FOREIGN KEY (idcat)
  11.       REFERENCES categoria (idcat) MATCH SIMPLE
  12.       ON UPDATE NO ACTION ON DELETE NO ACTION
  13. )

esos atributos de las dos tablas los tengo en diferentes clases
clase categoria
Código vb:
Ver original
  1. Imports System.Collections.Generic
  2. Imports System.Linq
  3. Imports System.Text
  4. Namespace Entities
  5. Public Class categoriaEntities
  6.     Private idcat As Integer
  7.     Private nom_cat As String
  8.     Private desc_cat As String
  9.     '--------------------------
  10.     Public Property gidcat
  11.         Get
  12.             Return idcat
  13.         End Get
  14.         Set(ByVal value)
  15.             idcat=value
  16.         End Set
  17.     End Property
  18.     '--------------------------
  19.     Public Property gnom_cat
  20.         Get
  21.             Return nom_cat
  22.         End Get
  23.         Set(ByVal value)
  24.             nom_cat=value
  25.         End Set
  26.     End Property
  27.     '--------------------------
  28.     Public Property gdesc_cat
  29.         Get
  30.             return desc_cat
  31.         End Get
  32.         Set(ByVal value)
  33.             desc_cat=value
  34.         End Set
  35.     End Property
  36.     '--------------------------
  37. End Class
  38. End Namespace

y la tabla subcategoria en esta clase
Código vb:
Ver original
  1. Imports System.Collections.Generic
  2. Imports System.Linq
  3. Imports System.Text
  4. Namespace Entities
  5. Public Class subcategoriaEntities
  6.     Private idsubcat As Integer
  7.     Private idcat As Integer
  8.     Private nomsub_cat As String
  9.     '--------------------------
  10.     Public Property gidsubcat
  11.         Get
  12.             Return idsubcat
  13.         End Get
  14.         Set(ByVal value)
  15.             idsubcat=value
  16.         End Set
  17.     End Property
  18.     '--------------------------
  19.     Public Property gidcat
  20.         Get
  21.             Return idcat
  22.         End Get
  23.         Set(ByVal value)
  24.             idcat=value
  25.         End Set
  26.     End Property
  27.     '--------------------------
  28.     Public Property gnomsub_cat
  29.         Get
  30.             return nomsub_cat
  31.         End Get
  32.         Set(ByVal value)
  33.             nomsub_cat=value
  34.         End Set
  35.     End Property
  36.     '--------------------------
  37. End Class
  38. End Namespace

Bien ahora mi problema es como hacer para que esas dos clases me retorne los valores que yo requiero, po ejemplo quiero hacer un listado de subcategorias con sus categorias e intente hacerlo pero no me da resultado lo enlaze haciendo que el idcat sea tipo entidad y tambien intente hacer esto public overridable.....
pero eso me enviaba un valor en blanco

Ahora lo que realmente quiero es usar esas dos calses para poder hacer un listado y mostra en un datagridview por que algunos dicen crea vistas y yo pienso y entonces por o para que se crean clases con los campos de tabla o acaso solo se hace eso para hacer insert,update o delete
esa es mi duda por el momento...
  #2 (permalink)  
Antiguo 06/06/2012, 10:33
 
Fecha de Ingreso: febrero-2010
Ubicación: México
Mensajes: 738
Antigüedad: 14 años, 2 meses
Puntos: 37
Respuesta: Clases relacionadas en VB.net !!!

Que tal junior1920

Muestra el código del "enlace" que comentas que haces para poder apoyarte mejor ya que en las clases que muestras simplemente tienes métodos get y set.

Saludos.
__________________
http://ka0stj.wordpress.com/
  #3 (permalink)  
Antiguo 06/06/2012, 11:47
Avatar de junior1920  
Fecha de Ingreso: noviembre-2010
Ubicación: Tumán
Mensajes: 77
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Clases relacionadas en VB.net !!!

Hola KaOstj:
Si aqui el codigo de la clase clsconexion

Código vb:
Ver original
  1. Imports System.Data
  2. Imports System.Data.SqlClient
  3. Imports Npgsql
  4. Imports System.Configuration
  5. Imports System.Linq
  6. Imports System.Text
  7. Public Class clsconexion
  8.  Public cCon As String="Host=localhost;Port=5432;Database=bodega;User Id=postgres;Password=admin;"
  9. ' Public conexion as New NpgsqlConnection(cCon)
  10. Public Function Strconectado() as String
  11.     Try
  12.      cCon="Host=localhost;Port=5432;Database=bodega;User Id=postgres;Password=admin;"
  13.      Catch  ex As Exception
  14.        MsgBox(ex.Message)
  15.      End Try
  16.      return cCon
  17.     End Function
  18. '   Public Function desconectado()
  19. '    Try
  20. '       dim conexion= New NpgsqlConnection(cCon)
  21. '       If conexion.State=ConnectionState.Open Then
  22. '          conexion.Close()
  23. '          Return True
  24. '       Else
  25. '          Return False
  26. '       End If
  27. '    Catch ex As Exception
  28. '       MsgBox(ex.Message)
  29. '       Return False
  30. '    End Try
  31. '   End Function
  32. End Class

Aqui el code de la clase Gest_subcat

Código vb:
Ver original
  1. Imports System
  2. imports Npgsql
  3. Imports System.Collections.Generic
  4. Imports System.Linq
  5. Imports System.Text
  6. Imports System.Data.SqlClient
  7. Imports System.Configuration
  8. Imports BodegaEntities.Entities
  9. imports libreria_conexion
  10. Imports System.Data
  11. Public Class Gest_subcat
  12.     Private Shared Function Convertirsubcat(ByVal reader As IDataReader) As subcategoriaEntities
  13.         Dim subcategoria As New subcategoriaEntities()
  14.         subcategoria.gidsubcat = Convert.ToInt32(reader("idsubcat"))
  15.         subcategoria.gnomsub_cat = lTrim(RTrim(Convert.ToString(reader("nomsub_cat"))))
  16.         subcategoria.gidcat=Convert.ToInt32(reader("idcat"))
  17.         Return subcategoria
  18.     End Function
  19.         Public Shared Function list_subcat() As List(Of subcategoriaEntities )
  20.          Dim lista As New List(Of subcategoriaEntities)()
  21.          Try
  22.          Dim subcategoria As subcategoriaEntities = Nothing
  23.          Dim categoria As categoriaEntities=Nothing
  24.          Dim Myconexion As New clsconexion
  25.          Dim objconexion As New NpgsqlConnection(Myconexion.Strconectado)
  26.          objconexion.Open()
  27.          Dim Sql As New String("Select idsubcat,nomsub_cat,idcat FROM subcategoria order by nomsub_cat,idsubcat asc")
  28.          Dim cmd As New NpgsqlCommand(Sql,objconexion)
  29.          Dim reader as NpgsqlDataReader=cmd.ExecuteReader()
  30.          'msgbox(objconexion.State)
  31.         If(reader.HasRows=True) Then
  32.             While reader.Read()
  33.                 lista.Add(Convertirsubcat(reader))
  34.                 'categoria=Convertircategoria(reader)
  35.            End While
  36.          objconexion.Close()
  37.          Else
  38.             MsgBox("Mensaje",vbCritical,"No existen registros")
  39.          end if
  40.          Catch ex As Exception
  41.             MsgBox(ex.Message)
  42.          Finally
  43.             NpgsqlConnection.ClearAllPools()
  44.         End Try
  45.         Return lista
  46.     End Function
  47. End Class

y Aqui el del formulario donde listo las subcategorias:

Código vb:
Ver original
  1. imports System.Data
  2. Imports libreria_datos
  3. imports BodegaEntities.Entities
  4. Public Partial Class listsubcat
  5.     Public Sub New()
  6.         ' The Me.InitializeComponent call is required for Windows Forms designer support.
  7.         Me.InitializeComponent()
  8.        
  9.         '
  10.         ' TODO : Add constructor code after InitializeComponents
  11.         '
  12.     End Sub
  13.     Private Sub cargarsubcat()
  14.         Try
  15.         dgwlistsubcat.DataSource=Gest_subcat.list_subcat()
  16.         Catch ex As Exception
  17.         End Try
  18.     End Sub
  19.    
  20.     Sub ListsubcatLoad(sender As Object, e As EventArgs)
  21.         cargarsubcat()
  22.     End Sub
  23. End Class

Bueno a simple vista en el datagridview se muesta asi:
idsubcat | nomsub_cat | idcat |
1 Detergente 1

Ahora la verdad quiero mostrar esto:
idsubcat | nomsub_cat | nom_cat |
1 Detergente Abarrotes

Pero la clase subcategoriaEntitie solo tiene el atributo idcat; lo que quiero es saber si existe la posibilidad de enlazar el atributo nom_cat de categoriaEntities y poder mostrar solo el campo que voy a utilizar que en este caso sería q me retorne el atributo "gnom_cat" de la clase categoriaEntities
Por que si inserto otro atributo no puede ser por q estas clases representan a las tablas y deben de estar tal y como estan las tablas o me equivoco

Y estoy haciendo en sharpdevelop y postgres desarrollando en 3 capas
  #4 (permalink)  
Antiguo 06/06/2012, 11:52
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: Clases relacionadas en VB.net !!!

Hola junior1920, eso lo puedes lograr haciendo un inner join en tu consulta con la otra tabla que creaste :

Código SQL:
Ver original
  1. SELECT s.idsubcat,s.nomsub_cat,c.nom_cat FROM subcategoria s INNER JOIN categoria c ON s.idcat=c.idcat ORDER BY s.nomsub_cat,c.nom_cat ASC
Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #5 (permalink)  
Antiguo 06/06/2012, 12:57
Avatar de junior1920  
Fecha de Ingreso: noviembre-2010
Ubicación: Tumán
Mensajes: 77
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Clases relacionadas en VB.net !!!

Aquaventus ya hice eso pero no podria hacer el inner join con el atributo seleccionado nom_cat
ya que ese atributo le pertenece a la clase categoriaEntities y en la clase subcategoriaEntities hay el atributo idcat que es de tipo integer y esta representado como la FK que pertenece a la tabla categoria
  #6 (permalink)  
Antiguo 07/06/2012, 09:29
 
Fecha de Ingreso: junio-2012
Mensajes: 1
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Clases relacionadas en VB.net !!!

Hola junior1920 haber siguiendo tu esquema y hasta donde he podido entenderte puedes hacer lo siguiente. Tenemos las tres capas Entidad, Acceso Datos Y Presentacion.

CAPA ENTIDAD
Clase: categoriaEntities

Cita:

Public Class categoriaEntities
Private idcat As Integer
Private nom_cat As String
Private desc_cat As String
'--------------------------
Public Property gidcat()
Get
Return idcat
End Get
Set(ByVal value)
idcat = value
End Set
End Property
'--------------------------
Public Property gnom_cat()
Get
Return nom_cat
End Get
Set(ByVal value)
nom_cat = value
End Set
End Property
'--------------------------
Public Property gdesc_cat()
Get
Return desc_cat
End Get
Set(ByVal value)
desc_cat = value
End Set
End Property
'--------------------------
End Class
Clase: subcategoriaEntities

Cita:
Public Class subcategoriaEntities
Private idsubcat As Integer
Private idcat As Integer
Private nomsub_cat As String
'--------------------------
Public Property gidsubcat()
Get
Return idsubcat
End Get
Set(ByVal value)
idsubcat = value
End Set
End Property
'--------------------------
Public Property gidcat()
Get
Return idcat
End Get
Set(ByVal value)
idcat = value
End Set
End Property
'--------------------------
Public Property gnomsub_cat()
Get
Return nomsub_cat
End Get
Set(ByVal value)
nomsub_cat = value
End Set
End Property

'*********** AGREGAMOS UNA ASOCIACION A LA CLASE categoriaEntities *************
Private _categoriaEntities As categoriaEntities
Public Property categoriaEntities() As categoriaEntities
Get
Return _categoriaEntities
End Get
Set(ByVal value As categoriaEntities)
_categoriaEntities = value
End Set
End Property
'--------------------------

End Class


CAPA ACCESO DATOS

Clase: CategoriaAD

Cita:
Imports System.Data.SqlClient
Public Class CategoriaAD
Private miConexion As String = "Data Source=.; Initial Catalog =PruebasLocales; Integrated Security=true;"
Public Function BuscarPorID(ByVal idcat As Integer) As categoriaEntities
Try
Using cn As SqlConnection = New SqlConnection(miConexion)
Dim cmd As SqlCommand = New SqlCommand("SELECT idcat, nom_cat, desc_cat FROM categoriaEntities WHERE idcat = @idcat;", cn)
cmd.Parameters.Add("@idcat", SqlDbType.Int).Value = idcat
cn.Open()

Dim dr As SqlDataReader = cmd.ExecuteReader()
Dim iCategoriaEntities As categoriaEntities = New categoriaEntities()

If dr.Read() Then
iCategoriaEntities.gidcat = dr("idcat")
iCategoriaEntities.gnom_cat = dr("nom_cat")
iCategoriaEntities.gdesc_cat = dr("desc_cat")
End If
Return iCategoriaEntities
End Using
Catch ex As Exception
Throw New Exception("Error: CategoriaEntities-->BuscarPorID() " + ex.Message, ex)
End Try
End Function
End Class
Clase: SubCategoriaAD

Cita:
Imports System.Data.SqlClient

Public Class SubCategoriaAD
Private miConexion As String = "Data Source=.; Initial Catalog =PruebasLocales; Integrated Security=true;"
Public Function Listar(ByVal nombre As String) As List(Of subcategoriaEntities)
Try
Dim subcategoriaEntitiesLT As New List(Of subcategoriaEntities)

Using cn As SqlConnection = New SqlConnection(miConexion)
Dim cmd As SqlCommand = New SqlCommand("SELECT * FROM subcategoriaEntities WHERE nomsub_cat LIKE @nomsub_cat;", cn)
cmd.Parameters.Add("@nomsub_cat", SqlDbType.VarChar, 50).Value = "%" + nombre + "%"
cmd.CommandType = CommandType.Text

cn.Open()
Dim iCategoriaEntitiesAD As CategoriaAD = New CategoriaAD()

Dim dr As SqlDataReader = cmd.ExecuteReader()
While dr.Read()
Dim iSubcategoriaEntities As subcategoriaEntities = New subcategoriaEntities
iSubcategoriaEntities.gidsubcat = dr("idsubcat")
iSubcategoriaEntities.gnomsub_cat = dr("nomsub_cat").ToString()
iSubcategoriaEntities.gidcat = dr("idcat")
iSubcategoriaEntities.categoriaEntities = iCategoriaEntitiesAD.BuscarPorID(iSubcategoriaEnti ties.gidcat)
subcategoriaEntitiesLT.Add(iSubcategoriaEntities)
End While
End Using

Return subcategoriaEntitiesLT

Catch ex As Exception
Throw New Exception("Error: SubcategoriaEntities-->Listar() " + ex.Message, ex)
End Try
End Function
End Class



CAPA LOGICA NEGOCIO

Clase: CategoriaLN
Cita:
Public Class CategoriaLN
Private iCategoriaEntitiesAD As CategoriaAD
Sub New()
iCategoriaEntitiesAD = New CategoriaAD()
End Sub
Public Function BuscarPorID(ByVal idcat As Integer) As categoriaEntities
Return iCategoriaEntitiesAD.BuscarPorID(idcat)
End Function

End Class
Clase: SubCategoriaLN
Cita:
Public Class SubCategoriaLN

Private iSubcategoriaEntitiesAD As SubCategoriaAD
Sub New()
iSubcategoriaEntitiesAD = New SubCategoriaAD()
End Sub
Public Function Listar(ByVal nombre As String) As List(Of subcategoriaEntities)
Return iSubcategoriaEntitiesAD.Listar(nombre)
End Function

End Class



CAPA PRESENTACION


Cita:


Private Sub btnListar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnListar.Click
Try
Dim iSubcategoriaEntitiesLN As SubCategoriaLN = New SubCategoriaLN
Dim SubcategoriaEntitiesLT As List(Of subcategoriaEntities) = iSubcategoriaEntitiesLN.Listar(TextBox1.Text.Trim( ))
Dim Query = (From a In SubcategoriaEntitiesLT Select New With {.Codigo = a.gidsubcat, .SubCategoria = a.gnomsub_cat, .CategoriaID = a.gidcat, .Categoria = a.categoriaEntities.gnom_cat}).ToList()
DataGridView1.DataSource = Query

Catch ex As Exception
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try

End Sub
  #7 (permalink)  
Antiguo 07/06/2012, 09:33
Avatar de junior1920  
Fecha de Ingreso: noviembre-2010
Ubicación: Tumán
Mensajes: 77
Antigüedad: 13 años, 5 meses
Puntos: 1
Exclamación Respuesta: Clases relacionadas en VB.net !!!

Alguien tiene otra idea de como se podría hacer ....!!!

Etiquetas: clases, relacionadas, tabla
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 05:17.