Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Tatchy

Excel, importando dados

Recommended Posts

Tenho como fonte de dados uma planilha Excel que preciso ler e tratar os dados, a fim de gerar um txt. O problema é que numa mesma coluna tenho informações no formato data e texto, e se o primeiro registro lido for data, os demais, texto, são tratados como NULL. Como eu posso tratar o formato do campo na consulta sql, uma vez que eu não tenho uma região nomeada nem cabeçalho com nome de colunas? Obrigada...

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode fazer uma verificação no ASP usando as seguintes funcoesIsNumeric(var) - Verifica se o valor é numérico - Retorna true caso sim...IsDate(var) - Verifica se o valor é uma Data válida - Retorna true caso sim...ai você faz alguns IFs e ELSEs e já era... resorvido o pobrema!!ok?falows

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema não está no tratamento dos campos dentro do ASP, e sim já na consulta... ADO... então quando abro o recordset ele já me traz as linhas como NULL. :blink:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu abro a consulta com o excel e faço a query:

 

Public Function getTabelas()    On Error Resume Next    Set rs = oCon.OpenSchema(20)  While Not rs.EOF 	 sTabela = sTabela & rs(2) & "|" 	 rs.MoveNext  Wend  sTabela = Left(sTabela, len(sTabela) - 1)  rs.Close  getTabelas = sTabela    	End Function	nomeTabelas = Split(oConexaoExcel.getTabelas(), "|")sSql = "SELECT * FROM [" & nomeTabelas(0) & "]"

 

Eu gostaria de saber se existe uma forma de recuperar o nome das colunas, genericamente, e ainda se teria como tratar os campos (algo como um STR(campo), etc).

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente colocar na Query +ou- assimWHERE CAMPO NOT IS NULLassim ele seleciona sometne dados q não forem Null...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tatchy,Se entendi bem a sua proposição você têm a seguinte coluna:12/01/2004texto1texto2texto3E se o primeiro registro for uma data deveria ter o seguinte lay-oyt:12/01/2004NULLNULLNULLSe for isto você poderá tratar no ASP mesmo.Agora para pegar os nome de uma tabela use:SELECT COLUNAS.NAME AS COLUNA, TIPOS.NAME AS TIPO, COLUNAS.LENGTH AS TAMANHO, COLUNAS.ISNULLABLE AS EH_NULO FROM SYSOBJECTS AS TABELAS, SYSCOLUMNS AS COLUNAS, SYSTYPES AS TIPOSWHERE -- JOINS TABELAS.ID = COLUNAS.ID AND COLUNAS.USERTYPE = TIPOS.USERTYPE AND TABELAS.NAME = 'Nome_de_sua_tabela'No caos do excel acho q ela usa a referência a1,a2 para nome dos campos mas ñ tenho certeza.t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

jothaz, é isso mesmo.

 

porque o cliente não manda uma planilha com a referida coluna formatada para texto (o que seria o mais coerente... rsrsrs). e o excel é chatinho de se trabalhar como tabela de dados.

 

mas eu não tenho como tratar no asp, porque as linhas que ele retorna como NULL na verdade contém dados - só que não são do tipo date e ele ignora.

 

Quanto ao nome das colunas, ele não se baseia pelo a1, a2, não, mas se eu tiver dados na linha 1, ele os toma por nomes das colunas.

 

por fim, para pegar o nome da tabela, no caso do access, usa-se o OpenSchema, como pode-se ver nesse link aqui

 

Eu tentei recuperar o nome das colunas usando OpenSchema(4), mas não consigo usar isso numa query.... dá erro de sintaxe e tal.

 

 

:wacko:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.