Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Pequeña ayuda con visual studio..

Iniciado por player, 19 de Octubre de 2009, 07:48:50 PM

« anterior - próximo »

player

Estoy intentando hacer una pequeña aplicación en VB conectada a una base de datos hecha en access, en todos los manuales que leo dicen que es muy "fácil".

Hay que abrir un proyecto en VB (supongo que será aplicación de windows forms, por ningún lado lo especifican) y luego hacer una conexión con dataenvironment, y para hacer la conexión hay que ir al menú proyecto -> agregar data environment.

Lo que pasa que yo entro al menú proyecto de visual studio 2008 y no veo lo de agregar data environment y no lo encuentro por ningún lado, no sé si tendrá otro nombre o se realizarán las conexiones de otra manera, pero estoy bastante perdido.

Alguna versión de visual studio anterior en la que sepáis que aparece directamente lo de agregar data environment o dónde se encuentra en visual studio 2008? O alguna otra solución que se os ocurra?

Gracias.

[EX3]

Nosotros en el trabajo conectamos con ADO.NET usando lo basico y en algunos casos usando Datasets & Cia. Ahora mismo no podria decirte por que ni tengo instalado el Visual Studio ni .NET en la maquina virtual (estoy en Mac) pero mañana mismo si no se me pasa te cuelgo un ejemplo basico de como conectar con una base datos ACCESS en ADO.NET con VB.NET. Aun asi, si buscas encontraras informacion para aburrir en la red (echa un ojo en www.canalvisualbasic.net o www.recursosvisualbasic.com.ar por ejemplo).

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

player

Gracias [EX3], me vendría muy bien lo del ejemplo básico. Los tutoriales que he encontrado sobre todo esto han sido en VB 6.0, más que nada porque a parte de la conexión con la base de datos también añadían un tutorial de cómo crear una pequeña aplicación que consiste en poder modificar, dar de alta, borrar, imprimir...etc desde ese menú, ya que mis conocimientos de programación (llevo pocos meses con C++) son muy reducidos, y de VB son nulos. Todo sería ponerme a investigar lo de la pequeña aplicación en VB.NET y seguir tu explicación de como conectar la base de datos con ADO.NET.

Gracias por los links, les voy a echar un vistazo.

Vicente

Hola,

eso de dataenvironment suena a viejo de narices, además si estás con VB 6.0 el Visual 2008 como que no te vale de nada. Si sabes C++ yo te recomendaría que hagas la aplicación en C# porque la sintaxis se te va a hacer más parecida.

Respecto a como añadir una base de datos a un proyecto en VS 2008:

- Te haces un proyecto nuevo (de Consola o de Winforms, eso da igual).
- Te vas al Server Explorer (a la izquierda en el VS, si no lo buscas en la pestaña de View en Ctrl + W, L).
- En Data Connections botón derecho, Add Connection... y ya buscas el fichero al que te quieras conectar.

Luego sobre ADO.NET si sigues estas explicaciones paso por paso no deberías tener mucho problema:

http://msdn.microsoft.com/en-us/library/ms254937.aspx

Un saludo,

Vicente


player

Gracias Vicente. Es la primera vez que salgo del dev-c++ para hacer algo más que programitas en la consola y se me hace muy grande todo esto, la orientación me viene muy bien.

Lo que me faltaría ahora, es saber si tengo que empezar con C# desde el principio hasta llegar al nivel de poder hacer una aplicación con un menú visual que permita hacer todo lo que dije anteriormente con la base de datos, o podría empezar ya a investigar directamente como hacer la aplicación.

Por lo poco que creo que sé de C#, es todo orientación a objetos y de eso todavía no he profundizado en nada, sólo he leído cosas por encima de C++ sin meterme en ello (voy muy justo de tiempo), entonces si empiezo así de directo con C# creo que voy a ir bastante perdido.

Vicente

Cita de: player en 19 de Octubre de 2009, 09:46:29 PM
Gracias Vicente. Es la primera vez que salgo del dev-c++ para hacer algo más que programitas en la consola y se me hace muy grande todo esto, la orientación me viene muy bien.

