 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Gutix Invitado
|
Publicado: Jue 13 Mar, 2003 1:15 pm Asunto: Modificacion de una BD Access con un TQuery |
|
|
Hola foro:
Tengo una BD Access sobre la que realizo una consulta con un TQuery, en el recupero de una tabla ARTICULOS los campos de ID_ARTICULO, ARTICULO y AUTOR y los muestro en un DBGRID.
Hasta aquí bien, pero ahora introduzco un TUpdateSQL con las siguientes instrucciones SQL:
a) Borrado
DELETE FROM Articulo
WHERE Articulo.ID_Articulo = :OLD_ID_Articulo
b) Inserción
INSERT INTO Articulo (ID_Articulo, Articulo, Autor)
VALUES (:ID_Articulo, :Articulo, :Autor)
c) Modificación
UPDATE Articulo
SET Articulo.Articulo = :Articulo, Autor = :Autor
WHERE Articulo.ID_Articulo = :OLD_ID_Articulo
Luego ajusto las propiedades del TQuery CachedUpdate y UpdateObject para que se puedan ejecutar las modificaciones en local y enlazar con el objeto UpdateSQL.
Inserto un botón de Actualizar Datos que contiene el siguiente código:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
try {
Query1->ApplyUpdates(); //Aplicamos los cambios
Query1->Refresh(); // actualizamos la vista
} catch (...) {
ShowMessage("No es posible actualizar");
}
Query1->CommitUpdates (); //Limpiamos los cambios locales
}
Lo ejecuto y funciona, me deja modificar en local los datos que hagan falta sin ningún problema y cuando actualizo me salta el siguiente error al ejecutar el Refresh(): EDBEngineError with message 'Table does not support this operation because it is not uniquely indexed'. Process stopped ...
Sin embargo si comento la línea del refresh me lo hace bien, me lo actualiza en la BD. ¿para que sirve el refresh()? ¿Se puede uitlizar con bases de datos SQL y en particular con las de Access? Lo he copiado de un libro y no tengo claro que es lo que hace, pero lo he probado y cuando NO comento la línea del Refresh () me salta el error anterior.
NOTA: Para terminar una pequeña cuestión que me ronda en la cabeza desde que empecé. ¿Es mejor utilizar ADO o BDE? Yo tengo la BD en Access y por lo poco que he tratado con el BDE creo que no lo soporta muy bien, creo que está mas orientado a dbase y paradox.
Gracias, aunque sólo sea por aguantar hasta esta línea. |
|
| Volver arriba |
|
 |
Scooby Ens


Registrado: 25 Sep 2002Mensajes: 49Ubicación: Nunca Máis
|
Publicado: Vie 14 Mar, 2003 8:35 am Asunto: |
|
|
En cuanto a tu segunda pregunta te digo que ADO fue desarrollado por Microsofot y sus herramientas son las más adecuadas para tratar bases de datos Access y Microsoft SQLServer, aunque también permite tratar con otros SGBD.
En cuanto a tu problema, no he revisado el código, pero espero que no estés modificando los índices de las tablas ya que eso puede ser lo que te provoque el problema. _________________ Iré a cualquier sitio siempre y cuando sea hacia delante.
Livingstone |
|
| Volver arriba |
|
 |
Scooby Ens


Registrado: 25 Sep 2002Mensajes: 49Ubicación: Nunca Máis
|
Publicado: Vie 14 Mar, 2003 8:36 am Asunto: |
|
|
En cuanto a tu segunda pregunta te digo que ADO fue desarrollado por Microsofot y sus herramientas son las más adecuadas para tratar bases de datos Access y Microsoft SQLServer, aunque también permite tratar con otros SGBD.
En cuanto a tu problema, no he revisado el código, pero espero que no estés modificando los índices de las tablas ya que eso puede ser lo que te provoque el problema. _________________ Iré a cualquier sitio siempre y cuando sea hacia delante.
Livingstone |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|