Autor Tema: Ayuda para recordar Base de Datos con ADODC  (Leído 4410 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Ayuda para recordar Base de Datos con ADODC
« en: 15 de Julio de 2007, 13:02:40 »
Hola Amigos:

Bueno, desde hace mucho que no trabajo con base de datos, no tengo problemas con mi antigua forma de conectarme, guardar, buscar y borrar los datos de los campos, antiguamente lo hacía con DAO, todo muy rudimentario y muy manual, recuerdo que cargaba los datos de la base de datos en un msflexgrid y bla bla bla, muy a la antigua, el lío de esto, es que el DAO solo trabaja con Base de datos Access 97  :?, muy antiguo, luego recuerdo que aprendí algo con ADODC, pero ahora no me acuerdo casi de nada :?, sufriendo mucho  :D pude cargar la base de datos usando un Datagrid y el Adodc, es lo único que recuerdo, para cargar los datos veo que he usado un comando SQL que no recuerdo ni como lo he insertado, esto lo hice hace varios años, un comando algo así: Select * from personal order by CD desc
bueno, eso carga los datos de la tabla personal y lo pone en el Datagrid, eso es lo único que he podido hacer, lo que no recuerdo, y no se si aprendi en realidad  :D :D, es como guardar, eliminar y modificar los campos de la tabla  :D :D :D, en realidad la ayuda es para hacer esto último que explico, agradezco cualquier información, nos vemos por aquí  :mrgreen:

Gracias miles  :-/

Desconectado odukec

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 174
Re: Ayuda para recordar Base de Datos con ADODC
« Respuesta #1 en: 15 de Julio de 2007, 16:11:30 »
Hola, espero esto sea lo que necesitas...

yo creo la conexion a la base de datos, y luego por medio del 'metodo' execute y una sentencia SQL modifico datos y/o agrego nuevos registros.. mas o menos de esta forma:

Dim Con as Connection


con.open (SENTENCIA SQL PARA ABRIR LA BASE DE DATOS)
con.cursorlocation = aduseclient

para insertar un nuevo registro (fila):

Con.execute(insert into (tabla) (CAMPOS) VALUES (VALORES))

un ejemplo mas o menos seria: digamos que existe una tabla llamada clientes, donde existen los siguientes campos: Nombre, Direccion, Telefono y fecha entonces la sentecia SQL seria asi..

con.execute(insert into clientes (Nombre,Direccion,Telefono,Fecha) VALUES ('PEPITO PEREZ','AVENIDA 80','5555555',#07/07/07#))

tambien se puede por medio de un recorset, pero casi no recuerdo como es, siempre uso esta forma, me parece mas comodo usar sentencias SQL.

Para modificar algun campo en un registro, seria algo mas o menos asi:

Con.Execute ("UPDATE clientes SET fecha = #05/05/07# where Nombre = 'PEPITO PEREZ'")

por ultimo se cierra la conexion..

con.close

bueno, espero sea de ayuda, si se necesita otra cosa, solo es consultar el lenguaje SQL, y generar la sentencia adecuada.

Saludos


Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Ayuda para recordar Base de Datos con ADODC
« Respuesta #2 en: 16 de Julio de 2007, 01:56:22 »
Hola:

Solo una preguntita:

con.open (SENTENCIA SQL PARA ABRIR LA BASE DE DATOS)

cual es esa sentencia para abrir la base de datos?

Desconectado Picavid

  • PIC12
  • **
  • Mensajes: 89
    • www.seguridomo.es
Re: Ayuda para recordar Base de Datos con ADODC
« Respuesta #3 en: 16 de Julio de 2007, 02:18:41 »
Imagino que odukec se rafiere a ruta de conexion mas que a sentencia.

Vaya tema has ido a tocar, por lo menos para mí. Aún no he encontrado "la mejor forma".

Hay muchas formas, desde el que lo automatiza TODO, con datagird, etc, con databinding, etc; y en sólo código, de grande a pequeño: puedes usar un DataSet (Copia de la base de datos) o  sólo DataApdapter con un CommandBuilder (Es el constructor automático de comandos:nuevo,borrar y actualizar), y muchas mas maneras que he visto. A estas formas los cambios los haces con la funcion Update.

Personalmente uso del siguiente modo:
-Conexion, o no!. (Al usar un dataadapter y commandBuilder, puedes especificar sólo la ruta, sin necedad de crear la conexion, y tener que abrirla y CERRARLA!)
-DataAdapter,
-Command (igual que odukec)
-y el uso de tablas (DataTable). Me parece mas simplificado que un dataset, aunque es mas o menos lo mismo.

Una cosa a añadir a las secuencias de comandos:
Cuando los datos a actualizar son "variables", debes hacer p.e.: INSERT INTO Clientes (Nombre, Apellido) VALUES (@Nombre, @Apellido)
y despues los añades con: Comando.Parameters.AddwithValue("@Nombre", Variable)

Mira la web de "el guille". Tiene mucha información.

Si necesitas algún ejemplo, dímelo que lo subo.

MUY IMPORTANTE: Si eres autodidacta como yo, puedes volverte loco y no te funcionará. Aunque ya se que es bastante elemental, al principio
no me funcionaba nada porque creaba las tablas del SQL sin indicarle una referencia principal. Todavía ahora no lo he visto en ningun libro ni web.

Saludos,
Picavid



Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Ayuda para recordar Base de Datos con ADODC
« Respuesta #4 en: 16 de Julio de 2007, 02:43:18 »
Hola:

gracias por la ayuda Picavid, de acuerdo a esto:

Citar
Si necesitas algún ejemplo, dímelo que lo subo.

MUY IMPORTANTE: Si eres autodidacta como yo, puedes volverte loco y no te funcionará. Aunque ya se que es bastante elemental, al principio
no me funcionaba nada porque creaba las tablas del SQL sin indicarle una referencia principal. Todavía ahora no lo he visto en ningun libro ni web.

Te agradecería el ejemplo, y en verdad que en esto si soy autodidacta, y en realidad no tengo libros sobre este tema de bases de datos y VB, sólo algunos ejemplos de como programaba antes con el DAO, pero ya esta muy "CADUCO"  :D

Gracias de nuevo por tu tiempo  :mrgreen:

Desconectado Picavid

  • PIC12
  • **
  • Mensajes: 89
    • www.seguridomo.es
Re: Ayuda para recordar Base de Datos con ADODC
« Respuesta #5 en: 16 de Julio de 2007, 02:45:18 »
Bueno, para aclara un poco y empezar por lo mas sencillo:

Imports System.Data
Imports System.Data.SqlClient

Public Class Form1
    Dim RutaConexion As String = "Data Source=localhost;" & _
        "Inicial Catalog=NombreBaseDatos; Integrated Security=SSPI"
    'Esto es ruta local, con identificacion windows
    Dim Conexion As SqlConnection

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Conexion = New SqlConnection(RutaConexion)
        Dim daClientes As New SqlDataAdapter("SELECT * FROM Clientes WHERE ID='1'", Conexion)
        Dim tblClientes As New DataTable
        daClientes.Fill(tblClientes)
        'ya tenemos la tabla llena de datos
        'Ahora mostramos la celda de la
        'columna 'Nombres' de la fila '0'
        MsgBox(tblClientes.Rows(0)("Nombre"))
        tblClientes.Dispose()
        daClientes.Dispose()
    End Sub



  Para SQL, hay una version gratuita para crear y manipular bases SQL de Microsoft. (SQL Server Management)

  Saludos,
Picavid

  Has contenstado mientras escrivia esto, así que enseguida que pueda te preparo un ejemplo completo.

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Ayuda para recordar Base de Datos con ADODC
« Respuesta #6 en: 16 de Julio de 2007, 02:51:46 »
Hola:

Muchas gracias por la ayuda  :-/

Desconectado Picavid

  • PIC12
  • **
  • Mensajes: 89
    • www.seguridomo.es
Re: Ayuda para recordar Base de Datos con ADODC
« Respuesta #7 en: 16 de Julio de 2007, 03:19:34 »
Bueno, ahi va un poco de resumen:

Imports System.Data
Imports System.Data.SqlClient

Public Class Form1
    Dim RutaConexion As String = "Data Source=localhost;" & _
        "Inicial Catalog=NombreBaseDatos; Integrated Security=SSPI"
    Dim Conexion As SqlConnection
    Dim daClientes As SqlDataAdapter
    Dim tblclientes As New DataTable

    Private Sub Form1_Load(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles MyBase.Load
        Conexion = New SqlConnection(RutaConexion)
        daClientes = New SqlDataAdapter("SELECT * FROM Clientes", Conexion)
        'Ahí va el constructor automático:
        'Ahora solo sera necesario hacer dataAdapter.Update
        Dim ComandosClientes1 As SqlCommandBuilder
        ComandosClientes1 = New SqlCommandBuilder(daClientes)
        daClientes.Fill(tblclientes)
        'ya tenemos la tabla llena de datos
    End Sub
    Private Sub NuevoClienteComando()
        'Tienes 2 formas: Con instruccion SQL o _
        'Creando un nuevo DataRow (fila)
        'Palabras clave: INSERT INTO (...,...) VALUES (@...,@...)
        'Usaremos el @, sino con comillas simples el valor
        Dim cmd As SqlCommand
        cmd = New SqlCommand("INSERT INTO (Nombre, Apellidos)" & _
            "VALUES (@Nombre, @Apellidos)", Conexion)
        cmd.Parameters.AddWithValue("@Nombre", "Picavid")
        cmd.Parameters.AddWithValue("@Apellidos", "ForoTODOPIC")
        cmd.ExecuteScalar() 'Ejecutamos
        cmd.Dispose() 'y liberamos recursos
    End Sub
    Private Sub NuevoClienteFila()
        Dim nFila As DataRow = tblclientes.NewRow
        nFila("ID_Cliente") = txtClientes_ID.Text
        '... y el resto de la fila
        tblclientes.Rows.Add(nFila)
        daClientes.Update(tblclientes)
    End Sub
    Private Sub BorrarFila()
        'Las 2 posibilidades igual
        Dim NombreTemp As String = tblclientes.Rows(ClienteActual)("Nombre")
        If MsgBox("Esta seguro que quiere eliminar al cliente " & NombreTemp, MsgBoxStyle.YesNo) = MsgBoxResult.No Then
            Exit Sub
        End If
        tblclientes.Rows(ClienteActual).Delete()
        daClientes.Update(tblclientes)
        'En comando usariamos la siguiente instruccion:
        '"DELETE FROM Clientes WHERE Nombre='Picavid'"
    End Sub
    Private Sub Actualiza()
        'Personalmente me gusta hacerlo asi:
        Dim numFila As Integer = CInt(txtClientes_ID.Text) - 1
        'Indicamos la fila a modificar
        Dim FilaModificada As DataRow = tblclientes.Rows(ClienteActual)
        With FilaModificada
            .Item("Nombre") = txtClientes_Nombre.Text
            .item .....
        End With
        daClientes.Update(tblclientes)
        'Usando un cmd simple hariamos:
        '"UPDATE Clientes SET Nombre='nuevoNombre'
    End Sub
End Class

  Espero que os sirva, pero como ya he dicho, hay muchas formas, mejores o peores, a gusto del consumidor...

  Estos días estoy muy liado con la web, así que si no contesto, pasadme un email.

  Saludos,
  Picavid.

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Ayuda para recordar Base de Datos con ADODC
« Respuesta #8 en: 16 de Julio de 2007, 11:49:03 »
Hola:

Abusando de tu amabilidad, podrías por favor colgar ese ejemplo?  :P

Desconectado Picavid

  • PIC12
  • **
  • Mensajes: 89
    • www.seguridomo.es
Re: Ayuda para recordar Base de Datos con ADODC
« Respuesta #9 en: 17 de Julio de 2007, 00:41:02 »
No he podido subirlo. Me sale mensaje de que no hay suficiente espacio ( el rar no llega a 50kb ). Te lo he puesto en mi web. Te agradecería mirases si puedes ponerlo tu en el foro, así queda registrado por los siglos de los siglos...
 El código no es operativo, es lo mismo que en el mensaje.
 

http://www.seguridomo.es/foro

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Ayuda para recordar Base de Datos con ADODC
« Respuesta #10 en: 18 de Julio de 2007, 12:57:13 »
Hola:

Gracias por el archivo, y tampoco lo pude adjuntar al mensaje, me sale el mismo mensaje.  :?


 

anything