Lo que me faltaría ahora, es saber si tengo que empezar con C# desde el principio hasta llegar al nivel de poder hacer una aplicación con un menú visual que permita hacer todo lo que dije anteriormente con la base de datos, o podría empezar ya a investigar directamente como hacer la aplicación.

Por lo poco que creo que sé de C#, es todo orientación a objetos y de eso todavía no he profundizado en nada, sólo he leído cosas por encima de C++ sin meterme en ello (voy muy justo de tiempo), entonces si empiezo así de directo con C# creo que voy a ir bastante perdido.

Obviamente si sabes poco C++ hacer una aplicación CRUD de cero te va a venir un poco grande. Yo creo que primero deberías seguir aprendiendo un poco antes de liarte con esto (que es fácil, pero si sabes tan poco se te va a hacer cuesta arriba).

Un saludo,

Vicente

player

El problema es que no lo hago por gusto, es un trabajo para entregar  >.< tengo 2 meses para hacerlo, pero no sé si me dará tiempo para adquirir los conocimientos necesarios.

Vicente

En dos meses te da tiempo de sobra, pero te tienes que poner claro ;)

[EX3]

#8
Te sigue haciendo falta pues el codigo para VB.NET o vas tirar por C# con lo que te comenta Vicente?

Sea como sea, te dejo por aqui un codigo simplicado de lo que usamos aqui en el curro, a la antigua como se hacia en VB6.0 con los Recordset de ADO:
Código (vbnet) [Seleccionar]
Imports System.Data.OleDb ' El espacio de nombres System.Data.OleDB permite trabajar con bases de datos Access e incluso con libros EXCEL.

Public Class ACCESS
    Implements IDisposable

    Dim con As OleDbConnection

    ' Constructor de la clase.
    Public Sub New(ByVal BaseDatos As String)
        con = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & BaseDatos & ";")
        con.Open()
    End Sub

    Public Function Consulta(ByVal SQL As String) As OleDbDataReader
        Using cmd As New OleDbCommand(SQL, con)
            Return cmd.ExecuteReader
        End Using
    End Function

#Region "Destructor de la clase"
    Private disposedValue As Boolean = False        ' To detect redundant calls

    ' IDisposable
    Protected Overridable Sub Dispose(ByVal disposing As Boolean)
        If Not Me.disposedValue Then
            If disposing Then
                ' TODO: free managed resources when explicitly called
                con.Close()
                con.Dispose()
            End If

            ' TODO: free shared unmanaged resources
        End If
        Me.disposedValue = True
    End Sub

#Region " IDisposable Support "
    ' This code added by Visual Basic to correctly implement the disposable pattern.
    Public Sub Dispose() Implements IDisposable.Dispose
        ' Do not change this code.  Put cleanup code in Dispose(ByVal disposing As Boolean) above.
        Dispose(True)
        GC.SuppressFinalize(Me)
    End Sub
#End Region
#End Region

End Class

Y aqui un sencillo ejemplo de como usar esa clase:
Código (vbnet) [Seleccionar]
        ' Using crea un bloque con la instancia de un objeto y que mantiene activo hasta el final, donde se destruye automaticamente:
        Using bd As New ACCESS(Application.StartupPath & "\Contabilidad.mdb")
            Using rdr As System.Data.OleDb.OleDbDataReader = bd.Consulta("SELECT * FROM Facturas")
                Do While rdr.Read
                    Dim CampoString As String = rdr(0).ToString() ' Puedes referirte a un campo del registro actual por su posicion.
                    Dim CampoDouble As Double = Double.Parse(rdr("Presupuesto")) ' O por su propio nombre.
                Loop
            End Using
        End Using

Esto te sirve perfectamente para hacer consultas, recorrer sus registros y sus campos, ejecutar consultas de actualizacion o de borrado o de lo que quieras mediante SQL. Lo bonito quizas seria aprender a usar los objetos de ADO.NET para trabajar completamente con objetos Tabla, Fila, los DataSet, etc... pero como parece que estas un poco verde no te compliques y tira por lo facil y sencillo ya que el resultado va a ser el mismo.

Salu2...

Edit: Corregida una errata en el codigo del constructor de la clase.
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

player

