Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Modificar datos en un dbgrid (https://www.clubdelphi.com/foros/showthread.php?t=16952)

Sick boy 17-12-2004 13:40:06

Modificar datos en un dbgrid
 
Hola,

Uso delphi 5 y paradox, y tengo el siguiente problema:
Dispongo de un query que se ejecuta en runtime con una sentencia simple (sin calculos, groups ni joins).
El query esta enlazado a un datasource y este a su vez a un dbgrid.
Puse las propiedades adecuadas para que me permitiera un autoedit, de forma que se puedan cambiar datos desde el grid.

Hasta aqui todo bien.

Luego, para darle mas velocidad, modifique un indice secundario, al cual añadi dos campos más (primero era solo linea, ahora tiene linea, fecha y ticket)

Al hacer esta modificacion el grid no me permite cambiar datos, solo verlos.
Si cambio el indice secundario y le quito esos campos me permite modificar de nuevo.

¿¿ Alguien tiene alguna sugerencia, o sabe por que pasa esto ??

Saludos

alt126 17-12-2004 15:16:51

No lo se seguro pero...
 
puede ser porque estas usando un query. Si lo cambias a un table, seguro que te deja modificarlo. Esto es, supongo, porque estas intentado modificar una consulta, y eso no es posible. Si quieres podrias hacer algo un poco mas complicado, pero que te de el mismo resultado. ¿como?

1º dejas todo como esta.

2º pones un evento onclick en el dbgrid, y dentro de ese evento, capturas algun campo de la consulta, preferentemente algun campo clave (key).

3º con un componente ttable, apuntando a la tabla que quieres modificar, la recorres por codigo en el evento del punto 2, hasta que el campo de la tabla concuerde con el campo capturado del dbgrid. Asi ya estaras posicionado en el mismo registro, del query que de la tabla.

4º ya simplemente modificas el objeto ttable, con lo que quieras y ya ta.

No se si me he explicado muy bien, pero bueno, sino, dimelo e intentare mandarte algun codigo...;)

Adios,

Antonio

Sick boy 17-12-2004 16:28:15

Cita:

Esto es, supongo, porque estas intentado modificar una consulta, y eso no es posible.
Espero que eso no sea cierto :confused:

Puedo modificar los datos de esa consulta si quito de la tabla dos campos del indice secundario, pero esto resta velocidad.
No se si sera alguna limitacion de las bases Paradox, pero necesito saberlo.

Lo que propones no lo puedo hacer, a parte de ser algo lento, no quiero poner componentes TTable.

En todo caso podría utilizar un query con un UPDATE para actualizar los datos, pero no puedo recoger el nuevo valor ya que el dbgrid queda como readonly, y no deja escribir nada.

Muchas gracias de todas formas

Sick boy 17-12-2004 16:39:25

Encontre la causa.

En el query hay un "order by linea", y no se por que motivo, cuando lo quito funciona, aun con el indice secundario con tres campos.

Si no hay otra solucion quitare ees order by, pero me gustaria conservarlo.

Saludos


La franja horaria es GMT +2. Ahora son las 02:41:41.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi