Author Topic: Ayuden a la campaña de Aprendizaje en .NET  (Read 13355 times)

0 Members and 1 Guest are viewing this topic.

Offline Darkness

  • The Communiter-
  • *
  • Posts: 2147
  • The Darkness
    • Diseño y Programaciòn Web Profesional
Re: Ayuden a la campaña de Aprendizaje en .NET
« Reply #15 on: December 17, 2008, 03:27:57 pm »
Well aki el producto terminado no es perfecto pero bueno me funka perfectamente me golpee el kko durante dos dias (Primera vez que uso .NET) pero ya vi los resultados ....

aki la img. de como me quedo el form   :yahoo:





Gracias

heee por cierto   :offtopic: 

Hace unos dias lei en este mismo foro unadiscucion aseca del potencial de VB y vi un chamaco que se hacia tantos alardes y pos que ondas pense que no iba adejar de ver un trhead hecho por el pero bueno quiza solo es paja   :rofl:

PD: ahoritita wua probar esa clase que dice el Tekun
La Muerte Simplemente es el Despertar de Un Sueño Lleno de Falsedades e hipocrecias.
"Larga Vida Al Heavy Metal"

Iron Maiden Discografia DD

Offline Juancho

  • The Communiter-
  • *
  • Posts: 1311
Re: Ayuden a la campaña de Aprendizaje en .NET
« Reply #16 on: December 17, 2008, 09:36:15 pm »
y he podido ver como algunos programadores engolosinados con el dataset.. no buscan la forma de hacerse la vida "programacion" .. mas facil... sin desaprovechar las delicias y maravillas del maldito DATASET...En sintesis... el DATASET.. no porque sea robusto.. no deja de complicarte cuando queres hacer de la programacion.. algo sencillo.... la clasesilla..

Mmm... Una pregunta.... no entendi esta part si t referis a q trabajar con le Dataset a veces c vuelve complicado o no?? Si la respuesta es Si (osea q a veces t complicas con un dataset), no entiendo como t podes complicar si en vez d utilizar un dataset, utilizas un DataSet Tipado??, El propio .NET te crea la clase con referencia a tu tabla para q todavia le manejo sea mas sencillo, y es mas si utilizas el asistente, alli mismo podes crear tus consultas y el propio Adapter t hace su clase TIpada!!

No entiendo xq dicen q a veces uno c complica la vida utilizando el DataSet....!! Bueno yo asi lo entendi con respecto a tu comentario... Sino es asi, sorry y hac caso omiso a lo q e puesto aqui!!!

<a href="http://www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/" target="_blank">
<img src="http://cache.www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/b_560x95.png" border="0" width="560" height="95" alt="" />
</a>

Offline Jonhyrey

  • Sv Full Member
  • *
  • Posts: 558
Re: Ayuden a la campaña de Aprendizaje en .NET
« Reply #17 on: December 18, 2008, 01:44:55 pm »
Mmm... Una pregunta.... no entendi esta part si t referis a q trabajar con le Dataset a veces c vuelve complicado o no?? Si la respuesta es Si (osea q a veces t complicas con un dataset), no entiendo como t podes complicar si en vez d utilizar un dataset, utilizas un DataSet Tipado??, El propio .NET te crea la clase con referencia a tu tabla para q todavia le manejo sea mas sencillo, y es mas si utilizas el asistente, alli mismo podes crear tus consultas y el propio Adapter t hace su clase TIpada!!

No entiendo xq dicen q a veces uno c complica la vida utilizando el DataSet....!! Bueno yo asi lo entendi con respecto a tu comentario... Sino es asi, sorry y hac caso omiso a lo q e puesto aqui!!!



En mi experiencia, Juancho, he aprendido que los dataset tipados en aplicaciones que manejan un gran numero de procesos complejos, no es muy conveniente. Especialmente cuando el diseño de la base de datos esta sujeto a cambios de diseño. Todo va de maravilla cuando no hay cambios importantes en las bases de datos y cuando las aplicaciones son pequeñas. Pero cuando empiezan los primeros cambios la cosa se pone dificil, porque a veces no basta con agregar un campo a la sentencia Select del tableadapter, sino que hay que eliminar el tableadapter, y empezar a agregar consulta por consulta hasta que quede con el cambio que se desea; y tambien he pasado por otros casos que me han quitado gran cantidad de tiempo porque el sistema se comportaba diferente de como yo lo habia establecido. Y al final, el problema se arreglaba reemplazando un tableadapter por otro igual ....

En una opinion muy personal, no con el animo de hacerte sentir mal o atacarte, el Dataset tipado debe utiilzarse en aplicaciones pequeñas que consten de un diseño y comportamiento sencillo. Cuando hay aplicaciones grandes, es mejor tener el control de todo y no apoyarse mucho en algunas herramientas que "Facilitan" la vida del programador incluyendo el dataset.

Saludos



Offline Juancho

  • The Communiter-
  • *
  • Posts: 1311
