Título: ADO c++ Recordset Open y Command Execute Publicado por: SubAtomicParticula en 30 Julio 2017, 11:14 am Saludos, tengo un programa que muestra datos de una DB Access a través de ADO. Uso un proveedor "Provider=Microsoft.Jet.OLEDB.4.0;". El problema es que utilizo un:
command->CommandText = "DROP VIEW Niveles"; commando->Execute(NULL, NULL, ADO::adCmdText | ADO::adExecuteNoRecords); Para eliminar una Consulta y volver a Crearla con otro argumento: command->CommandText = "CREATE VIEW Niveles AS SELECT ..."; commando->Execute(NULL, NULL, ADO::adCmdText | ADO::adExecuteNoRecords); Todo se ejecuta bien, pero cuando intento abrir un RecordSet que incluye dicha Consulta me da error en Open: Recordset->Open("SELECT ... FROM Niveles ...", (IDispatch *)Connection, ADO::adOpenKeyset, ADO::adLockOptimistic, ADO::adCmdText); Al iniciar el programa la primera iteracción se ejecuta bien, pero a la segunda o tercera vez que ejecuto el código salta error en Recordset->Open, y marca error tabla no existe, debido a que uso una consulta que justo antes he borrado y creado de nuevo. Si en el código salto la parte de borrar y crear la consulta me funciona bien, por lo que supongo que tiene que ver con borrar la consulta e intentar usarla antes de que se vuelva a crear. Esta afirmación se ve reforzada cuando al utilizar un Sleep(10000); o si creo puntos de interrupción, el programa funciona y obtiene los datos tantas veces como sea necesario. Si alguien puede darme alguna pista de por donde puedo solucionar el problema. Gracias, un saludo. |