ImportFile
Overview
Olá, desenvolvedores PowerBuilder! Se vocês já se perguntaram como importar dados facilmente para DataWindow ou DataStore a partir de diversos formatos de arquivos, este post é para vocês. Através de exemplos claros e informações detalhadas, exploraremos a funcionalidade de ImportFile, seus parâmetros, e como lidar com os desafios comuns, como o tratamento de aspas duplas. Preparem-se para adicionar esta poderosa ferramenta ao seu arsenal de desenvolvimento!
Insere informações na DataWindow ou DataStore a partir de um arquivo. Os dados pode estar separados por tabs (~t), vírgula, xml ou formato dBase 2 ou 3.
Sintaxe:
dwcontrol.ImportFile ( {saveastype importtype}, string filename {, long startrow {, long endrow {, long startcolumn {, long endcolumn {, long dwstartcolumn}}}}})
Retorno:
- long positivo – com o número de linhas importadas. Sucesso.;
- -1 – Nada foi importado ou o valor fornecido para startrow é maior que o número de linhas;
- -2 Arquivo vazio;
- -3 Argumento inválido;
- -4 Input inválido;
- -5 Não foi possível abrir o arquivo;
- -6 Não foi possível fechar o arquivo;
- -7 Erro ao ler o texto;
- -8 Extensão não suportada para o arquivo (precisa ser *.txt, *.csv, *.dbf ou *.xml);
- -10 Versão não suportada de dBase (não é a versão 2 ou 3);
- -11 Erro ao interpretar o XML, XML Parser não encontrado ou XML inválido;
- -12 XML Template não existe ou é diferente da DataWindow;
- -13 Estilo da DataWindow não suportado para importação;
- -14 Erro interpretando aninhamento das DataWindows;
- -15 Tamanho do arquivo foi excedido;
Destalhes sobre a função!
Appeon: Função suportada, com ressalvas.
No Appeon, o arquivo importado para a DataWindow deve ser separado por tabs (~t > .TXT) ou por vírgulas (CSV).
O argumento importType! (exemplo: Text!, CSV!, XML!, DBase2!, DBase3!) não é suportado no Appeon.
Ao importar um arquivo, certifique-se de que os valores estão condizentes com o tipo deles. Exemplo: Na DataWindow o tipo do campo está definido como string, se uma data numérica for importada (2017-11-01), na web ela pode ser interpretada como string (2017) e no PowerBuilder ela poderá ser interpretada como Data (2017-11-01).
- Pode disparar o evento ItemError;
- Esta função não suporta objetos Crosstab DataWindow!
- Aspas duplas: A quantidade de aspas duplas e a localização delas fazem diferença na string. Se o valor estiver entre um conjunto de aspas duplas (uma no início e outra no final), elas serão descartadas e o valor será considerado. Se o valor estiver entre 3 conjuntos de aspas duplas (3 no início e 3 no final), o valor será interpretado com um conjunto de aspas. Todavia, se o valor estiver entre dois conjuntos de aspas duplas (duas no inicio e duas no final), será considerado que cada conjunto estava englobando uma string nula e os valores serão descartados;
- Quando existirem aspas duplas no inicio da string, qualquer caractere que após a segunda aspas duplas serão desconsiderados. Se não existirem outra aspas duplas para fechar o campo, então todos os próximos caracteres (incluindo vírgulas, tabs e quebras de linha) são considerados como parte do valor. Isso acontecerá até que outra aspas duplas sejam encontradas. Será gerado um erro, caso o tamanho desta string fique maior que o tamanho da primeira string importada.
- Se existirem aspas duplas após o primeiro caractere, elas serão interpretadas como parte da string.
- Se um XML ou um CSV possuir uma coluna com aspas duplas, ela será considerada como parte do valor da célula.
Veja alguns exemplos do uso de aspas e seus resultados:
Texto no Arquivo | Resultado |
---|---|
“Joe” TAB “Donaldson” | Joe Donaldson |
Bernice TAB “““Ramakrishnan””” | Bernice “Ramakrishnan” |
““Mary”” TAB ““Li”” | [Campo vazio] |
“Mich"ael TAB “““Mariam””” | Mich “Mariam” |
“Amy TAB Doherty” | AmyDoherty no primeiro campo, segundo campo vazio. |
3"”" TAB 4" | 3""" 4" |
Considere a palavra TAB como o divisor tab (~t) ### Como utilizar:
Exemplo 01: Importando os dados do arquivo .CSV para a dw_1.
string ls_arquivo
ls_arquivo = "c:\temp\funcionarios.csv"
ll_resultado = dw_1.ImportFile(ls_arquivo)
Exemplo 02: Importando os dados do arquivo .XML para a dw_1.
string ls_arquivo
ls_arquivo = "c:\temp\funcionarios.xml"
ll_resultado = dw_1.ImportFile(XML!, ls_arquivo)
Exemplo 03: Importando da primeira até a linha 200 do conteúdo de um arquivo .XML, ignorando o mapeamento das colunas anteriores a 5.
string ls_arquivo
ls_arquivo = "c:\temp\funcionarios.xml"
ll_resultado = dw_1.ImportFile(XML!, ls_arquivo, 1, 200, 0, 0, 5)
Exemplo 04: Importando conteúdo do arquivo XML com as seguintes características: Linha 2 até a 30, colunas 3 até a 8, começando da 5ª coluna. O resultado será: 29 linhas serão importadas para a datawindow, nas colunas de 5 até 10.
string ls_arquivo
ls_arquivo = "c:\temp\funcionarios.xml"
ll_resultado = dw_1.ImportFile(XML!, ls_arquivo, 2, 30, 3, 8, 5)
Argumentos:
Argumento | Obrigatório | Descrição |
---|---|---|
dwcontrol | Sim | Referente a DataWindow ou DataStore que será afetada |
importtype | PB: Não Appeon: Não suportado | Enum com o valor referente ao tipo do arquivo que será importado. São válidos: Text!, CSV!, XML!, DBase2! e DBase3! |
filename | Sim | String com o nome do arquivo que será importado. Ele deve aderir as características já mencionadas. Se estiver vazio, será exibida uma janela de diálogo, solicitando o arquivo ao usuário. |
startrow | Não | Informa o número da primeira linha do arquivo que será importada. Padrão: 01 |
endrow | Não | Número da última linha que será importada. |
startcolumn | Não | Número da primeira coluna (do arquivo) que será importada. Padrão: 01 |
endcolumn | Não | Número da última coluna (do arquivo) que será importada. |
dwstartcolumn | Não | Número da primeira coluna da Datawindow (ou DataStore) que receberá os dados. Padrão: 01 |
Referência:
Dúvidas sobre o artigo? Sugestões? Precisa de ajuda com outra funcionalidade do PowerBuilder? Deixe um comentário.