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 22-05-2008
Avatar de Alexandro
Alexandro Alexandro is offline
Miembro
 
Registrado: mar 2008
Ubicación: Mayarí Holguín Cuba
Posts: 127
Poder: 17
Alexandro Va por buen camino
Unhappy Tabla no se actualiza

Hola a todos nuevamente:
Ayer me encontré con un problema y realmente no se que pasa.
Estoy usando delphi 7 y Paradox7. Tengo 2 tablas: TDatos y TAlmacen
En TDatos estan los datos reales que existen y en TAlmacen las cosas del almacen. Ahora bien, yo deseo sustituir algo en TDatos por algo que está en TAlmacen.
Entonces a TDatos le digo que localice el registro que deseo cambiar (campo unico) y que cambie la informacion del registro por una de TAlmacen y Que TAlmacen borre esa que se puso en TDatos y agregue la que quité en TDatos.
El codigo es este:

Código Delphi [-]
                            
FPrincipal.TDatos.Open;
FPrincipal.TDatos.Locate('No_Inventario',FModifica.CB_Inventario_Mejora.Text,[]);
Campo1:=FPrincipal.TDatos.FieldByName('Monitor').AsString;
Campo2:=FPrincipal.TDatos.FieldByName('Monitor_Estado').AsString;
with FPrincipal.TDatos do
                             begin
                               Open;
                                                     Locate('No_Inventario',FModifica.CB_Inventario_Mejora.Text,[]);
                                                     //guardo los cambios
                                                     Edit;
                                                     FieldByName('Monitor').AsString:=QAlmacen.FieldByName('Marca').AsString;
                                                     FieldByName('Monitor_Estado').AsString:=QAlmacen.FieldByName('Estado').AsString;
                                                     Post;
                                                     Close;
                                                  end;

                              with TAlmacen do
                                            begin
                                               Open;
                                                if Locate('Medio ; Marca',VarArrayOf(['Monitor',Campo1]),[]) then  Delete;
Insert;
                                                FieldByName('Fecha').AsDateTime:=Date;
                                                FieldByName('No_Inventario').AsString:=FModifica.CB_Inventario_Mejora.Text;
                                                FieldByName('Medio').AsString:='Monitor';
                                                FieldByName('Marca').AsString:=Campo1;
                                                FieldByName('Estado').AsString:=Campo2;
                                               Post;
                                               Refresh;
                                               Close;
                                            end;

Ahora que pasa con esto. En ocaciones TAlmacen borra el registro y agrega el que tiene que agregar, pero otras veces solo agrega y no borra el registro.
Les pido que le echen un vistazo al codigo y me digan que hay mal.
Salu2 y suerte.
Chao
Responder Con Cita
  #2  
Antiguo 22-05-2008
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 20
basti Va por buen camino
Es posible que lo haga mal cuando se introduce el un código incorrecto. El primer locate deberías ponerlo como condición de un if para comprobar el código.

Código Delphi [-]
FPrincipal.TDatos.Open;
if FPrincipal.TDatos.Locate('No_Inventario',FModifica.CB_Inventario_Mejora.Text,[]) then
begin
  Campo1:=FPrincipal.TDatos.FieldByName('Monitor').AsString;
  Campo2:=FPrincipal.TDatos.FieldByName('Monitor_Estado').AsString;
  with FPrincipal.TDatos do
  begin
    // Open; ---> ya está abierto
    // Locate('No_Inventario',FModifica.CB_Inventario_Mejora.Text,[]); --> ya se hizo arriba
    //guardo los cambios
    Edit;
    FieldByName('Monitor').AsString:=QAlmacen.FieldByName('Marca').AsString;
    FieldByName('Monitor_Estado').AsString:=QAlmacen.FieldByName('Estado').AsString;
    Post;
    Close;
  end;

  with TAlmacen do
  begin
    Open;
    if Locate('Medio ; Marca',VarArrayOf(['Monitor',Campo1]),[]) then  Delete;
    Insert;
    FieldByName('Fecha').AsDateTime:=Date;
    FieldByName('No_Inventario').AsString:=FModifica.CB_Inventario_Mejora.Text;
    FieldByName('Medio').AsString:='Monitor';
    FieldByName('Marca').AsString:=Campo1;
    FieldByName('Estado').AsString:=Campo2;
    Post;
    // Refresh; --> antes de cerrar no hace falta.
    Close;
  end;
end
else Application.MessageBox('Registro no encontrado', 'Error');
__________________
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
QRImage no se actualiza Moparova Impresión 3 21-02-2007 17:21:22
No actualiza IBQ trex2000 Conexión con bases de datos 2 19-01-2007 20:52:20
No actualiza trex2000 Firebird e Interbase 2 28-01-2005 23:43:20
¿Como se actualiza un campo de una tabla a partir de las columnas de otra? salvica SQL 12 09-07-2004 01:56:10
No actualiza . . . Agar23 Conexión con bases de datos 12 25-05-2004 09:27:52


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


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