Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #11  
Antiguo 19-06-2013
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 397
Poder: 16
novato_erick Va por buen camino
Hola hace un par de días me encontré con la interrogante de pasar linea por linea a mi base de datos en firebird desde un archivo de texto, bueno en realidad nunca pude con el archivo de texto delimitado por fabulaciones pero si con un CSV delimitado por comas aquí presento cómo lo hice e insertando a la base de datos de firebird.

Código Delphi [-]
procedure TfrmCargaComprobante.btnLecturaClick(Sender: TObject);
var
  i, j, conteo, DiaIncap, HoraIncap, barra, barra2: integer;
  Cadena, cadena2: string;
  campo: TStringList;
  TS: TStrings;
  i2: integer;
  // Variables de cargar Datos
  cod: integer;
  Apellido, Nom: String;
  RxH, sBruto, sSocial, sTotal, sEduc, sNeto, oDesc, hTrabajo: Double;
  // Variable Transaccion
  ExitoComprobante: Boolean;
begin
  ProgressBar1.Min := 0;
  SetLength(valores, 0);
  for i := 0 to Memo1.Lines.Count - 1 do
  begin
    SetLength(valores, length(valores) + 1);
    Cadena := Memo1.Lines[i];
    ProgressBar1.Max := Memo1.Lines.Count - 1;
    begin
      TS := SepararCadena(Cadena, ',');
      try
        for i2 := 0 to TS.Count - 1 do
        begin
          conteo := i2;

          if conteo = 0 THEN
          begin
            cod := strtoint(TS[i2]);
          end;
          if conteo = 1 THEN
          begin
            Apellido := Trim(TS[i2]);
          end;
          if conteo = 2 THEN
          begin
            Nom := Trim(TS[i2]);
          end;
          if conteo = 3 THEN
          begin
            RxH := StrToFloat(TS[i2]);
          end;
          if conteo = 4 THEN
          begin
            sBruto := StrToFloat(TS[i2]);
          end;
          if conteo = 5 THEN
          begin
            sSocial := StrToFloat(TS[i2]);
          end;
          if conteo = 6 THEN
          begin
            sTotal := StrToFloat(TS[i2]);
          end;
          if conteo = 7 THEN
          begin
            sEduc := StrToFloat(TS[i2]);
          end;
          if conteo = 8 THEN
          begin
            sNeto := StrToFloat(TS[i2]);
          end;
          if conteo = 9 THEN
          begin
            oDesc := StrToFloat(TS[i2])
          end;
          if conteo = 10 THEN
          begin
            hTrabajo := StrToFloat(TS[i2])
          end;
          if conteo = 11 THEN
          begin
            DiaIncap := strtoint(TS[i2])
          end;
          if conteo = 12 THEN
          begin
            HoraIncap := strtoint(TS[i2])
          end;
        end;
      finally
        begin
          ExitoComprobante := False;
          trnComprobante := dmConectar.Conectar.BeginTransaction;
          Try
            With dmlogicaPlanilla.qInsertaComprobantes do
            begin
              Close;
              parambyname('Tarjeta').AsInteger := cod;
              parambyname('Apellido').AsString := Trim(Apellido);
              parambyname('Nombre').AsString := Trim(Nom);
              parambyname('RataporHora').AsFloat := RxH;
              parambyname('SalarioBruto').AsFloat := sBruto;
              parambyname('SeguroSocial').AsFloat := sSocial;
              parambyname('TotalSeguros').AsFloat := sTotal;
              parambyname('SeguroEducativo').AsFloat := sEduc;
              parambyname('SalarioNeto').AsFloat := sNeto;
              parambyname('OtrosDescuentos').AsFloat := oDesc;
              parambyname('FechaInicio').AsDate := dtpInicio.Date;
              parambyname('FechaFinal').AsDate := dtpFinal.Date;
              parambyname('HorasTrabajo').AsFloat := hTrabajo;
              parambyname('DiasIncap').AsInteger := DiaIncap;
              parambyname('HorasIncap').AsInteger := HoraIncap;
              parambyname('Cedula').AsString := '0-000-000';
              execsql;
              begin
                dmConectar.Conectar.CommitFreeAndNil(trnComprobante);
                ExitoComprobante := true;
              end;
              barra := Memo1.Lines.Count;
              barra2 := barra - 1;
              ProgressBar1.Position := barra2;
            end;
          except
            on e: exception do
            begin
              dmConectar.Conectar.RollbackFreeAndNil(trnComprobante);
              ShowMessage('Error Encontrado' + e.Message);
            end;
            // Close;

          end;
          cod := 0;
          Apellido := '';
          Nom := '';
          RxH := 0.00;
          sBruto := 0.00;
          sSocial := 0.00;
          sTotal := 0.00;
          sEduc := 0.00;
          sNeto := 0.00;
          oDesc := 0.00;
          hTrabajo := 0.00;
          DiaIncap := 0;
          HoraIncap := 0;
          TS.Free;
        end;

      end;
    end;
    // campo := TStringList.Create;
  end;
  ShowMessage('Carga del archivo completada');
  if Application.MessageBox('¿Desea Imprimir Comprobantes de Pago?',
    'Confirmación', MB_ICONQUESTION OR MB_YESNO) = ID_NO then
  begin
    frmCargaComprobante.Close;
  end
  else // si no cerramos limpiamos nuestros componentes y variables del form
  begin
    dmlogicaPlanilla.qConsultaComprobante.Open;
    dmlogicaPlanilla.frxSobres.ShowReport(true);
    frmCargaComprobante.Close;
  end;
end;

lo más seguro que habrá una manera más rápida de hacerlo y creo que con un CASE se mejoraría y la rutina no repetiría varias veces pero ese es otro tema de investigación e implementación.

Saludos

novato_erick
Responder Con Cita
 



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
importar registros de tablas juliet DB2 1 14-12-2006 16:19:34
Importar datos a access desde un archivo delimitado por comas luis juarez Conexión con bases de datos 1 10-05-2006 22:46:13
Importar a SQL desde Archivo de Texto erasmorc MS SQL Server 8 03-06-2005 20:39:04
como importar claves al Registro (desde archivo.reg) sitrico Varios 1 03-12-2004 17:34:26
Script para importar desde un archivo csv Leonardo Firebird e Interbase 1 24-08-2004 22:23:47


La franja horaria es GMT +2. Ahora son las 03:44:59.


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