Re: Ayuden a la campaña de Aprendizaje en .NET
« Reply #18 on: December 18, 2008, 03:01:50 pm »
En mi experiencia, Juancho, he aprendido que los dataset tipados en aplicaciones que manejan un gran numero de procesos complejos, no es muy conveniente. Especialmente cuando el diseño de la base de datos esta sujeto a cambios de diseño. Todo va de maravilla cuando no hay cambios importantes en las bases de datos y cuando las aplicaciones son pequeñas. Pero cuando empiezan los primeros cambios la cosa se pone dificil, porque a veces no basta con agregar un campo a la sentencia Select del tableadapter, sino que hay que eliminar el tableadapter, y empezar a agregar consulta por consulta hasta que quede con el cambio que se desea; y tambien he pasado por otros casos que me han quitado gran cantidad de tiempo porque el sistema se comportaba diferente de como yo lo habia establecido. Y al final, el problema se arreglaba reemplazando un tableadapter por otro igual ....

Mmm.. m llama mucho la atencion tu punto d vista, pero poneme un ejemplo en el cual es obligatorio el cambio d diseño d una base d datos?? Por ejemplo, yo entiendo q tu problema es cuando agregas una columna a una tabla o cosas asi, es dond el DataSet Tipado ya no cumple con su tarea d faciltar las cosas al programador verdad??, Pero bueno, si es asi, siento q es problema d tu diseño d solucion!! Por eso t pregunto dame un ejemplo en el cual la mejor solucion es cmabiar el diseño d la base d datos, para el cual el DataSet Tipado sea el problema, xq sino es asi, puede ser q la solucion en la q has optado no sea la mas fiable eso d estar cambiando el diseño d tu base d datos esta raro...!

Imaginta en una empresa grand cambiando todo el diseño d la base d datos todos los dias, como q no es muy productivo, es mas tambn t pongo otro punto d vista....

tambn depend cuantos trabajen en tu aplicacion, puede ser tambn una muy buena slucion el DataSet tipado, ¿Por que?, Digamos cuando vs todas las consultas las manejas desd tu gestor, entonces en tu Diseñador de DataSet solo tendrias q arrastras y utilizar!! Q mas facil q "arrastras y soltar"??, y asi todo tu diseño o manejo d la base de datos se hac desd el gestor, porque sino, q pasaria si hacemos un cambio en la BD d diseño (asi como en tu caso), si ya esta compilado y correindo y todo lo demas, vs unicamente modificarias tu gestor de la base d datos, no propiemanet el codigo fuente d tu aplicacion, y despues venis a tu app, y solo arrastrsa digamos un cambio y ya lo tenes todo d nuevo! yo siento q arrastrar y soltar es la forma mas facil, noc alguien q m diga una forma mas facil q esa?? Asi propiemanete t despreocupas d la BD en tu app y todo se maneja desd el BD.

Pero asi, hay muchisimas formas mas d diseñar la solucion, otra gente puede optar todo manejarlo desd VS, y para hacer cambios los tiene q hacer en el codigo fuente porque alli tiene todas las consultar y todo! Bueno yo sienot q a veces todo esto se vuelve cosas de gusto....!!

Lo unico q si tengo q reconocer d los dataset, q para tablas demasiadas cargadas no es la mejor solucion, xq su rendimiento es pesimo por trabajar en "ambiente desconectado". entonces alli si es mejor hacerlo a patin y manejarlo uno prpiament con un DataReader!

Pero d lo contrario no veo el problema d ocupar dataset tipados!! Pero bueno... y no t preoucpes no m siento mal... es nbueno escuchar puntos d vista distintos, esto es un foro y es un cambio d ideas, asi cada uno va aprendiendo un poquito d la cosas d los demas!! Y algo mas, estoy d acuerdo hasta cierot punto lo ultimo q pusistes "Cuando hay aplicaciones grandes, es mejor tener el control de todo y no apoyarse mucho en algunas herramientas que "Facilitan" la vida del programador incluyendo el dataset", alli tenes razon, aveces los facilitadores t hacen repetir muchas cosas y quizas hasta cierto punto es mejor hacerlo uno, o buscar una forma en la cual se manejen facilmente toda la BD digamos como con una clse intermedio que se encarge del admin y todo!!
<a href="http://www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/" target="_blank">
<img src="http://cache.www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/b_560x95.png" border="0" width="560" height="95" alt="" />
</a>

sicario

  • Guest
Re: Ayuden a la campaña de Aprendizaje en .NET
« Reply #19 on: December 18, 2008, 11:44:34 pm »
bueno.... creo que nos estamos perdiendo un poco. en conceptos... y en la forma de atacar posibles problemas.

Juancho:  Que raro que no tengas idea de como y porque... resulta aveces necesario quebrar la estructura de las DB.. en algunas aplicaciones... aveces con cierta fruecuencia mas intermitente una que otras.. pero eso existe y es un hecho.

Quote
Mmm.. m llama mucho la atencion tu punto d vista, pero poneme un ejemplo en el cual es obligatorio el cambio d diseño d una base d datos??
Me extraña juancho.... toda aplicacion abierta... esta sujeta a cambios en su estructura de base de datos... a menos que sea una aplicacion para algun producto VERTICAL.   Pero donde yo me muevo (lo financiero)... el quiebre a la estructura de la DB se realiza con cierta frecuencia.  Maxime cuando tenes que tropicalizar... aplicaciones de proveedores.


