Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Problema con unos campos de una columna en ado conectado a excel (https://www.clubdelphi.com/foros/showthread.php?t=26284)

RONPABLO 18-10-2005 19:54:33

Problema con unos campos de una columna en ado conectado a excel
 
Hola, un cordial saludo.

Cree una conexion a excel por medio de ado, me trabaja muy bien y como la información que traigo de la hoja de calculo es al rededor de 14 mil registros me funciona mas rapido que por medio de las opciones de la paleta servers, pero resulta que en una columna tengo una gran catidad de "numeros" de identificación aun asi yo los trato como si fueran texto ya que puede ocurrir que este numero tenga una letra o un gion, pero aqui es cuando ocurre el problema.

La hoja de Calculo trae información similar a la siguiente

Código:

  id        nombre        tipoID
  1234        pablo                CC
  2345        andres                CC
  c1b4        andrea                NU

y yo la guardo en una tabla en firebird por medio de un IBQuery de la sigueinte forma:

Código Delphi [-]
   While not adoTabla.Eof do
   begin
      Qfbtabla.ParamByName('id').asString :=
                   adoTabla.FieldByName('id').asString;
      Qfbtabla.ParamByName('nombre').asString :=
                   adoTabla.FieldByName('nombre').asString;
      Qfbtabla.ParamByName('Tipoid').asString :=
                   adoTabla.FieldByName('Tipoid').asString;
      Qfbtabla.execSQL;
      adoTabla.Next;
   end;

Al correr paso a paso y ver el valor del campo ID cuando tiene alguna letra me dice que es un valor null, probe a cambiar el tipo de la columna en el archvio de excel a tipo texto y aun así sigo con el mismo problema, alguien me puede ayudar con este problema????

roman 18-10-2005 22:54:38

He buscado por ahí y lo único que he encontrado es esto:

En la cadena de conexión del ADOConnection, en Extended Properties pon

Excel 8.0; IMEX=1

Lo he probado y funciona. Desafortunadamente tal parece que esto hace que el acceso a la hoja de Excel sea de sólo lectura.

La opción IMEX=1 dicen que es para que lea todo como si fuera texto.

// Saludos

RONPABLO 21-10-2005 04:29:08

Primero que todo agradecer a Roman . Ya me funciono como me explico, aunqe me produjo un error que marcaba ISAM, y algo mas, lo solucione colocando entre comillas dobles como lo muestro a continuación

Código Delphi [-]
       Modulo.DBExcel.ConnectionString := wideString('Provider=Microsoft.Jet.OLEDB.4.0;Data Source='
       + ODabrirExcel.FileName
       + ';Extended Properties="Excel 8.0; HDR=Yes;IMEX=1"');


Pero luego vino otro error y es que si el numero es muy largo por ejemplo:

91071016875540

me devuelve:

9,1071016876e+013

para solucionar esto hice lo siguiente:

Código Delphi [-]
             try
                idTexto := FloatToStr(Modulo.TExcel.Fields[3].Value)
             except
                idTexto := Modulo.TExcel.Fields[3].AsString;
             end;

pero me retorno el siguiente resultado

91071016876000

como se ve los ultimos 3 numeros son aproximados y asi no me sirve, hay alguna forma de que me entregue el valor tal cual se dijite????


La franja horaria es GMT +2. Ahora son las 07:04:31.

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