¿Cómo puedo consultar y modificar información por medio de un campo?
Hola experto estoy haciendo una aplicación para una biblioteca y mis preguntas son las siguientes: 1-. ¿Cómo puedo consultar información por medio de un campo?, ejemplo, si introduzco el nombre de la editorial quiero que me aparezca todos los libros registrados por esa editorial 2-. Igual a la pregunta anterior pero para modificar la información. Por cierto la base de datos está hecha en Access.
1 Respuesta
Respuesta de athrarn
1
1
athrarn, - Sistemas Operativos : - MS-DOS, Windows 3
Veamos Por un lado necesito saber los campos que componen las tablas. Si la tabla de libros es así : Tablalibros ID_LIBRO, DESCRIPCION_LIBRO, ID_EDITORIAL Y la tabla de editoriales es así : Tablaeditoriales ID_EDITORIAL, DESCRIPCION_EDITORIAL Una consulta de libros por editoriales sería : Select * from TABLALIBROS where ID_EDITORIAL = <EL ID DE LA EDITORIAL> Y UNA ACTUALIZACION PARA LAS EDITORIALES SERIA Update TABLAEDITORIALES SET DESCRIPCION_EDITORIAL='Planeta de Agostini' WHERE ID_EDITORIAL=<EL ID DE LA EDITORIAL> De ese modo se realizarían las consultas. Un detalle, esta pregunta no debería estar en el apartado de visual basic. A no ser que lo que me preguntes es como hacer una conexión con ADO a una base de datos ACCESS. En ese caso debes añadir una referencia a la librería Microsoft Active POR Data Objects y crearte una conexión. Luego con un recordset recoger los registros de dicha conexión, o enviar solo la SQL para que se ejecute la actualización.
Disculpa no me expliqué bien la base está hecha en access pero la aplicación la quiero hacer en visual. Por cierto mis conocimientos en visual basic 6.0 son muy básicos hasta el momento solo tengo hechas las pantallas.
Vale, te incluyo una clase. El método que más me gusta para una conexión es a través de ADO, y me genero una clase para controlar la conexión. La clase es de este estilo : Option Explicit Private Conexion As ADODB.Connection Dim innerRS As ADODB.Recordset Private Sub Class_Initialize() On Error GoTo FalloConexion Set Conexion = New ADODB.Connection Conexion.ConnectionString = strMontarCad(LOGIN, PASS, "", SERVICIO) Conexion.Open Exit Sub FalloConexion: MsgBox Err.Description End Sub Private Function strMontarCad(ByVal PestrUsuario As String, ByVal PestrClave As String, ByVal PestrServidor As String, ByVal PestrBD As String) As String Dim mCadenaConex As String ' Esta era la cadena para conectar a Oracle 'mCadenaConex = "Provider=MSDAORA.1;Password=" & PestrClave & ";User ID=" & PestrUsuario & ";Data Source=" & PestrBD & ";Persist Security Info=True" ' Otra cadena para conectar a Oracle, pero por OLEDB 'mCadenaConex = "Provider=OraOLEDB.Oracle.1;Password=" & PestrClave & ";User ID=" & PestrUsuario & ";Data Source= " & PestrBD & ";Persist Security Info=true" ' La que te interesa, para conectar con ACCESS mCadenaConex = "Provider =Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\BaseDeDatos\Primarios.mdb;" strMontarCad = mCadenaConex End Function Public Function ExecuteQuery(SQL As String) As ADODB.Recordset Set innerRS = New ADODB.Recordset innerRS.CacheSize = 30 InnerRS. Open SQL, Conexion. ConnectionString, adOpenForwardOnly, adLockBatchOptimistic, adAsyncFetch Set ExecuteQuery = innerRS End Function Public Sub ExecuteSQL(SQL As String) Conexion. BeginTrans Conexion.Execute SQL Conexion.CommitTrans DoEvents End Sub Private Sub Class_Terminate() If (Conexion.State <> adStateClosed) Then Conexion.Close End If End Sub Una vez creada la clase, digamos que la llamamos ClsConexion. Se usaria de este modo : Te declaras un objeto de la clase : Public Conexion As ClsConexion Set Conexion = New ClsConexion Una vez declarado el objeto, para generar una consulta solo debes hacer lo siguiente : Dim SQL As String Dim rsPrivado As Recordset SQL = "Select max(PAGOS) from TABLAPAGOS " Set rsPrivado = Conexion.ExecuteQuery(SQL) ' A partir de esto, rsPrivado contiene los datos de la consulta. De este modo, ' rsPrivado(0).value sera el primer campo del valor resultado de la SQL Y en este caso el único... Para el caso 2 : SQL = "Select APELLIDOS from TABLAAPELLIDOS where APELLIDOS <> 'MEZA ALVA' GROUP BY APELLIDOS" Set rsPrivado = Conexion.ExecuteQuery(SQL) En este caso, para recorrerte los campos de la consulta, tendrás que hacerlo de este modo : ' Desde el primer elemento, al último... While Not rsPrivado.EOF msgBox( rsPrivado(0)) ' Escribir rs(Privado(0) es lo mismo que poner rsPrivado ("APELLIDOS") ' Bien, ahora pasariamos al siguiente elemento... rsPrivado.MoveNext ' Y cerramos el bucle... Wend Espero haberlo dejado claro... Ah... y no se te olvide en referencias poner las Microsoft Active Data Objects 2.5 Library. Vamos, las librarías de la ADO... Un saludo y espero haberte sido claro y de utilidad.