Ahora bien.... este punto en el cual discutimos.... creo que amerita llevarlo mas alla... y obtener como resultado la ruptura de paradigmas o conceptos cerrados en la programacion.  Te doy un ejemplo:



Mi caso:
Te cuento que yo soy fanatico de la reutilizacion de codigo hasta mas no poder. Y en cuanto a mantenimientos para entrada de datos a una db... yo hago una sola clase.... misma que se encarga mediante ciertos parametros.. de capturar los datos contenidos en el formulario... (tal es el caso de alla arriba)... y mediante un evento... mandar a guardar.. o a presentar en pantalla dichos resultados... logrando con ello... varias cosas... tales como:

1- cero codigo SQL en las formas
2- Misma clase de conexion y de consulta para N formas y N tablas habidas y por haber en mi DB
3- Cero problemas al momento de reestructurar la db (quebrar el diseño)
4- Velocidad para producir en la programacion dado que te ahorras digitacion de codigo incluyendo el COPY PASTE.
6- Mejor control para que las formas (form) interactuen con la db sin enchibolarse.. para hacer ajustes o cambios
7- Standarizacion al maximo en la estructura de programacion.
8- Maximisas los tiempos de produccion.

TECUN:   Si te quedase tiempo.. me gustaria explicaras la idea central de lo que digo... con algun ejemplito... de tal suerte.. que los involucrados en esta discucion... tengan una mejor idea.. y veamos que sale.... pues yo aunque me siento satisfecho con los resultados.. sigo pensando que se puede majorar... y sigo pensando que talvez este equivocado en mi forma de programar.

Por eso no me gusta DEVELOPER... me amarra a tanto... que no puedo tan facil... reutilizar mi codigo a dieztra y a siniestra..

Juancho... me interesa que amplies tu punto de vista.. pero quisiera que lo hicieras mas al detalle... le tengo mucha fe a tus opiniones siempre y cuando no vengan sustraidas de libros.. o de opiniones de terceros.. :).... quiero tu experiencia man.. no se si me explico.. no quiero nada de lo que hallases leido por alli si no mas bien... a como has logrado atacar... este tipo de problemas... tomando en cuenta.. no solamente lo funcional.... si no.... tambien.. la forma de optimizar en tiempo.. la programacion.



« Last Edit: December 18, 2008, 11:48:25 pm by ¤.§íĈÅRïð.¤ »

Offline Jonhyrey

  • Sv Full Member
  • *
  • Posts: 558
Re: Ayuden a la campaña de Aprendizaje en .NET
« Reply #20 on: December 19, 2008, 09:08:47 am »
Voy con mi metodo:

Utilizo en la capa de Acceso a datos una clase llamada ClaseBase que contiene la configuracion del ADO.Net en codigo.
Digamos que tengo una aplicacion que genera cheques y en la logica del negocio manejo mi clase Facturas, entonces, en mi capa de acceso a datos utilizo una clase llamada dbFacturas que hereda clasebase:

Les pongo mi clase:

Quote
Imports System.Data.SqlClient

