Caros,
Hoje não vou escrever sobre AX, mas sobre sql. Sempre soube usar o select into, que cria uma nova tabela baseada em outra, por exemplo:
SELECT * INTO newTable FROM oldTable |
Este comando cria uma tabela chamada newTable com os dados da oldTable.
No entanto, muitas vezes eu quero apenas adicionar aos dados já existentes os dados de outra tabela, e foi ai que aprendi o:
INSERT INTO tableB SELECT * FROM tableA. |
Fica ai a dica, pra mim é/foi/será bastante útil.
Abraço!
Caros,
Tava aqui recuperando uns endereços para uma integração e cheguei até uma query que relaciona tudo.
SELECT * FROM CUSTTABLE INNER JOIN DIRPARTYTABLE ON CUSTTABLE.PARTYID = DIRPARTYTABLE.PARTYID AND CUSTTABLE.DATAAREAID = DIRPARTYTABLE.DATAAREAID INNER JOIN DIRPARTYADDRESSRELATIONSHIP ON DIRPARTYTABLE.PARTYID = DIRPARTYADDRESSRELATIONSHIP.PARTYID AND DIRPARTYTABLE.DATAAREAID = DIRPARTYADDRESSRELATIONSHIP.DATAAREAID INNER JOIN DIRPARTYADDRESSRELATIONSHI1066 ON DIRPARTYADDRESSRELATIONSHIP.RECID = DIRPARTYADDRESSRELATIONSHI1066.PARTYADDRESSRELATIONSHIPRECID AND DIRPARTYADDRESSRELATIONSHIP.DATAAREAID = DIRPARTYADDRESSRELATIONSHI1066.DATAAREAID INNER JOIN ADDRESS ON DIRPARTYADDRESSRELATIONSHI1066.REFCOMPANYID = ADDRESS.DATAAREAID AND DIRPARTYADDRESSRELATIONSHI1066.ADDRESSRECID = ADDRESS.RECID AND DIRPARTYADDRESSRELATIONSHI1066.DATAAREAID = ADDRESS.DATAAREAID |
[]s
Pichler
12 Jan 2012
Posted by: Ricardo Pichler in: X++
Overview
We strongly recommend that you read this paper before upgrading. The following topics are discussed:
Analyzing customizations
Purging and archiving data with the Intelligent Data Management Framework
Analyzing space requirements for databases
Creating project plans for testing
Recommended upgrade process
Preparing the source database
Preparing the source AOS instance
Using the state transfer tool
Preparing the target database
Preparing the target AOS instance
http://www.microsoft.com/download/en/details.aspx?id=28701&WT.mc_id=rss_alldownloads_all
[]s
Pichler
Pessoal,
Se alguém mais passar por isso e precisar, segue um script que lê a LedgerTable e popula a LedgerTableInterval carregando assim os totais (Intervalo de Contas).
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 | static void createLedgerTableInterval(Args _args) { LedgerTable ledgerTable; LedgerTableInterval ledgerTableInterval; str myAccount, strPos; Counter i; ; while select AccountNum from ledgerTable where ledgerTable.AccountPlType == LedgerAccountType::sum { myAccount = ledgerTable.AccountNum; for(i = strlen(myAccount); i > 0; i--) { strPos = subStr(myAccount, i, 1); if(strPos == "0") continue; ledgerTableInterval.AccountTableId = ledgerTable.TableId; ledgerTableInterval.AccountRecID = ledgerTable.RecId; ledgerTableInterval.FromAccount = subStr(myAccount, 1, i); ledgerTableInterval.ToAccount = strfmt("%1z", ledgerTableInterval.FromAccount); ledgerTableInterval.insert(); i = 0; } } } |
[]s
Pichler
Caros,
Como no post anterior, segue a base de ncms e o respectivo script para importar.
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 | static void loadNCMsFromFile(Args _args) { TaxFiscalClassification_BR buffer; Dialog dialog; DialogField dfFileName; TextIO inFile; RecordInsertList recordInsert = new RecordInsertList(tableNum(TaxFiscalClassification_BR)); Container line; ; delete_from buffer; dialog = new Dialog("Selecione o arquivo"); dfFileName = dialog.addField(typeId(FilenameOpen), "Selecione o arquivo"); if(!dialog.run()) return; inFile = new TextIO(dfFileName.value(), 'R'); inFile.inFieldDelimiter(";"); line = inFile.read(); while(line) { buffer.FiscalClassificationId = conpeek(line,1); buffer.Name = conpeek(line,2); buffer.IPITaxCode = 'IPI 0'; //hard coded porque é o que eu preciso. recordInsert.add(buffer); line = inFile.read(); } recordInsert.insertDatabase(); } |
[]s
Pichler