Boa tarde. Pessoal gostaria de saber se existe a possibilidade de passar uma temp-table para outro programa quando chamo o mesmo. exemplo: run xxxxx.html(input temp-table). tem como fazer isso ? se sim, como posso fazer para usar ou pegar os dados do outro lado ? obrigado.
Voce pode passar o handle da temp-table, exemplo: run programa.p (input temp-table tt-tabela:handle). e no programa que vai receber o parametro: def input parameter hTT as handle. Neste caso no programa que esta recebendo a temp-table você terá que manipular a temp-table apenas usando o handle. Ou define uma shared temp-table, exemplo: Código: def new shared temp-table tt-tabela field codigo as int field nome as char. E no segundo programa: Código: def shared temp-table tt-tabela field codigo as int field nome as char.
Gostei porem tenho uma dúvida. Coloquei como exemplo esta definção de new shared em uma include, e queria chamar ela em todos os programas. Pelo o que eu percebi de seu código eu terei que definir ela novamente no outro programa com exceção do NEW ou então criar outra include. Teria alguma forma de fazer sem duplicar o código? Abraços
Acho que fica mais simples passar a temp mesmo, conforme exemplo abaixo. Obs: Mas é preciso atentar que o tópico original do lwazevedo trata de passar dados de/para programas web. PHP: /* programa1 */DEFINE TEMP-TABLE tt LIKE Customer./* carrega a temp com dados da tabela Customer */FOR EACH Customer WHERE Customer.Cust-num > 10: CREATE tt. BUFFER-COPY Customer TO tt.END./* passa os dados (temp) para o programa2 */RUN programa2.p (INPUT-OUTPUT TABLE tt)./* na volta, mostra o que "sobrou" da de registros */FOR EACH tt: DISPLAY tt.cust-num tt.name WITH TITLE "Programa 1".END. PHP: /* programa2 */DEFINE TEMP-TABLE tt LIKE Customer./* recece a temp como parametro */DEFINE INPUT-OUTPUT PARAMETER TABLE FOR tt./* mostra os dados dela recebidos */FOR EACH tt: DISPLAY tt.cust-num tt.name WITH TITLE "Programa 2". /* apaga codigo maior que 20 */ IF tt.cust-num > 20 THEN DELETE tt.END./* nesse ponto tt possui cust-num > 10 e < 20, que é o que volta na temp para programa1 */