Public Class ClaseBase

    Public _Conexion As New SqlConnection(My.Settings.cnnClub)

    Public Property Conexion() As SqlConnection
        Get
            Return _Conexion
        End Get
        Set(ByVal value As SqlConnection)
            _Conexion = value
        End Set
    End Property

    Protected Function AbrirConexion(Optional ByVal BError As Boolean = True, Optional ByVal StrError As String = "") As Boolean
        Dim Ok As Boolean = False
        If Me.Conexion.State <> ConnectionState.Open Then ' si la conexion es diferente de open(no esta abierta)
            Me.Conexion.ConnectionString = My.Settings.cnnClub
            Me.Conexion.Open()
            Ok = True
        End If
        Return Ok
    End Function

    Protected Function CerrarConexion(Optional ByVal Berror As Boolean = False, Optional ByVal StrError As String = "") As Boolean
        Dim Ok As Boolean = False
        If Me.Conexion.State <> ConnectionState.Closed Then
            Me.Conexion.Close()
            Ok = True
        End If
        Return Ok
    End Function

    Protected Function ObtenerTablaListado(ByVal NombreTabla As String, ByVal Comando As String) As DataTable
        Dim SQLAdap As New SqlDataAdapter(Comando, Me.Conexion)
        ObtenerTablaListado = New DataTable
        ObtenerTablaListado.TableName = NombreTabla
        Dim Numreg As Integer = 0

        Me.AbrirConexion()


        SQLAdap.Fill(ObtenerTablaListado)

        Numreg = ObtenerTablaListado.Rows.Count

        Me.CerrarConexion()

        Return ObtenerTablaListado
    End Function

    Protected Function ObtenerTablaListado(ByVal NombreTabla As String, ByVal Comando As String, _
    ByVal Params As List(Of SqlParameter)) As DataTable
        Dim SQLAdap As New SqlDataAdapter(Comando, Me.Conexion)
        For Each param As SqlParameter In Params
            SQLAdap.SelectCommand.Parameters.Add(param)
        Next
        ObtenerTablaListado = New DataTable
        ObtenerTablaListado.TableName = NombreTabla
        Dim Numreg As Integer = 0

        Me.AbrirConexion()


        SQLAdap.Fill(ObtenerTablaListado)

        Numreg = ObtenerTablaListado.Rows.Count

        Me.CerrarConexion()

        Return ObtenerTablaListado
    End Function

    Protected Sub ObtenerDataSetListado(ByVal dSet As DataSet, ByVal NombreTabla As String, ByVal Comando As String)
        Dim SQLAdap As New SqlDataAdapter(Comando, Me.Conexion)
        Me.AbrirConexion()
        SQLAdap.Fill(dSet, NombreTabla)
        Me.CerrarConexion()
    End Sub

    Protected Function ObtenerReaderListado(ByVal Comando As String) As SqlDataReader
        Dim cmdSQL As New SqlCommand(Comando, Me.Conexion)
        Me.AbrirConexion()
        ObtenerReaderListado = cmdSQL.ExecuteReader
        Return ObtenerReaderListado
    End Function

    Protected Function ObtenerReaderListado(ByVal Comando As String, _
    ByVal Params As List(Of SqlParameter)) As SqlDataReader
        Dim cmdSQL As New SqlCommand(Comando, Me.Conexion)
        For Each param As SqlParameter In Params
            cmdSQL.Parameters.Add(param)
        Next
        Me.AbrirConexion()
        ObtenerReaderListado = cmdSQL.ExecuteReader
        Return ObtenerReaderListado
    End Function

    Protected Function ComandosTransaccion(ByVal Comando As String) As Boolean
        Dim tran As SqlTransaction = Nothing
        Dim CmdSQL As New SqlCommand(Comando, Me.Conexion)
        CmdSQL.Transaction = tran
        Me.AbrirConexion()
        CmdSQL.ExecuteNonQuery()
        Me.CerrarConexion()
    End Function

    Protected Function EnviarComandos(ByVal Comando As String) As Boolean

        ' Aqui vamos a manejar las instrucciones de Insertar, Modificar y Eliminar
        Dim Ok As Boolean = False
        Dim CmdSQL As New SqlCommand(Comando, Me.Conexion)
        Me.AbrirConexion()
        CmdSQL.ExecuteNonQuery()
        Ok = True
        Me.CerrarConexion()
        Return Ok
    End Function

    Protected Function EnviarComandos(ByVal Comando As String, ByVal Params As List(Of SqlParameter)) As Boolean

        ' Aqui vamos a manejar las instrucciones de Insertar, Modificar y Eliminar
        Dim Ok As Boolean = False
        Dim CmdSQL As New SqlCommand(Comando, Me.Conexion)
        For Each param As SqlParameter In Params
            CmdSQL.Parameters.Add(param)
        Next
        Me.AbrirConexion()
        CmdSQL.ExecuteNonQuery()
        Ok = True
        Me.CerrarConexion()
        Return Ok
    End Function

    Protected Function PerformTableUpdate(ByVal comandoSelect As String, ByVal Tabla As DataTable) As Boolean

        Dim Ok As Boolean = False
        Dim sqlAdapter As New SqlDataAdapter(comandoSelect, Me.Conexion)
        Dim cmdBuild As New SqlCommandBuilder(sqlAdapter)

        Me.CerrarConexion()

        sqlAdapter.DeleteCommand = cmdBuild.GetDeleteCommand
        sqlAdapter.InsertCommand = cmdBuild.GetInsertCommand
        sqlAdapter.UpdateCommand = cmdBuild.GetUpdateCommand

        sqlAdapter.Update(Tabla)
        Me.CerrarConexion()
        Ok = True
        Return Ok
    End Function
End Class


Claro, hay unos metodos ahi que tengo que depurarlos... pero de igual forma, la clasecilla realiza su función. Ahora vamos con dbFacturas:

Quote
Public Class dbFacturas
    Inherits ClaseBase
   
       Public Sub IngresarDetalle(ByVal IDFactura As Integer, ByVal CodigoArt As String, ByVal Descripcion As String, _
    ByVal Cantidad As Decimal, ByVal Precio As Decimal, ByVal Valor As Decimal)
        Dim str As String = "INSERT INTO ClubDetaFac" & _
        "(IDFactura,CodigoArt,Descripcion,Cantidad,Precio,Valor) " & _
        "VALUES (@IDFactura,@CodigoArt,@Descripcion,@Cantidad,@Precio,@Valor)"
        Dim params As New List(Of SqlClient.SqlParameter)
        params.Add(New SqlClient.SqlParameter("@IDFactura", IDFactura))
        params.Add(New SqlClient.SqlParameter("@CodigoArt", CodigoArt))
        params.Add(New SqlClient.SqlParameter("@Descripcion", Descripcion))
        params.Add(New SqlClient.SqlParameter("@Cantidad", Cantidad))
        params.Add(New SqlClient.SqlParameter("@Valor", Valor))
        params.Add(New SqlClient.SqlParameter("@Precio", Precio))

        Me.EnviarComandos(str, params)
    End Sub
End Class

