Ver Mensaje Individual
  #1  
Antiguo 11-12-2014
alvarodelphi201 alvarodelphi201 is offline
Registrado
NULL
 
Registrado: dic 2014
Posts: 3
Reputación: 0
alvarodelphi201 Va por buen camino
Unhappy problema al insertar un caracter especial en tablas dbf

Hola gente:

Debido a un requerimiento de un cliente actualmente me vi en la necesidad de crear un programa interfaz entre archivos xls y tablas DBF (visualfox 9) . Este cliente me pide que meta los datos de varios archivos xls a las tablas que tiene en foxpro (sistema antiiiguo, que no tienen planificado modernizar), con el iguiente plus... algunos campos estan encriptados.

Analizando el còdigo de su programador (me llevo semanas), encontre la fòrmula que uso este programador (que ya entrego el bote), que tiene horrible caracterìstica de poner como primer caracter del valor el caracter #0 (enter), bueno al principio no le di mucha importancia arme el programa y en el momento de las pruebas chas todo el trabajo arruinado, debido a que no puedo insertar ese bendito caracter (que fox raramente desde el còdigo propio si lo inserta) ya llevo varios dìas martillando el problema y no encuentro soluciòn ya que por ejemplo al querer meter el valor #0+'----' en las tablas dbf queda vacio completamente!!!!

Por favor denme unas luces sobre el tema, les adelanto que el cliente no quiere cambiar de sistema, asì que la soluciòn no va por ese lado (quisiera hacerle un sistema nuevo).

las caracterìsticas:
delphi 7 enterprise
conexion con ADO
el campo en la tabla dbf es un char(2), no puedo modificarlo porque es parte de otros mòdulos intocables (contabilidad).

les adjunto parte del còdigo que uso para insertar:

Código Delphi [-]
  with table2 do //tabla conectada a la tabla foxpro planilla
  begin
   // el n2topak es el que encripta

   vl_per := n2topak(StrToInt(mes+anio));

   Active := True;
   Insert;
   FieldByName('pl_anios').AsString:= GridContab.Cells[13,reg];
   FieldByName('pl_meses').AsString:= GridContab.Cells[14,reg];
   FieldByName('pl_antig').AsString:= GridContab.Cells[15,reg];
   FieldByName('pl_des1').AsString:= GridContab.Cells[18,reg];
   FieldByName('pl_des2').AsString:= GridContab.Cells[19,reg];
   FieldByName('pl_des3').AsString:= GridContab.Cells[20,reg];
   FieldByName('pl_des4').AsString:= GridContab.Cells[21,reg];
   FieldByName('pl_diast').AsString:= GridContab.Cells[22,reg];
   FieldByName('pl_f87').AsString:= vl_f87;

   // Este es el meollo del asunto el vl_per[0] tiene el còdigo #0 y el vl_per[1] otro caracter ascii que podrìa ser tambien #0

   FieldByName('pl_per').AsVariant:= vl_per[0]+vl_per[1];
   FieldByName('pl_sec').AsString:= vl_sec;
   Post;
   Active := False;

  end;
En sìntesis la estructura del dbf es intocable, ya que no quieren cambios.

Ayuda por favor!!!!

Última edición por ecfisa fecha: 12-12-2014 a las 05:51:24. Razón: Agregar etiquetas [DELPHI]
Responder Con Cita