Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-03-2021
NeWsP NeWsP is offline
Miembro
 
Registrado: oct 2003
Ubicación: Barcelona
Posts: 57
Poder: 21
NeWsP Va por buen camino
Gracias por contestar,

He probado con:

Código Delphi [-]
  MemPedidos.SetKey;
    MemPedidos.FieldByName('Pedido').Value := pedidoactual;
    MemPedidos.GotoKey;

Pero me hace lo mismo.

Alguna sugerencia para posicionarme en la fila correcta sin que se mueva? T_T
Responder Con Cita
  #2  
Antiguo 04-03-2021
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.912
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Analizando tu código no hay como eso funcione. Lo que describes NO ES lo que haces. Tu NO "actualizas la memtable".

Como quieres que "recuerde" si nuleas la referencia, la limpias del todo y luego la asignas? Totalmente estas haciendo UN NUEVO OBJETO.

Antes gracia que medio ande
__________________
El malabarista.
Responder Con Cita
  #3  
Antiguo 04-03-2021
NeWsP NeWsP is offline
Miembro
 
Registrado: oct 2003
Ubicación: Barcelona
Posts: 57
Poder: 21
NeWsP Va por buen camino
Entonces cual seria el proceso para actualizar la memtable? realmente tengo que volver a recorrer el query para poder actualizar según los datos cambiados

Que propones entonces? actualizo con un query la base de datos y por otro lado actualizado la memtable? o actualizar el memtable y luego volcar a la base de datos?

Por eso preguntaba, como puedes ver en el titulo del post, cual es el procedimiento correcto.

Cita:
, vuelvo a recorrer el primer query y actualizado la memtable y automáticamente el grid,
creo que puse que recorría el query y así actualizaba la memtable, no propiamente he dicho hacer un update, sino volver a cargar los datos, pero vamos, se puede entender de muchas maneras.

Gracias por contestar
Responder Con Cita
  #4  
Antiguo 04-03-2021
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.912
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
En terminos simples, debes hacer un MERGE/UPDATE de los datos viejos con los nuevos. Jalas los datos. Recorres el memtable y usando la llave primaria de los datos comparas con lo que tienes y actualizas los campos, de ser necesario.
__________________
El malabarista.
Responder Con Cita
  #5  
Antiguo 04-03-2021
NeWsP NeWsP is offline
Miembro
 
Registrado: oct 2003
Ubicación: Barcelona
Posts: 57
Poder: 21
NeWsP Va por buen camino
Gracias por contestar,

Ahora ya me has matado...

En principio por lo que entiendo (que no es mucho) al insertar un plazo nuevo en la base de datos, en vez de hacer el empty, tengo que recorrer el query otra vez pero sin hacer

Código Delphi [-]
 with TMSForm1.MemPedidos do
      begin
        Append;
        Fields[0].AsInteger := estado;
        Fields[1].AsDateTime := TMSForm1.FDQuery1.FieldByName('FECPCL').Value;
        Fields[2].AsInteger := TMSForm1.FDQuery1.FieldByName('CODPCL').Value;
        Fields[3].AsString := TMSForm1.FDQuery1.FieldByName('CNOPCL').Value;
        Fields[4].AsString := plazo;
        Post;
      end;

y en lugar de eso, ir comparando uno a uno recorriendo la memtable, y en el caso que el valor sea distinto actualizarlo con un

Código Delphi [-]
 with TMSForm1.MemPedidos do
      begin
        Edit;
        Fields[0].AsInteger := estado;
        Fields[1].AsDateTime := TMSForm1.FDQuery1.FieldByName('FECPCL').Value;
        Fields[2].AsInteger := TMSForm1.FDQuery1.FieldByName('CODPCL').Value;
        Fields[3].AsString := TMSForm1.FDQuery1.FieldByName('CNOPCL').Value;
        Fields[4].AsString := plazo;
        Post;
      end;

Es la primera vez que uso memtables, he mirado algo de información pero ando bastante perdido, por eso preguntaba como era el proceso.

Gracias otra vez

Edit: Aunque pensando fríamente, cuando introduzco un plazo, realmente ya se que fila de la tabla voy a modificar, podría hacer el edit directamente sobre esa fila, sin tener que hacer el query de recorrer, y unicamente hacer el query de actualizar la base de datos y asi me ahorro toda la comparación (que en otros sitios si que tendria que hacer... T_T)

Voy bien por ahi?

Última edición por NeWsP fecha: 04-03-2021 a las 16:57:17.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Es Correcto este Procedimiento? novato_erick SQL 4 21-11-2012 19:22:50
hay algun comando para duplicar una ficha de un memtable? cocute Conexión con bases de datos 0 19-12-2009 12:06:23
Grid no trae el result correcto Paulao Varios 14 19-03-2009 14:16:52
Usar un solo procedimiento almacendado para restar o sumar valores a un mismo registro Chogo Trucos 2 11-05-2007 17:39:01
Como usar las transacciones que es lo correcto azraelrvg Firebird e Interbase 1 21-10-2003 23:02:37


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


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