No Ax existe uma classe (TextIO) na qual podemos exportar informações para arquivos .txt, só que quando queremos exportar uma tabela nos deparamos com o problema de termos que escrever as colunas uma a uma, o torna um problema ao tentarmos exportar tabelas com varias colunas, como por exemplo a CustTable que tem 128 colunas em sua versão “default”. Por isso criei um método que exporta todas a colunas de qualquer tabela.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | //filename é o local onde sera salvo o arquivo e tableID é o ID da tabela void textOut(FileName fileName, tableId tableID) { #AOT TreeNode treeNode; TreeNodeIterator iterator; TextIo textIo; Common common; DictTable dictTable; container con; str AOTName, Linha; int j = 1, i, idTable, idField, t2; ; //Define a tabela da qual os dados serão exportados dictTable = new DictTable(tableID); common = dicttable.makeRecord(); //Seta o treeNode apontado para os campo da tabela passado por parametro treeNode = TreeNode::findNode("Data Dictionary" + "\\" + "Tables" + "\\" + tableid2name(tableID) + "\\" +"Fields"+"\\"); //Seta o iterator para que seja possivel varrer os campos da tabela iterator = TreeNode.AOTiterator(); textIo = new TextIo(fileName,'w'); while select common { while(treeNode) { //Este IF é necessario pois na primeira passagem o //treeNode esta no nó FIELDS e daria problema com id do campo if (j != 1) { //Pega o nome do nó AOTName = treeNode.AOTname(); //Pega o ID do campo idField = fieldname2id(tableID,AOTName); //Adiciona ao container valor do campo con+=[[common.(idField)]]; } //passa para o proximo nó treeNode = iterator.next(); j = 2; } //Esse for pega os valores do container e adiciona em uma varial str for(i=1;i<=conlen(con);i++) { Linha += conpeek(con,i); if(conlen(con) != i) Linha += ";"; } //Escreve a linha no txt textio.write(Linha); con = connull(); Linha = ''; //Seta novamente o Treenode, pois depois de passar pelo ultimo nó ele fica nulo treeNode = TreeNode::findNode("Data Dictionary" + "\\" + "Tables" + "\\" + tableid2name(tableID) + "\\" +"Fields"+"\\"); iterator = TreeNode.AOTiterator(); j = 1; } if(textIo.status() == IO_STATUS::Ok) { BOX::info("Exportação realizada com sucesso", "Exportação"); } } |
2 Responses
RSilva
26|Mar|2009 1Sobre arquivo texto quando o mesmo é criado o arquivo vem com aspas no começo e no fim, como fazer para retira-las?
Grato,
RSilva
.
Ju
31|Jul|2009 2Exportando em txt tive um problema.
Qd eu tento importar este arquivo exportado ele só le “ÿÞ0”. Mas se copiar o texto e salvar em outro arquivo, passa a ler normalmente.
Alguma dica para eu resolver este problema??
Grata.
Leave a reply