TODOPIC
Lenguajes de programación para PC => Visual Basic => Mensaje iniciado por: LordLafebre 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 :-/
-
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
-
Hola:
Solo una preguntita:
con.open (SENTENCIA SQL PARA ABRIR LA BASE DE DATOS)
cual es esa sentencia para abrir la base de datos?
-
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
-
Hola:
gracias por la ayuda Picavid, de acuerdo a esto:
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:
-
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.
-
Hola:
Muchas gracias por la ayuda :-/
-
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.
-
Hola:
Abusando de tu amabilidad, podrías por favor colgar ese ejemplo? :P
-
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 (http://www.seguridomo.es/foro)
-
Hola:
Gracias por el archivo, y tampoco lo pude adjuntar al mensaje, me sale el mismo mensaje. :?