Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-12-2004
Sick boy Sick boy is offline
Miembro
 
Registrado: may 2003
Ubicación: Cantabria
Posts: 245
Poder: 21
Sick boy Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 17-12-2004
Avatar de alt126
alt126 alt126 is offline
Miembro
 
Registrado: dic 2004
Posts: 171
Poder: 20
alt126 Va por buen camino
Lightbulb 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
Responder Con Cita
  #3  
Antiguo 17-12-2004
Sick boy Sick boy is offline
Miembro
 
Registrado: may 2003
Ubicación: Cantabria
Posts: 245
Poder: 21
Sick boy Va por buen camino
Cita:
Esto es, supongo, porque estas intentado modificar una consulta, y eso no es posible.
Espero que eso no sea cierto

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
Responder Con Cita
  #4  
Antiguo 17-12-2004
Sick boy Sick boy is offline
Miembro
 
Registrado: may 2003
Ubicación: Cantabria
Posts: 245
Poder: 21
Sick boy Va por buen camino
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 17:29:39.


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
Copyright 1996-2007 Club Delphi