![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
![]() Muy buenas, desde hace poco migré de paradox (bde) a ADO y he tenido problemas cuando elimino registros, uso el locate y lo "elimina bien":
With Tabla_ADO Do Begin Open; If locate (etc) Then Begin Edit; Delete; end; End; La cuestion es que despues cuando registro con el mismo codigo (campo llave) me da el error de key violation. ¿Que estoy haciendo mal?, acaso quedan en la memoria los datos?, Si abro y cierro la tabla todo ok, pero no me parece optimo. Por cierto a veces que edito o registro tambien me manda errores o no se guarda como deberia. POR FAVOR AYUDA. De antemano muchas gracias. Desde Colombia, Jorge Luis Montes. |
#2
|
||||
|
||||
Hola
POST. Saludos
__________________
Siempre Novato |
#3
|
||||
|
||||
Bienvenido a clubdelphi, no olvides leer nuestra guía de estilo y recuerda poner etiquetas al código. Gracias por tu colaboración.
![]() .
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#4
|
|||
|
|||
![]() Buscando encontré que con la orden UpdateBatch despues del Post los datos en memoria se ingresaban ala tabla y listo.
Sin embargo aun no se como hacer esa accion despues de eliminar o cambiar datos con sql a traves del componente ADOQUERY, lo coloco despues de EXECSQL y me manda error de que no esta abierta la "consulta". Alguna idea de lo que pasa o debo hacer?. De antemano muchas gracias. |
#5
|
||||
|
||||
El ExecSQL se utiliza cuando ya tienes todo listo.... no antes. Y solo para consultas de modificación o alteración de datos. Para un "select" normal, se utiliza open.
ese ejemplo borraría de la tabla todos los registros donde " UnCampo = 1 " Saludos.
__________________
|
#6
|
|||
|
|||
Ssssii pero...
Desde que usaba bde uso esas sentencias para eliminar, el caso es que con ADOQUERY aparentemente elimina pero cuando ingreso algun registro que supuestamente eliminó envia el Key Violation, entonces lo elimina de la tabla en memoria, pero no en la fisica. Coloqué el UpdateBatch despues del ExecSql pues imaginé que asi se reflejarian las eliminaciones en la tabla fisica pero manda error:
¿Como debo codificar? |
#7
|
||||
|
||||
Hola
Saludos
__________________
Siempre Novato |
#8
|
|||
|
|||
Nada aun!!
Lo siento amigo Caral, el codigo no manda error pero los registros no se liberan de la memoria, abro la base de datos desde acces y no estan y en el programa si, las eliminaciones o cambios solo se aprecian si reinicio el programa, ¿raro no?.
Gracias por tu ayuda... |
#9
|
||||
|
||||
Hola
No entiendo la razon. Si no es muy grande el programa y la BD enviamelos, lo reviso. Saludos
__________________
Siempre Novato |
#10
|
||||
|
||||
Hola
No entiendo muy bien, explicame esto: 1. Cuando ejecuto el delete los registros SI se eliminan de la BD pero NO del programa ?. 2. Cuando ejecuto el delete los registros NO se eleminan de la BD ?. 3. NO hace nada . Saludos
__________________
Siempre Novato |
#11
|
|||
|
|||
Te explico...
Cuando ejecuto el delete los registros SI se eliminan porque (con el programa abierto) abro desde access la bd y ya no estan, cierro access y los busco dentro del programa y aun se encuentran. Acces no los muestra pero el programa si aun despues de "eliminarlos".
|
#12
|
||||
|
||||
Hola
El componente donde los muestras me imagino que es un DBgrid. Este componente tiene que estar ligado a algun otro (ADOTable o AdoQuery), por medio de un datasource. Si cierras y abres estos entonces se actualizara el programa. Ejemplo: Digamos que el DBGrid esta ligado a un AdoTable y que el adoQuery solo ejecuta la accion de eliminar, entonces: Saludos
__________________
Siempre Novato |
#13
|
|||
|
|||
Asi funciona, pero...
No uso un dbgrid, busco el registro con locate (a traves del campo llave) y lo encuentra y sí.., si cierro y abro la tabla hace justo lo que necesito pero a mi parecer no es lo optimo pues cuando usaba bde no tenia que hacer eso y los cambios se reflejaban inmediatamente.
Será que no hay manera o solo como comentas, es decir cerrando y abriendo las tablas? |
#14
|
||||
|
||||
Hola
Que yo sepa la unica forma de actualizar los datos es: 1- Cerrando y abriendo la tabla. 2- Haciendo un refrech del componente. 3- Haciendo un Requery.
Saludos
__________________
Siempre Novato |
#15
|
|||
|
|||
Ok
Listo compañero, le agradezco por la ayuda brindada.
Muchisimas gracias |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
necesito ayuda urgente!!! | mia85 | Conexión con bases de datos | 3 | 17-11-2009 02:50:51 |
Necesito ayuda urgente Problema con BDE | armadillo | Tablas planas | 4 | 17-03-2009 20:06:54 |
Necesito ayuda urgente | japons | Conexión con bases de datos | 4 | 14-12-2007 09:55:21 |
necesito ayuda urgente!!!! | principiante22 | Varios | 5 | 31-01-2007 00:19:49 |
Necesito ayuda urgente, please!!! | chabbertd | Internet | 0 | 29-07-2003 20:46:31 |
![]() |
|