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 08-04-2013
Vales08 Vales08 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 133
Poder: 14
Vales08 Va por buen camino
Ahh claro..
Lo que sucede es que en la tabla PLAN_Y_ALIM solo tengo el ID_PLAN_Y_ALIM y luego las forenkey ID_ALIM (Pertenece a la tabla ALIMENTOS) y ID_PLAN (pertenece a la tabla PLANES_ALIM).
Entonces lo que yo necesito es que al seleccionar un registro de la tabla ALIMENTOS, ese registro se guarde en la tabla PLAN_Y_ALIM, donde se genera un ID_PLAN_Y ALIM y se le asigna el ID_ALIM seleccionado y el ID_PLAN de la tabla PLANES_ALIM (ese id sale de un alta que hago antes). No se si se entiende.
el codigo tendria que quedar asi entonces:

Código Delphi [-]
DM.Q_plan_y_alim.Active:=False;
with DM.Q_plan_y_alim.SQL do
  begin
    Clear;
    Add('INSERT INTO PLAN_Y_ALIM (ID_ALIM, ID_PLAN)');
    Add('SELECT ID_ALIM ');
    Add('FROM ALIMENTOS ');
    Add('WHERE NOT EXISTS (SELECT PLAN_Y_ALIM.ID_ALIM, PLAN_Y_ALIM.ID_PLAN ');
    Add('FROM PLAN_Y_ALIM ');
    Add('WHERE ALIMENTOS.ID_ALIM = PLAN_Y_ALIM.ID_ALIM');
    Add('AND PLANES_ALIM.ID_PLAN_A = PLAN_Y_ALIM.ID_PLAN)')
  end;
DM.Q_plan_y_alim.Active:=True;

Seria mas o menos asi??
Responder Con Cita
  #2  
Antiguo 08-04-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Vales08.


Si, si el campo ID de la tabla PLAN_Y_ALIM se genéra automáticamente sólo sería necesario completar esos campos.

Pero cuando te referis a:
Cita:
Entonces lo que yo necesito es que al seleccionar un registro de la tabla ALIMENTOS, ese registro se guarde en la tabla PLAN_Y_ALIM...
No me queda en claro si es lo que estas precisando... Por que la sentencia SQL que te puse en el mensaje #12, copia todos los campos no repetidos de una tabla a otra (que es de lo que se trataba inicialmente el hilo)

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 08-04-2013
Vales08 Vales08 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 133
Poder: 14
Vales08 Va por buen camino
Ahh entonces estoy equivocada con el codigo.. Yo necesito pasar archivos de una tabla a otra sin repetir, pero no todos, si no los que yo voy seleccionando desde una grilla..
Mil disculpas por haber ocupado tu tiempo en algo que no era. Y muchas gracias por tu dedicación.
Responder Con Cita
  #4  
Antiguo 09-04-2013
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.289
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Vales08 Ver Mensaje
Yo necesito pasar archivos de una tabla a otra sin repetir, pero no todos, si no los que yo voy seleccionando desde una grilla..
En ese caso deberás pasarlos 1 a 1 realizando un recorrido por los que tienes seleccionados en el DBGRid.
Para el recorrido puedes utilizar la propiedad SelectedRows y para cada registro hacer la copia.

Código Delphi [-]
var
  i: Integer;
begin
  if DBGrid1.SelectedRows.Count > 0 then  begin
    with DBGrid1.DataSource.DataSet do  begin
      for i := 0 to DBGrid1.SelectedRows.Count-1 do  begin
        GotoBookmark(Pointer(DBGrid1.SelectedRows.Items[i]));
        
        => Realizar la copia del registro actual....


      end;
    end;
  end
end;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 09-04-2013
Vales08 Vales08 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 133
Poder: 14
Vales08 Va por buen camino
Bien y en la parte donde tengo que realizar la copia del registro lo hago con el codigo SQL como el que me habias pasado antes? o hay alguna forma para hacerlo con codigo delphi?
Responder Con Cita
  #6  
