![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
duda edit, insert, delete en Delphi 7 y MySQL
Saludos y gracias anticipadas por la ayuda.
LLevo mucho años con Delphi y Paradox, y multitud de aplicaciones, y he comenzado a efectuar una migración de Paradox a MySQL y al comenzar una serie de pruebas, me doy cuenta de lo siguiente, y no se si es desconocimiento o que ya no funcionan las cosas igual : Hasta ahora usaba TTable y TDatasource para las tablas, y he instalado los componentes Zeos, concretamente he probado TZTable. no he modificado nada de codigo (de momento) y funcionan comandos tales como locate, etc, incluso puedes intercalar sentencias SQL. el problema viene cuando quieres modificar un registro, por ejemplo T_Clientes.Edit; T_Clientes.FieldByName('Nombre').asstring := 'AAA'; T_Clientes.post; ves el cambio reflejado el el dbgrid que tengo para ver los datos, que está asociado al Datasource de la tabla, pero si haces un close, y luego un open, los datos no quedan grabados, al igual que si haces un .delete, tampoco lo borra. he probado con T_Clientes.applyUpdates; T_Clientes.CommitUpdates; pero ni por esas. seguramente no se puede, y ahora hay que trabajar con sentencias tipo select ... , update .... , insert ...., delete from .... en SQL. alguien me puede dar un poco de luz sobre éste tema. si es así, me veo obligado a modificar muchisimo código, cosa que haré, pero me gustaría no meter la pata. al mismo tiempo, sabéis si existe algún libro en el mercado apropiado y con ejemplos Delphi - MySQL ? Muchisimas gracias por la atención, y perdón por el tocho escrito. |
#2
|
||||
|
||||
Si haces post y commit, debería quedar grabado. Veamos qué opina otro compañero más experto en el tema.
p.d.: por favor, no repitas temas, gracias.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#3
|
|||
|
|||
tema duplicado
tienes razón, creía que me había equivocado de sub-foro, y por eso lo puse en el otro. lo siento.
gracias |
#4
|
||||
|
||||
Me imagino que habrás cambiado los componentes que tenías antes por los de zeos. Por ejemplo, ese TTable lo has sustituido por el similar de zeos?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#5
|
|||
|
|||
.
pues sí, el TTable lo he sustituido por el TZTable, ya que el TTable no tiene como propiedad Connection, dentro de la cual, le pones la IP del servidor y el protocolo mysql-5.
hace la conexión perfectamente, incluso te muestra todos los campos del fichero en un dbgrid. pero luego, el mantenimiento de datos, es lo que falla, no da errores ni nada, simplemente no graba, no borra, etc. |
#6
|
||||
|
||||
¿Puedes poner algo de códgo más completo que lo anterior?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#7
|
|||
|
|||
.
Así funciona :
cod.Text := '7'; T_Est.locate('Cod',Vararrayof([Cod.text]),[loCaseInsensitive]); Q_Est.SQL.Text := 'Update Estab set Nombre = "XXX" where Cod =' + cod.text; Q_Est.ExecSQL; // Ha Quedado modificado el registro T_Est es un TZTable Q_Est en un TZQuery Así no funciona : cod.Text := '7'; T_Est.locate('Cod',Vararrayof([Cod.text]),[loCaseInsensitive]); T_Est.edit; T_Est.FieldByName('DescExp').asstring := 'XXX'; T_Est.post; T_Est.applyUpdates; T_Est.Commitupdates; // Cuando cierras la base, y luego la abres, no ha modificado el registro |
#8
|
||||
|
||||
No conozco bien los componentes zeos, pero creo que el commit debes hacerlo a la transaction de la conexión, sería algo así como:
Código:
ZTable1.Connection.Commit; Código:
T_Est.Connection.Commit;
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#9
|
|||
|
|||
.
es curioso, haces la modificacion, ejecuto la sentencia que me indicas
t_estab.Connection.Commit; en el dbgrid, se ve el campo modificado, sales y entras del programa, y la modificación se ha perdido, está el valor anterior. Parece ser que la modificación ha sido temporal, guardada en la caché. como si faltase algún comando que fuerze la grabación en la base de datos. |
#10
|
|||
|
|||
Solucionado
cod.Text := '7';
T_Est.locate('Cod',Vararrayof([Cod.text]),[loCaseInsensitive]); T_Est.edit; T_Est.FieldByName('DescExp').asstring := 'XXX'; T_Est.post; T_Est.applyUpdates; ConexionSQL01.AutoCommit := true; ConexionSQL01.AutoCommit := false; así queda grabado fisicamente, tambien se puede cambiar el .edit por .delete o por .append saludos y gracias |
#11
|
||||
|
||||
ConexionSQL01.AutoCommit
Y si pones esta propiedad a true desde que inicias el programa, ¿funcionará siempre sin tener que poner true y luego false?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#12
|
|||
|
|||
.
tienes razón, lo tenia a false porque al principio, me lanzaba un error culpa mía por mezclar propiedades que no debía.
entonces quedaría así : T_Estab.Edit; T_Estab.FieldByName('DescExp').asstring := 'AAAAAA'; T_Estab.post; T_Estab.applyUpdates; (con conexion.autocommit := true en el diseño y conexion.loginprompt = false para que no pida contraseña) saludos y mil gracias. |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Insert, Update, Delete+MySQL+Zeos+Master/Detail | BlackDaemon | MySQL | 4 | 03-04-2007 12:04:07 |
Por que el DBLookupoComboBox no se mueve con insert y delete | David | Conexión con bases de datos | 1 | 19-07-2006 17:05:34 |
Trigger Before (Insert,update,delete)? | estebanx | MS SQL Server | 2 | 25-05-2006 15:58:19 |
Como crear una sentencia SQL (Insert, update y delete) | sitrico | Conexión con bases de datos | 1 | 14-10-2004 00:02:42 |
Insert automatico despues de Delete | jealousy | Conexión con bases de datos | 2 | 20-09-2003 02:25:14 |
![]() |
|