#9
Muchas gracias [EX3], te lo agradezco mucho. No parece que esté verde, sino que lo estoy bastante. La asignatura no tiene nada que ver con bases de datos ni con programación pero han puesto esto para hacer y la verdad que la grandísima mayoría no sabemos por donde tirar.
Para ponerte un ejemplo, aún no hemos visto ni punteros ni estructuras de datos ni nada de eso... así que te puedes hacer una idea del poco nivel de C++ que aún tengo, aunque por mi cuenta voy aprendiendo lo que puedo siempre que tengo un hueco libre, que no son muchos.

Al final no sé si hacerlo en VB.NET o en C# (se puede usar cualquier lenguaje, no obligan a usar ninguno), no sé lo que será menos costoso para alguien que tiene que empezar desde cero hasta hacer la pequeña aplicación del menú. Por lo que veo voy a tener que ponerme las pilas con la POO si quiero hacer algo.

player

#10
Estoy trasteando un poco con lo que he encontrado aquí http://support.microsoft.com/kb/821765/es

Estoy enganchado en el punto 8 de mitad de página que dice:

Agregue el siguiente código al controlador de eventos Form1_Load:

'Fill retrieves rows from the data source by using the SELECT statement OleDbDataAda

A qué se refiere con el controlador de eventos? No sé lo que es ya que he seguido los pasos y no veo nada que se llame Form1_Load.

A ver si me podéis echar un cable. Gracias.

Edito: Se refiere a dar doble click dentro del cuadro Form1 y agregar el código allí?

Vicente

Sí, se refiere a eso. Puedes ver el evento si seleccionando el form te vas a properties y en properties en vez de ver las propiedades le das a ver los eventos (el rayito) y buscas el evento Load. Doble click y te crea el manejador de eventos.

Un saludo,

Vicente

player

Ok, perfecto, ya he conseguido crear y conectar la bd, crear un botón y agregar una fila a la tabla de la bd mediante la aplicación.

Lo que pasa que el ejecutable que hay en la carpeta "debug" hace lo mismo que el form que tengo en el visual studio al iniciar la depuración, es decir, ejecuto y me aparecen dos mensajes pidiendo que introduzca número y nombre, los introduzco y actualiza la fila de la bd, después me aparece la aplicación del form y el botón que he creado "agregar fila", pero al pinchar en el botón no hace nada, supongo que será cosa del código que había de ejemplo que hace eso.

Lo que yo quiero es que se abra la ventana form (hay alguna forma de cambiar lo de form que aparece en la parte superior de la ventana por otro nombre?), y a partir de ahí ya manejarme con los botones, si pincho al de agregar, que me agregue, si pincho a buscar, que me busque, etc. será cosa ya de investigar un poco, aunque tengo una ligera idea no acabo de verlo muy claro.

player

Bueno después de estar mirando estos días un poco sobre el tema, puedo decir que estoy más perdido de lo que estaba. [EX3] he probado el código que dejaste pero no me aclaro mucho. He cargado la base de datos dentro del form siguiendo los pasos del link que puse y luego he añadido tu código dentro del form, pudiendo compilarlo bien sin errores y cambiando el nombre de la bd que sale en el ejemplo por la mía. Lo que pasa que ahí ya me pierdo porque no sé exactamente lo que debería hacer el botón al que le añado el código, me da error cuando inicio la depuración.

Encontré un tutorial en el que más o menos se hace lo que yo quiero hacer, pero utiliza VB 6.0 y conexión por DataEnvironment, por lo que el código de cada botón lo conecta todo por DataEnvironment y yo necesito por OleDb (no encuentro nada similar).

No conocéis de algún libro para ir a mirar en la biblioteca sobre VB.net o aunque sea VBA en el que explique bien todo esto de crear un menú con botones con los que se pueda agregar, eliminar y demás?

Lo que encuentro por internet no me aclara nada.

Vicente

Estás intentando hacer la casa por el tejado, no te enteras porque te falta base :( A menos que encuentres por internet exactamente lo que quieres vas a seguir dando palos de ciego... Aquí tienes la MSDN sobre ADO.NET, una vez entiendas eso lo que quieres hacer es más o menos trivial:

http://msdn.microsoft.com/en-us/library/ms254937.aspx







Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.