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 Buscar Temas de Hoy Marcar Foros Como Leídos

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
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: 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.

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: 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
  #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: 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
  #5  
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
  #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.339
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: 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
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 05:22:34.


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