Eso es en el caso que se utilicen parametros, si es una sentencia sencilla, digo que no es necesario el uso de parametros y el codigo disminuye bastante.

Ahora la entidad Factura apuntara siempre a su respectiva clase para accesar a los datos.

Hey acepto sugerencias para mejorar esta forma de trabajo. Y ojala le sirva a los que vayan empezando....



Offline Juancho

  • The Communiter-
  • *
  • Posts: 1311
Re: Ayuden a la campaña de Aprendizaje en .NET
« Reply #21 on: December 19, 2008, 11:46:11 pm »
Juancho:  Que raro que no tengas idea de como y porque... resulta aveces necesario quebrar la estructura de las DB.. en algunas aplicaciones... aveces con cierta fruecuencia mas intermitente una que otras.. pero eso existe y es un hecho.
Me extraña juancho.... toda aplicacion abierta... esta sujeta a cambios en su estructura de base de datos... a menos que sea una aplicacion para algun producto VERTICAL.   Pero donde yo me muevo (lo financiero)... el quiebre a la estructura de la DB se realiza con cierta frecuencia.  Maxime cuando tenes que tropicalizar... aplicaciones de proveedores.

Vuelvo a recaer en lo mismo, pedi un ejmplo en lo cual sea completamente necesario, yo pregunt un caso especifico, en el cual sea super necesario, digamos por ejemplo cada mes!! No le allo efeciencia a una solucion d ese tipo, yo estoy d acuerdo en el sentido d q es cierto a veces es necesario quebrar la estructura d la BD para optimizar los datos y hacer busquedas d distintas maneras o cambiar su funcionalidad... allli estoy completamen claro, pero eso digamos lo haces no todos los dias q es mi punto....!! Seguire repetiendo, cuando vs creas una solucion, ya sea desde cero o para mejorar algo, vs en tu fase d anallisis tenes q evalular todos esos punto si quebrar la estructura actual de una BD (sea el caso q no estas iniciand desd cero), pero digamos en tu rama solo es armar y hacer todo el analisis d la sollucion, entonces vs a tus empleados (entiendase como programadores), vs ya le pasas todos los diagramas para q ellos trabajen, q hasta cierto punto a codificaion viene siendo ya lo ultimo... Pasando q todo lo demas ya fue analizadao vs varias analistas y alos programadores ya solo le dan "vaia hagan tal cosa" y asi en una empresa c van diviendo!!

En un caso, en el cual solo una persona haga el trabajo, quizas se rompe bastante toda esta jerarquia o como se le conoce como "Ciclo de vida del Software", pero sabes sigo interesado asi un caso especifico en el cual sea necesario, digamos cada mes o para no hacerlo tan chiquito, cada trimestre estar cambiando o rompiendo la estrucutura de la BD!, yo entiendo q en fase d codificacion, puede ser q veces uno lo diseño d una manera pero vs t venis a topar y resulta q no era la mejor forma entonces lo cambias y asi estas... pero si t piden entregar un producto siento q no es lo mas conveniete ir cambiando el diseño d la BD a cada rato... No se si m entendes el punto q t quiero a dar entender... Osea no es q t diga q nunk se rompe el diagrama d una BD, si se rompe, pero en una version quzias completament nueva podria ser ero siempre tan seguido no m parece....

Sabes hace poco hizimos eso con mi hermano, en una aplicacion q iniciamos con mi hermano, el la inicio en 1998 empezo a operar y era en Visual Fox 6.0, despues venimos y en 2002, hicimos una verssion 2.0 ya en VB 6.0 pero con el mismo diseño d trabajo d las tabals q en visual fox, solo q ocupamos access..., y desd a finales del 2006 empezamos analizar y optimizar el esquema d la BD, y lo reestructuramos todo, asi todo el diseño c cambio, lo montamos en un servidor y todo... y se mirgraros todo los datos, x cierto la appa en VS 2005 pero no es q cada mes o 3 meses se cambiaba algo!!

Mi caso:
Te cuento que yo soy fanatico de la reutilizacion de codigo hasta mas no poder. Y en cuanto a mantenimientos para entrada de datos a una db... yo hago una sola clase.... misma que se encarga mediante ciertos parametros.. de capturar los datos contenidos en el formulario... (tal es el caso de alla arriba)... y mediante un evento... mandar a guardar.. o a presentar en pantalla dichos resultados... logrando con ello... varias cosas... tales como:

Vaia voy intentar analizar una por uno y dandot mi punto d vista en comparacion a los DataSet tipados, q creo q es el punto principal como inicio esto, const no es por ofendert solo es intercambio d idea, creo q asi podemos aprender los 2 d puntos d vista distintos, yo respeto mucho la forma d programar d cualquier persona y todo, pero a veces digo yo, "a veces nosotros mismo nos complicamos la vida teniendo las cosas alli en la mano"...

