Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-10-2005
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
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????

Última edición por RONPABLO fecha: 18-10-2005 a las 20:01:58. Razón: escribi mal while y mejore el largo de los textos
Responder Con Cita
  #2  
Antiguo 18-10-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #3  
Antiguo 21-10-2005
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
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????
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


La franja horaria es GMT +2. Ahora son las 12:09:39.


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