Me llamo Rebeka y mi problema es cómo se define una sql en access, como se ejecuta y como se recorre. He probado runsql pero no lo entiende, database tampoco entiende estoy bastante perdida.
Si ya lo he probado lo que pasa que el database no lo pilla access entonces no puedo ejecutar la consulta
Supongo que habrás creado el objeto Database, y que estarás usando un recordset o algo parecido, ¿no? Si todo eso lo has probado y sigue sin funcionar, a lo mejor es que tienes la versión incompleta y te falta algún modulo de Access. Intentalo, no se me ocurre nada más, de momento
Para manejar sentencias SQL de Access debes manejar un objeto DAO tipo base de datos. Para ello lo que debes hacer es en tu proyecto ir al menu Proyecto->Referencias. En la pantalla de referencias buscarás una que dice "Microsoft DAO 2.5/3.5 Compatibility Library" o superior, como "Microsoft DAO 3.6 Object Library", etc. y hacer clic en la casilla de verificación, es decir, seleccionarlo, enseguida hacer clic en aceptar. Esto es para establecer la librería con la que vamos a trabajar la base de datos. Hay otras formas de hacerlo, por ejemplo con ADO, pero hablaremos sobre la antes mencionada, que es la más sencilla. Enseguida el código será el siguiente: 'Establecemos el objeto con el cual manejaremos la base de datos. Dim bd As Database 'Establecemos un Recordset para manejar las tablas. Dim rs As Recordset 'Variable para almacenar las sentencias SQL Dim CadSQL As String 'Variable para guardar un importe. dim sImporte as Double 'Abres la base de datos de access. Set bd = OpenDatabase("c:\mis documentos\MiBase.mdb") 'Estableces la sentencia SQL que deseas hacer. 'Esta es una forma de manejar un Recordset solo de lectura. CadSQL = "Select * From Tabla1 Where [Campo 1] = 14 And Descripcion Like '*todoexp*'" Set rs = bd.OpenRecordset(CadSQL, dbOpenSnapshot) 'Puedes volver a hacer un recordset sobre el mismo objeto y sin necesidad de cerrarlo previamente 'ya que al volver a ejecutarlo con la nueva sentencia SQL el solo hace eso y no da ningún error, 'pudiendo abrir la misma tabla que en la sentencia anterior o cualquier otra tabla de la base de datos CadSQL = "Select Sum(PrecioUnitario * Cantidad) As Importe " & _ "From [Detalle de la orden] Where Orden = 2714" Set rs = bd.OpenRecordset(CadSQL, dbOpenSnapshot) If rs.recordcount > 0 then sImporte = rs!Importe End If 'Puedes realizar otra sentencia sin necesidad de crear un recordset (sin el objeto rs creado arriba) 'Solo que como podrás observar, de esta forma no te devuelve datos, solo un estatus de si tu 'operación se realizó de forma correcta o incorrecta. Normalmente la utilizo para hacer actualizaciones CadSQL = "Update Tabla1 Set Status = 'P' Where [Orden de pago] > 0 And Vigente = 1" Bd. Execute CadSQL 'Misma instrucción pero sin la variable, sino directamente. bd.Execute "Delete From Tabla1 Where Status = 'X' And Vigente = 0" 'Si usaste recordset, cerrarlo. Rs. Close 'Cerrar base de datos. Bd. Close Espero que sea lo que me preguntaste, si no es así, no cierres la pregunta y dímelo.