Antiguo 09-04-2013
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.289
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Vales08 Ver Mensaje
Bien y en la parte donde tengo que realizar la copia del registro lo hago con el codigo SQL como el que me habias pasado antes? o hay alguna forma para hacerlo con codigo delphi?
Puedes hacerlo con SQL puedes utilizar una sentencia similar a la de arriba.

Para hacerlo utilizando comandos en Delphi, revisa código como este:

Código Delphi [-]

  DS.Append;
  DS.FieldByName('Codigo').AsString := ACod;
  DS.FieldByName('Nombre').AsString := ANombre;
  ....
  DS.Post;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 10-04-2013
Vales08 Vales08 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 133
Poder: 14
Vales08 Va por buen camino
Muchas gracias Neftali
Bueno les comento que logre hacer lo que necesitaba gracias a ustedes, agregue una linea mas al codigo para evitar que me pasen los registros repetidos.. Le dejo el codigo por si a alguien le llega a hacer falta..
Ahi les va:
Código Delphi [-]
var
i, alim, plan: Integer;
begin
if Grilla_plan_a.SelectedRows.Count > 0 then
  begin
    with Grilla_plan_a.DataSource.DataSet do
      begin
        for i := 0 to Grilla_plan_a.SelectedRows.Count-1 do
          begin
            GotoBookmark(Pointer(Grilla_plan_a.SelectedRows.Items[i]));
             //para evitar la repetición de los registros a pasar
            alim:=DM.DSET_alimID_ALIM.Value;
            plan:=DM.DSET_plan_alimID_PLAN_A.Value;
            if (DM.Q_plan_y_alim.Locate('ID_ALIM; ID_PLAN', VarArrayOf([alim, plan]), []))then
              begin
                ShowMessage('El alimento ya ah sido cargado');
              end
              else
                begin
                  //Abro la tabla pra realizar la inserción y asigno los valores
                  DM.DSET_plan_y_alim.Append;
                  DM.DSET_plan_y_alimESTADO.Value:=0;
                  DM.DSET_plan_y_alimID_ALIM.Value:=DM.DSET_alimID_ALIM.Value;
                  DM.DSET_plan_y_alimID_PLAN.Value:=DM.DSET_plan_alimID_PLAN_A.Value;
                  DM.DSET_plan_y_alim.Post;
                end;
          end;
      end;
  end;
   // esto para que la Grilla2 me vaya mostrando los registros que voy pasando(alimentos) que pertenezcan al plan asignado.
   DM.Q_plan_y_alim.SQL.Clear;
   DM.Q_plan_y_alim.SQL.Add('select * from PLAN_Y_ALIM where ID_PLAN=:name and ESTADO=0');
   DM.Q_plan_y_alim.ParamByName('name').AsInteger:=DM.DSET_plan_y_alimID_PLAN.Value;
   DM.Q_plan_y_alim.Open;
   DM.DSET_plan_y_alim.Open;

A mi me funciona de maravilla..
Muchisimas gracias por sus aportes, me fueron de gran ayuda..
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
Recorrer Tabla, contar registro repetidos y escribir totales en otra Tabla Lucas_diaz1810 Conexión con bases de datos 1 25-12-2006 13:04:34
Como copiar los datos de una tabla a otra Shidalis Varios 2 21-07-2005 14:34:32
Copiar Tabla de una BD a Otra BD en Firebird pcicom SQL 3 14-02-2005 16:31:15
Como Copiar Un Mismo Registro De Una Tabla A Otra En Delphi NaZi_DjInN Tablas planas 2 30-09-2004 22:13:17
Copiar el contenido de una tabla en otra.. ElCherchu Firebird e Interbase 2 31-10-2003 17:11:28


La franja horaria es GMT +2. Ahora son las 11:10:48.


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