1- cero codigo SQL en las formas
Bueno, esto creo q para programadores ya d altura, (m refiero a gent q hac un Form ya dic q puede programar..), osea ambito profesional como es tu caso, y el d muchos aqui, siento q es algo vital est punto... Tu mismo diseño orientado en Capas, hace q en tus Form tengas cero codigo y todo sea manejado por una jerarquia d clases, diseñada por el programador... Creo q la mayoria d gent en ambito profesional t trabaja en diseño en capas, en las empresas se dividen el trabajo, un grupo solo trabaja en el manejo d datos, otrso en diseño, otros en las Forma y asi van, entonces x eso eso creo yo q es indispensable, asi digamos vs habias delegaod alguien q t haga toda la jerarqui d clases d datos, vs solo llamas a la clase y manejas completamente tu BD!

2- Misma clase de conexion y de consulta para N formas y N tablas habidas y por haber en mi DB
Sabes est punto m gusto mucho, siento q con esto es muy facil el mantemiento en tus tablas, pero supongo q t a deber costado armar la jeraquia un poco en relacion para no tener problemas, yo m acuerdo q un proyecto q hic hac poco, en el cual era necesario ocupar 2 servidores MySQL y Oracle, la forma mas facil se m ocurrio fue q con una Interfaz, y una clase Base Conexion, se pudiera manejar todo eso, asi todas las clases hijas (osea las tablas d la BD), se manejarn todo con esa clase, sin repetir codigo y sin nada para los 2 servidores... Pero un poco complicado el diagrama, pero bueno... jejejej, era en Java por cierto...! X cierto como comentario, eso m gusto d Java, y cosa q VS, a veecs t mal acostumbra, es mas facil reutilizar tu codigo en Java q en VS xq como VS todo t lo da echo, entonces x eso m gusto mas Java, pero bueno eso solo era d comentario!!

3- Cero problemas al momento de reestructurar la db (quebrar el diseño)
Siento yo q si utilizas DS con tu diseñador y tu clase del manejo d datos, como es una DS tipado, entonces no tendrias q cambiar nada d codigo, en tu clase d datos, sino q unicamente actualizas tu clase tipada y listo, todos los cambios se realizar efectivament sin cambiar nada d codigo... Asi q podes cambiar todo lo queres pero si regresabas una table, con el DataSet tipado solo llamas al getTable (ya no m acuerdo como es jejejej), y vas  regresa una tabla e independient si cambias el diseño automaticament t va a ser la acutalizacion asi q no veo mejor con respecto a los DS tipados!

4- Velocidad para producir en la programacion dado que te ahorras digitacion de codigo incluyendo el COPY PASTE.
Decime no t ahorras tiempo con el Data Set tipado?? Si el propio VS t crea la clase para q vs solo lo mandes a llmar, osea no digitas nada... el solito t hace todo... Entonces ni siquiera un Copy Paste vas hacer... ni digitar nada...!

6- Mejor control para que las formas (form) interactuen con la db sin enchibolarse.. para hacer ajustes o cambios
Bueno, aqui creo q no hay nada q decir... siento q es un punto bn neutral...!

7- Standarizacion al maximo en la estructura de programacion.
Creo q aqui noc si podrias ser un poquito mas especifcio, cuando t referis a la estandarizacion d la estrucutra d programacion... x fa... para poder comentar acerca d este punto!

8- Maximisas los tiempos de produccion.
Bueno, creo q aqui puede ser el punto mas a favor q tiene, con respecto cuando uno hac todo sollito, asi a patin, puia lo q podes lograr cuanod uno lo hac desd cero, pero puia con una logica bn centrada y sencilla pero rapida, juela aqui si optimizas... y esto no t lo niego... yo con eso q t cont q hic un trabajito en java, juela eso d hacerle vs a patin pero bn craneado t ahorra un monton d tiempo q avces uno por atenido a los DS tipados en poryecto demasiams extenss puede ser problemas, por su repeticion... Entonces aqui si t doy toda la razon y eso creo q lo puse antes...

Espero no ofendert Sicario, con algun comentario, pero e intentado ser lo mas claro y explicart un poco mi forma d ver las cosas... Si t ofendi lo siento mucho, yo siento q esto es un foro para todos aprendamos un poco d todos y asi compartir conocimientos...!!
<a href="http://www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/" target="_blank">
<img src="http://cache.www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/b_560x95.png" border="0" width="560" height="95" alt="" />
</a>

Offline tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Posts: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re: Ayuden a la campaña de Aprendizaje en .NET
« Reply #22 on: December 20, 2008, 09:42:14 am »
Jonhyrey: a simple vista, tu clase tiene muchas cosas repetidas y muy particularmente te digo, no soy participe de utilizar SqlParameter, los considero grotescos, esa parte es la única que nunca he usado de .Net porque lo veo muy deficiente -en cuanto a tiempo y fácilidad de uso se refiere- criterio muy personal!


juancho: considero que en algunos casos puntuales hablamos del mismo idioma y en otros casos hablamos de mundos diferentes...

hablamos lo mismo cuando nos referímos a minimizar el trabajo como programador y desarrollo soluciones y otras cosillas de forma rápida. pero hablamos diferente cuando hablamos de la forma y de cosas puntuales!
estoy trabajando con sicario en un proyecto así que voy a hablar por los dos, utilizaré a la palabra yo, pero somos él y yo :angel:



