Ver Mensaje Individual
  #18  
Antiguo 07-02-2012
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Reputación: 23
guillotmarc Va por buen camino
Hola Casimiro.

Cita:
Empezado por Casimiro Notevi Ver Mensaje
Bueno, me explico mejor, lo anterior era solamente un ejemplo, son dos tablas iguales salvo por un campo. Seguramente se ampliarán con el tiempo con el añadido de más campos porque se necesite hacer algo más.
En principio deben ser iguales salvo ese primer campo. O sea, 'casi' iguales
Ahora mismo tiene 29 campos. Y lo que quiero conseguir es "olvidarme" de la misma el día que sea necesario añadir algún nuevo campo para controlar cualquier otra cosa, o sea, que dentro de unos meses, cuando ya te has olvidado de todo, no tenga que decir: "no se sabe por qué falla el programa", y después de mucho perder el tiempo: "el problema era que había que añadir el nuevo campo en un store procedure, y se nos había olvidado."
Resumiendo, da igual los campos que tenga la tabla, lo que se intenta es no tener que controlarlo, que sea un proceso automático. Al igual que en delphi se puede hacer algo así como (de memoria):
Código Delphi [-]tabla1.open; while not tabla1.eof do begin tabla2.append; for iX=0 to tabla1.fields.count-1 do tabla2.fields[iX].value := tabla1.fields[iX].value; tabla2.post; tabla1.next; end;
Pues puedes utilizar un bucle de estos para construir sobre la marcha la sentencia, antes de ejecutarla (ignorando el campo que sabes que va a ser distinto).

Código:
SQL := 'insert into TablaB'(;

tablaA.open;
while not tablaA.eof do begin
   for iX = 0 to tablaA.fields.count-1 do SQL := SQL + tablaA.fields[iX].FieldName + ', ';
   tablaA.next;
end;

SQL := SQL + ') select * from TablaA';

Conexion.ExecSQL(SQL);
Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).

Última edición por guillotmarc fecha: 07-02-2012 a las 18:53:48.
Responder Con Cita