ImportFile

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 ArquivoResultado
“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:

ArgumentoObrigatórioDescrição
dwcontrolSimReferente a DataWindow ou DataStore que será afetada
importtypePB: Não Appeon: Não suportadoEnum com o valor referente ao tipo do arquivo que será importado. São válidos: Text!, CSV!, XML!, DBase2! e DBase3!
filenameSimString 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.
startrowNãoInforma o número da primeira linha do arquivo que será importada. Padrão: 01
endrowNãoNúmero da última linha que será importada.
startcolumnNãoNúmero da primeira coluna (do arquivo) que será importada. Padrão: 01
endcolumnNãoNúmero da última coluna (do arquivo) que será importada.
dwstartcolumnNãoNú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.