yo tengo un dataSet tipado con todas las tablas y vistas [ahora ya no, porque los rpt son externos] que tiene nuestra DB pero lo ocupamos para algo quizá completamente distinto de lo que tú lo úsas...

como así, bajo la filosofía "soplar y hacer botellas" nosotros agregamos los controles según el dataSet tipado y con ciertos cambios a la "Ventana Datos [de .Net]" cambiamos los controles comúnes [textBox] por nuestros propios controles -te recordas de mi post "personalizar control personalizado" como te dije, son varios ctls y son para hacer mi vida fácil, ahí solo cambio los textBox por mis controles y los arrastro y se dibuja automáticamente mi frm para dar mtto a una tabla, pero solamente hago eso, DIBUJAR CONTROLES lo demás que agrega .Net se lo quito, porque en la capa de interactuar con la DB ocupo la clase que puse antes.

y lo hago bien mamado, porque solo a los controles les digo -propiedad en tiempo diseño- que campo van a mostrar y al form le digo que tabla va a consultar [clientes] y listo, solo doy F5 cargo mi frm y ya puedo agregar modificar o consultar los clientes de mi DB, así como lo acabo de escribir.

con todo lo anterior es que digo que nosotros hablamos de cosas diferentes, respecto al dataSet tipado, nuestro diseñador solamente me sirve para dibujar formularios, luego la capa gruesa la de interactuar con la DB es la clase, claro que tiene cosas nuevas, pero es el 90% original.


no utilizamos DataBinding(), hacemos la muestra de datos en los ctls con procedimientos propios, con eso rompemos los esquemas que tiene el dataSet tipado, quizá dirás "eso daña al performance de la app" en cierto sentido sí, pero ya en la realidad, trabajando de red no se ve lento, ni se nota.

ya en la práctica, nuestra clase las hace de; dataSet tipado, consultas, ejecuta procedimientos, etc. todo ahí mismo....
« Last Edit: December 20, 2008, 09:43:46 am by tekun »
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Offline Juancho

  • The Communiter-
  • *
  • Posts: 1311
Re: Ayuden a la campaña de Aprendizaje en .NET
« Reply #23 on: December 20, 2008, 10:27:37 am »
Me admiro porque 2 grandes en programacion del foro se han unido... pero bueno comentare un poco sobre tu punto...!

yo tengo un dataSet tipado con todas las tablas y vistas [ahora ya no, porque los rpt son externos] que tiene nuestra DB pero lo ocupamos para algo quizá completamente distinto de lo que tú lo úsas...

como así, bajo la filosofía "soplar y hacer botellas" nosotros agregamos los controles según el dataSet tipado y con ciertos cambios a la "Ventana Datos [de .Net]" cambiamos los controles comúnes [textBox] por nuestros propios controles -te recordas de mi post "personalizar control personalizado" como te dije, son varios ctls y son para hacer mi vida fácil, ahí solo cambio los textBox por mis controles y los arrastro y se dibuja automáticamente mi frm para dar mtto a una tabla, pero solamente hago eso, DIBUJAR CONTROLES lo demás que agrega .Net se lo quito, porque en la capa de interactuar con la DB ocupo la clase que puse antes.

y lo hago bien mamado, porque solo a los controles les digo -propiedad en tiempo diseño- que campo van a mostrar y al form le digo que tabla va a consultar [clientes] y listo, solo doy F5 cargo mi frm y ya puedo agregar modificar o consultar los clientes de mi DB, así como lo acabo de escribir.

con todo lo anterior es que digo que nosotros hablamos de cosas diferentes, respecto al dataSet tipado, nuestro diseñador solamente me sirve para dibujar formularios, luego la capa gruesa la de interactuar con la DB es la clase, claro que tiene cosas nuevas, pero es el 90% original.

Mmm... si me acuerdo d tus controles q m llamo la atencion mucho verlo en funcionamineto cuando m comentastes, pero todo esto m recuerda a lo q hac poco hic en Java, (seguire diciendo q Java m gusto x eso, xq no nos mal acostumbra a hacer las cosas sino q nos obliga hacer nuestra propia jerarquia q a veces en VS ya lo da hecho y solo lo tomamos), se parec mucho a lo q ustedes tiene, en la app java q hic, fui simular la facilidad y GIU al estilo vista, hay algunos controles q Java no los tiene como el ErrorProvider q m gusta mucho su funcionamiento jajajajaj!, entonces tambn el tipo d q aparece como un Txt d Ayuda en los TextBox y cuando uno escribe desaparec, los controles tipo vista q aparece el recuadro del TextBox, solo cuando se escribe o cuando el mouse se sobre posesioan y todo lo demas, entonces asi fue mi App, tenia Clases encargadas para el entorno grafico del usuario, y ademas enlazas con mis clases para el entorno de datos, entonces al final como dic tu lema "soplar y hacer botellas", de esa misma manera funcionaba mi app en Java, yo unicament ponia los controles y se lo agregaba en la carga a la clase Administradora, tanto d la interfaz como la d datos, y este solito hacia las operacion del entorno grafico, e inserta, elminar guardar registros... Entonces en mis form solo eso hacia... creo q bastant parecido a como lo manejan en .NET!!

