Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-07-2012
Avatar de Combat-F2D
Combat-F2D Combat-F2D is offline
Miembro
 
Registrado: may 2003
Ubicación: Toletum
Posts: 454
Poder: 22
Combat-F2D Va por buen camino
No lee caracteres numericos como alfa en columnas de excel mediante ADO

tengo problemas en lo siguiente:

estoy cargando mediante ADO un tabla de excel para importacion en FB tal que en la consulta empleo un script sencillo:

Código SQL [-]
SELECT
    *
FROM
    Hoja$1

(creo que es asi, pero esto no es el problema)

esta consulta la he estado empleando bastante tiempo sin problema..., en una de las columnas figura un codigo de artículo tal que 'A99999' ó 'AYYYYY....'; bien, a partir de ahora en dicha columna intercalan codigo como los anteriores 'Ayyyyyyyy' otros nuevos tal que '9999998888777....', pues bien, observo que la consulta anterior los valores 'AXXXXX', si me los devuelve correctamnete, pero los nuevos como '9999....', me arroja un resultado en blanco; eso si, si edito la tabla e inicio delante del '999999...', una comilla simple, no hay problema, si se carga.

problema, el usuario debería tunnear antes la tabla de excel, y eso no es del todo correcto para mí, y menos para él

como podría solvertarle y decirle al motor de JET que ese valor '99999...' no es numerico, sino alfa???
hay que tocar algo de los prarametros???

si alguíen puede darme alguna solucion sin tener que meterme en codigo nuevo (un poquito si) se lo agradecería
__________________
online
Responder Con Cita
  #2  
Antiguo 26-07-2012
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Cuando tú pones en una celda A999999 y mas abajo pones de la misma columna 999999, ambas celdas son diferentes, uno es alfa y el otro es numérico, lo que tienes que hacer es en la columna es que sea toda de texto, selecciona toda la columna con el botón derecho del ratón y picar en Formato de celda, una vez echo esto todas la columna es alfa.

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #3  
Antiguo 26-07-2012
Avatar de Combat-F2D
Combat-F2D Combat-F2D is offline
Miembro
 
Registrado: may 2003
Ubicación: Toletum
Posts: 454
Poder: 22
Combat-F2D Va por buen camino
en efecto tienes razon, pero queria evitar ese paso, ya comente que no es lo que pretendo,

por cierto, en efecto, es alfa, pero de aqui en adelante, me explico, hasta que no se reediten las celdas numericas, estas no adquieren el tipo alfa.
__________________
online

Última edición por Combat-F2D fecha: 26-07-2012 a las 14:40:08.
Responder Con Cita
  #4  
Antiguo 26-07-2012
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Casualmente es el mismo problema que tengo yo, y que he preguntado en este hilo...

http://clubdelphi.com/foros/showthread.php?t=79649

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #5  
Antiguo 26-07-2012
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Alfa = Alfanumérico, si sabes la columna puedes pasarla a alfanumérico, es la solución que veo.

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #6  
Antiguo 26-07-2012
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 información al respecto y parece que no hay mucho que hacer. Al parecer, no hay manera de decirle al motor cuál es el tipo de datos de la columna y éste se determina examinando las primeras ocho filas y se establece aquel que tenga la mayoría de celdas. En caso de empate se toma como numérica.

Una manera de lograr esto es, como han indicado, cambiando el formato de la columna a texto, pero tiene el incoveniente, como también han indicado, de forzar al usuario hacerlo. Aunque, por otra parte, no me parece tan malo pedir al usuario un conjunto de especificaciones de cómo llenar el archivo. Sin embargo, podemos hacerlo nosotros mismos, antes de abrir la hoja, por ejemplo, en el evento BeforeOpen del DataSet:

Código Delphi [-]
procedure TForm1.ADOTable1BeforeOpen(DataSet: TDataSet);
var
  Excel, Libro, Hoja: OleVariant;

begin
  Excel := ComObj.CreateOleObject('Excel.Application');

  try
    Libro := Excel.Workbooks.Open('c:\ruta\al\archivo.xlsx');
    Hoja := Libro.Worksheets['Hoja1'];
    Hoja.Columns['A:A'].NumberFormat := '@';
    Libro.Save;
  finally
    Excel.Quit;
  end;
end;

// Saludos
Responder Con Cita
  #7  
Antiguo 26-07-2012
Avatar de Combat-F2D
Combat-F2D Combat-F2D is offline
Miembro
 
Registrado: may 2003
Ubicación: Toletum
Posts: 454
Poder: 22
Combat-F2D Va por buen camino
una buena solucion.... se agradece
__________________
online
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
Caracteres no numericos en campo bigint Mfi Firebird e Interbase 6 16-07-2008 08:24:55
excel a delphi, como mostrar columnas de excel Vyckso Servers 2 13-08-2007 12:38:08
DBGrid: Solo algunos caracteres en columnas TrUnkS OOP 1 31-05-2007 08:57:46
caracteres numéricos en un edit edusus Varios 1 21-04-2006 00:24:16


La franja horaria es GMT +2. Ahora son las 16:26:35.


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