Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Al hacer tabla.edit se cambia de registro, porque? (https://www.clubdelphi.com/foros/showthread.php?t=17851)

URBANO 24-01-2005 10:02:35

Al hacer tabla.edit se cambia de registro, porque?
 
Hola foro, la verdad es que estoy desconcertado. Os comento mi problema:

Al ejecutar la sentencia tabla.next, esta sentecia en vez de editarme el registro actual me edita el anterior, es decir, si yo estoy en el registro 4, al ejecutar la sentecia se coloca en el regitro 3 y lo edita (esto lo observo haciendo un seguimiento del programa linea por linea). ¿Por que me ocurre esto?

Existe dos caminos para llegar a ejecutarse esa sentencia, por uno de ellos esto que comento no pasa , pero por el otro si y el unico codigo que varia de un camino a otro es el siguiente (tabla = Tfichaventa):
Código SQL [-]
 query1.Close;
 sql:='select * from fichaventa'+#13+
      'where cliente = '+inttostr(datos.tticketcliente.value)+#13+
      'and saldo <> 0'+#13+
      'order by numero,fecha';
 query1bde(query1,datos.GestAtm.AliasName,sql);
 //si existe una ficha la modificamos
 if query1.RecordCount <> 0 then
 begin
    query1.First;
    datos.Tfichaventa.IndexName:='ficnum';
    with datos.Tfichaventa do
    begin
     setkey;
     datos.tfichaventanumero.AsInteger:= Query1numero.Value;
    end;
    detallesClick(Sender);

Gydba 24-01-2005 13:55:46

Hola,

Recomendación aparte: las etiquetas de código te hacen muy bonito y legible tus post, ánimos que sólo es agregarle unos simples tags.

En respuesta a tu post, el problema no parece ser del NEXT sino del ORDER BY que estás haciendo o mismo del Index que parece estar aplicando.

URBANO 25-01-2005 11:03:35

No lo entiendo
 
Gydba, no lo entiendo. El order by lo aplico a un query que antes de editar la tabla lo cierro y no se que puede estar mal del indice (es simplemente un indice del campo principal, que es un entero).
Por que motivo crees que el problema viene de hay?

Gracias por tu respuesta.

Gydba 25-01-2005 12:32:39

Hola,

En realidad en tu código sólo aparece un close, y es antes de abrir el query con el ORDER BY aplicado:
Código Delphi [-]
 query1.Close;
 sql:='select * from fichaventa'+#13+
      'where cliente = '+inttostr(datos.tticketcliente.value)+#13+
      'and saldo <> 0'+#13+
      'order by numero,fecha';
...
La respuesta que te di en realidad no sé si es la correcta o no, sólo sé que aplicando un INDEX o un ORDER BY tu dataset asociado cambia completamente su orden, por lo que al navegar con el NEXT no podrías obtener el resultado deseado.
Creo que lo más gráfico sería que pusieras un DBGrid enlazado a ese dataset para ver cómo realmente están ordenados los datos.

Pero como dije, no es la respuesta absoluta a tu problema, pero es lo que se me ocurre. Quizás no estás posteando el código exacto donde te da el problema...

Saludos!


La franja horaria es GMT +2. Ahora son las 13:13:18.

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