Quiero hacerte una pregunta haber si puedes ayudarme. Me podrías explicar como asignar a un textbox el resultado de una consulta realizada a una tabla. Mi consulta es básicamente la siguiente: SELECT campo FROM tabla WHERE nombre= 'Pedro'
1 Respuesta
Respuesta de Neckkito Nck
1
1
Neckkito Nck, Access... ser o no ser. Esa es la cuestión
Con los datos que me das en tu consulta no puedo explicarte cómo sería el proceso entero. Me explico: el código que te voy a pasar lo puedes asignar a un evento después de actualizar de un combobox, o lo puedes asignar al evento al hacer click de un botón de comando, o a otro que se te ocurra. Doy por supuesto que sabes cómo hacer eso. De todas maneras, si tienes dudas, me lo comentas. La consulta que escribes (SELECT...) devuelve un conjunto de registros (recordset) que, en este caso, sólo contiene un registro (suponiendo que sólo pueda haber un "Pedro"). Sobre ese supuesto te doy la explicación (si no tendrías que añadir más condiciones a la cláusula WERE para ir delimitando los resultados). OK. Pues lo que tenemos que hacer es crear un recordset de esa consulta con un sólo campo y un sólo registro. Te lo explico un poco en abstracto para que después puedas entender mejor el código. Para crear un recordset emplearemos DAO. En DAO tienes que definir la conexión a la base de datos y la conexión al recordset. Esto se hace mediante el "Dim dbs" y "Dim rst" que verás en el código. A continuación tienes que especificar qué base de datos es la que quieres "conectar", a través de un "Set dbs", y qué recordset quieres abrir, a través del "Set rst". Y ese recordset te vendrá dado por la consulta que me comentas, y que yo he identificado con la variable "mySql". Una vez rst ha "abierto" el recordset tenemos que capturar el valor que devuelve la consulta. Para ello le decimos que el valor que queremos está en el "Field" cero (que sería el único campo que tiene el recordset) y asignarlo al TextBox. Yo al textbox lo he llamado "txtResultado", y todo lo anterior se hace con el <me.txtResultado.value = valor el campo cero del recordset>. Después de este rollo teórico te escribo el código para que lo puedas ver: --- 'Definimos la consulta y el recordset Dim mySql As String Dim dbs As DAO.Database Dim rst As DAO.Recordset mySql = "SELECT [Tabla1].[Campo] FROM [Tabla1]" mySql = mySql & " WHERE [Tabla1].[Nombre]= 'Pedro'" Set dbs = CurrentDb Set rst = dbs.OpenRecordset(mySql, dbOpenSnapshot) 'Asignamos el valor al TextBox Me.txtResultado.Value = rst.Fields(0).Value 'Cerramos el recordset y liberamos memoria rst.Close dbs.Close Set rst = Nothing Set dbs = Nothing --- Y eso es todo. Para mayor información, si te fijas en la línea "Set rst = dbs.OpenRecordset(mySql, dbOpenSnapshot)", como no vamos a modificar ningún registro y sólo nos interesa consultarlo, añadimos el comando "dbOpenSnapShot". Si te has perdido en algo me lo comentas e intento explicarme de otra manera. Ya me dirás cosas.
Muchas gracias por tu respuesta, es exactamente lo que buscaba y tu explicación es clara. Si no te molesta, te consideraré para futuras consultas. Gracias!