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: 15
Vales08 Va por buen camino
ecfisa muchas gracias por la respuesta..
Eh probado el código pero me salta un error y no se que puede ser..
Error:
Cita:
Dynamic SQL Error
SQL error code = -804
Count of columns does not equal count of values
El codigo:
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_PLAN_Y_ALIM, ID_ALIM, ID_PLAN)');
    Add('SELECT ID_ALIM ');
    Add('FROM ALIMENTOS ');
    Add('WHERE NOT EXISTS (SELECT PLAN_Y_ALIM.ID_PLAN_Y_ALIM, 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)');
  end;
DM.Q_plan_y_alim.Active:=True;

Me gustaria que me orientaras a saber donde puede estar el problema..
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: 37
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.

A primera vista, en la línea:
Código SQL [-]
 Add('INSERT INTO PLAN_Y_ALIM (ID_PLAN_Y_ALIM, ID_ALIM, ID_PLAN)');
indicas que vas a insertar valores en tres columnas de la tabla PLAN_Y_ALIM.

Pero en las líneas:
Código SQL [-]
 Add('SELECT ID_ALIM');
 Add('FROM ALIMENTOS');
Solo seleccionas una columna de la tabla ALIMENTOS, es que decir que faltaría especificar dos columnas de dicha tabla para ser insertados en las columnas ID_ALIM e ID_PLAN de la tabla PLAN_Y_ALIM

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: 15
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
  #4  
Antiguo 08-04-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 37
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
  #5  
Antiguo 08-04-2013
Vales08 Vales08 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 133
Poder: 15
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
  #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.874
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
  #7  
Antiguo 09-04-2013
Vales08 Vales08 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 133
Poder: 15
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
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 15:57:15.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi