Boa tarde, Sou iniciante em desenvolvimento progress, eu tenho uma tela que ao executar eu quero gerar um bloco de notas em terminal, não quero salvar o bloco de notas em um diretório, preciso que gere na tela do usuário. Como faço? Pois a única forma que sei é gerar o bloco de notas em diretório
Boa tarde, vc não escapa de gerar o arquivo, mas no final da executação vc pode fazer um comando osCommand mandando abrir o seu arquivo .... osCommand silent value('start c:\datasul\oework\seuarquivo.txt').
Se "a tela" for seu desenvolvimento tenta colocar algo assim (abaixo) ou se for uma tela oficial vai ter que adaptar isso ai em uma UPC... mas aí vai ter que estudar a questão das UPC´s... pq tem UPCs que são tratadas de maneiras diferentes... vai depender "do tipo de tela" ou do ponto de UPC que a Datasul deixou, etc... é um pouco mais complicado para quem está iniciando... DEFINE VARIABLE c-arquivo-relat AS CHARACTER NO-UNDO. DEFINE VARIABLE i-retorno AS INTEGER NO-UNDO. /* Colocar a procedure no Main Block - para executar programas externos*/ PROCEDURE WinExec EXTERNAL "kernel32": DEF INPUT PARAM lpszCmdLine AS CHAR. DEF INPUT PARAM fuCmdShow AS LONG. DEF RETURN PARAM nTask AS LONG. END PROCEDURE. ASSIGN c-arquivo-relat = SESSION:TEMP-DIRECTORY + "relat.txt". OUTPUT TO VALUE(c-arquivo-relat). /* colocar aqui os puts ou displays se necessário*/ OUTPUT CLOSE. RUN WinExec (INPUT "notepad.exe " + c-arquivo-relat, INPUT 1, /* -- 1 = NORMAL, 2 = MINIMIZADO -- */ OUTPUT i-retorno).
O bloco de notas foi gerado no diretório porém não apareceu em tela, quando eu abro o bloco de notas ele apresenta a msg que defini no PUT porém logo após apresenta a seguinte msg: The process cannot access the file because it is being used by another process.
vc fez o output to .... e esqueceu de fazer o output close. Então o seu arquivo ainda está aberto e em uso pelo progress.