Solo como comentario:, creo q lo d su clase ya lo hace el DataBindigns en los controls, pero creo q ustedes se intentaron salir de eso, y para ser sincero a mi tampoco m gusta utilizar el DataBindings,  en eso creo q compartmios la misma idea, siempre tengo las clases manejadoras d datos en .NET q se encargan d ahcer todas esas operaciones, xq no m gusto como se manejan los datos en el DataBindigs.

En conclusion creo q la forma d programar y diseñar la capa de datos estamos bastante parecidos, ya q tanto ustedes no utilizan el dataBindings para enlazar los controles, e igual a mi tiene la capa d datos separas (dividido en las clases).

Pero entrando a esto creo q hoy si ya nos salimos del tema.... La discusion inicio, porque varios dijeron q el DataSet tpado aqui y todo lo demas no era suficiient y q era mejor hacerlo a patin y todo lo demas... Ese fue el tema d todo este debate...!

ya en la práctica, nuestra clase las hace de; dataSet tipado, consultas, ejecuta procedimientos, etc. todo ahí mismo....

Pero segun tu comentario d arriba, ustedes tambn utilizas los DataSet tipados, y ese es el punto d este debat.... es cierto no utilizan el Data Bidnigs pero esa es la conexion d la capa de datos con el Form q es otro punto.... Y alli creo q compartimos la misma idea...!
<a href="http://www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/" target="_blank">
<img src="http://cache.www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/b_560x95.png" border="0" width="560" height="95" alt="" />
</a>

sicario

  • Guest
Re: Ayuden a la campaña de Aprendizaje en .NET
« Reply #24 on: December 20, 2008, 10:42:19 am »
Bueno.... me doy por satisfecho de las aseveraciones de juancho.. :drinks:   ... aun cuando no me esperaba que comentara punto por punto.. los mios... si no mas.. bien.. hiciera un bosquejo de su experiencia en el punto que abordamos... sin embargo debo acepar que ha sido lo suficientemente claro como para entender cual es su estilo de programacion.

Para algunos podra ser esta una conversacion esteril.... para otros.. ha de ser el punto que necesitamos para marcar un inicio en el fascinante mundo de la programacion.. es bonito compartir y dicernir en las formas mas idoneas para programar.. y como el tema para mi se convirtio en algo interesante... haber cuando alguien abre otro tema.. exclusivo para BASES DE DATOS... seria interesante saber las opiniones del resto.... dado que soy fiel critico de estructuras de base de datos  :D  ... por ejemplo... me caen en los mejoros eggs  ... los nombres de campos NEMOTECNICOS. que gran putas me dice a mi que es (TABTVAR, TABTPER, TABTUSU, NACCFLAG)  :rofl:  .. sin embargo a juicio de algunos programadores.. y administradores de base de datos.. son detalles que les permite muchas veces exclusividad en la programacion por cuanto no es tan facil entenderles sus programas y diseños de db.


Gracias Juancho...  :thumbsup:   (Por cierto.. cuango me cobras por darme clase de java los domingos :))

Offline tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Posts: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re: Ayuden a la campaña de Aprendizaje en .NET
« Reply #25 on: December 20, 2008, 11:17:02 am »
sicario, esto me recuerda a algo que me dijiste, crear un blog de estas discusiones, donde presentemos lo que hacemos y que otra mara opine para ver que mejoramos...

yo tambien considero que lo que hacemos se puede mejorar y siento que juancho puede ser uno de los que ayuden a ello, al rato y lo hacemos, pa que mas gente se nos una......


solo que no pongamos un lugar de chat general XD aslñdfj asdklñfdjflñasdkjsdlñf
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Offline Jonhyrey

  • Sv Full Member
  • *
  • Posts: 558
Re: Ayuden a la campaña de Aprendizaje en .NET
« Reply #26 on: December 23, 2008, 08:36:56 am »
Quote
Jonhyrey: a simple vista, tu clase tiene muchas cosas repetidas y muy particularmente te digo, no soy participe de utilizar SqlParameter, los considero grotescos, esa parte es la única que nunca he usado de .Net porque lo veo muy deficiente -en cuanto a tiempo y fácilidad de uso se refiere- criterio muy personal!

Vaya compadre ahora haga la critica constructiva..... alguna idea o ejemplo de como lo manejas tu?

Saludos



Offline tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Posts: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re: Ayuden a la campaña de Aprendizaje en .NET
« Reply #27 on: December 23, 2008, 02:16:52 pm »
Vaya compadre ahora haga la critica constructiva..... alguna idea o ejemplo de como lo manejas tu?
claro....



solo que ya lo había dicho...

.......
te dejo la info de donde saque la clase para el mantenimiento de una tabla con vb.Net
aqui ta el link
Code: [Select]
http://www.codeproject.com/KB/database/adonetrecordset.aspx
el proyecto original esta bajo una conexión OLEDB pero fácilmente la podes adaptar a la forma en la que tu te conectas y cambiar todas las definiciones de variables de los dataReader y dataAdapter porque también cambian...

esa clase ocupo en todos mis proyectos y con un parsillo de modificaciones y adiciones va de maravilla....
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito