Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-07-2013
Avatar de jscubillos5
jscubillos5 jscubillos5 is offline
Miembro
NULL
 
Registrado: jul 2013
Ubicación: Bogotá
Posts: 44
Poder: 0
jscubillos5 Va por buen camino
Respuesta de la pregunta

Cita:
Empezado por jscubillos5 Ver Mensaje
Siguiendo con la solución de mi problema encontre vía web que solo era cuestión de configurar la propiedad SQLDIALECT pasarla de 1 a 3, y listo, a bueno y en el nombre campo se debe llamar así: Código Delphi [-]NombreCampo:= IBQueryExtraerDatosTablas.FieldList[Index].FieldName;

ya que como lo tenia antes llama es el valor del campo o el valor deñ registro
Hola foro, ya he logrado conseguir que de una base de datos se consulten todas las tablas y pasar los registros de estas tablas a otra base de datos el codigo va así:
Código Delphi [-]
procedure TDataModuleCarga.ExtraerDatos(RutaBaseDatos, ArchivoExcepciones:String); //Creo un método
var NombreTabla, NombreCampo, SentenciaInsertar, ValorCampo, Codigo_Agencia, RutaArchivoSalida: String;
Index: Integer; 
Archivo: TextFile;// Cargo varias variables a usar
begin
  RutaArchivoSalida:= ExtractFilePath(ArchivoExcepciones) + 'Lock.txt'; // Decidi crear un archivo de lock, para saber que inserciones se generan
  IBDatabaseSanGil.DatabaseName:= RutaBaseDatos; //Le asigno la ruta de conexión a una base de datos
  IBQueryObtenerCodigo_Agencia.Open; //Abro una consulta
  Codigo_Agencia:= IBQueryObtenerCodigo_Agencia.fieldbyname('AGENCIA').AsString; //Cargo en una variable el valor de la consulta anterior
  AssignFile(Archivo, RutaArchivoSalida); // Asigno el archivo del lock y la ruta de ubicación del mismo
  Rewrite(Archivo); //Luego lo reescribo si ya existe
  Writeln(Archivo, 'Archivo lock insertaciones'); //Escribo un titulo al archivo
  IBDatabaseSanGil.Open; //Abro la primera consulta para extraer los datos
  try // Lo encierro en un try 
    IBQueryTablas.Open; // Abro la consulta de las tablas
    while not IBQueryTablas.Eof do //Mientras la consulta de las tablas no termine hago
    begin
      NombreCampo:= ''; // Asigno un valor nulo a la variable
      NombreTabla:= Trim(IBQueryTablas.fieldbyname('nombre_tabla').AsString); // Obtengo el nombre de la tabla de la consulta
      IBQueryExtraerDatosTablas.SQL.Text:= 'select * from ' + NombreTabla;
      // Luego cargo los datos de la consulta con la cual voy a extraer todos los campos y datos de la tabla
      IBQueryExtraerDatosTablas.Open; // Abro la consulta
      for Index:= 0 to IBQueryExtraerDatosTablas.FieldCount -1 do // Recorro los campos o nombres de los campos por cada tabla
      begin
        NombreCampo:=NombreCampo + ', ' + IBQueryExtraerDatosTablas.FieldList[Index].FieldName; //Lo asigno a una variable
      end;
      Delete(NombreCampo, 1, 1); 
      //Elimino el primer item de Nombre campo, puesto que es una coma al ejecutar el script arrojara una excepción
      while not IBQueryExtraerDatosTablas.Eof do //Mientras extraer datos no tenga fin hago
      begin
        ValorCampo:= ''; // Al igual que con NombreCampo, inicializo el valor de campo en nulo o vacio
        for Index:= 0 to IBQueryExtraerDatosTablas.FieldCount -1 do
        begin
          ValorCampo:= ValorCampo + ', ' + IBQueryExtraerDatosTablas.FieldList[Index].Text;
          //Al igual que el anterior cargo el valor del campo en una variable string
        end;
        Delete(ValorCampo, 1, 1); //Elimino el primer caracter igual que en el anterior, puesto que es una coma
        if DebeProcesarTabla(ArchivoExcepciones, NombreTabla) then 
        //Valido si la tabla no debe ser procesa, es decir no todas las tablas que estoy recorriendo, deseo insertar los mismos valores
        //El método DebeProcesarTabla es una function retorna verdadero o falso. 
        begin  //Aquí ya realizo el proceso de crear la sentencia de inserción .
          SentenciaInsertar:= 'INSERT INTO ' + NombreTabla + ' ('  + NombreCampo + ', CODIGO_AGENCIA' + ' )' + ' VALUES ' + ' (' + ValorCampo +  ', ' + Codigo_Agencia + ' );'; 
          try
           Writeln(Archivo, SentenciaInsertar); //Escribo la linea en el archivo del lock
           finally
           //CloseFile(Archivo); 
//Comentarie esto por que cada vez que el archivo se iba creando iba generando un error en la proxima vuelta del bucle
           end;
        end
        else
        begin
          SentenciaInsertar:= 'INSERT INTO ' + NombreTabla + ' ('  + NombreCampo + ' )' + ' VALUES ' + ' (' + ValorCampo + ' );';
          try
           Writeln(Archivo, SentenciaInsertar);
           finally
           //CloseFile(Archivo);
           end;
        end;
        IBQueryExtraerDatosTablas.Next; //Para no entrar a un bucle finito
      end;
      IBQueryTablas.Next; //Para no entrar a un bucle finito
    end;
    IBQueryExtraerDatosTablas.Close; //Cierro las consultas
  finally
    CloseFile(Archivo); //Cierro el archivo
    IBDatabaseSanGil.Close; //Cierro la conexión a la base de datos.
  end;
end;

Finalmente seria colocar que por cada inserción se executa una consulta IBQUERY en la base de datos con el SQL.TEXT:= SentenciaInsercion;
Luego se debe ejecutar Consulta.EXEC; y este código deberia ir debajo de cada sentencia de insertar y por encima del archivo del lock, con esto se garantiza que el insert que sea escrito en el lock se haya procesado antes en la base de datos y listo .

Última edición por Casimiro Notevi fecha: 22-07-2013 a las 18:30:36.
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
como seleccionar fila de un dbgrid y que se me guarden los datos en una tabla rogercito Varios 11 04-10-2011 21:35:35
Como copiar los datos de una tabla a otra Shidalis Varios 2 21-07-2005 14:34:32
Seleccionar registros en una tabla, envio, e insercion en otra tabla!! EfrainSanmiguel Conexión con bases de datos 3 21-10-2004 01:12:43
Como insertar datos de una tabla en otra tabla? Salomon Firebird e Interbase 1 28-08-2003 11:29:40
Como mostrar los datos para luego insertarlos? judoboy OOP 8 14-05-2003 09:51:51


La franja horaria es GMT +2. Ahora son las 14:10:25.


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