quinta-feira, 5 de abril de 2018

Procurando campos nas enormes tabelas do Protheus...



Quando estamos programando, de vez em quando precisamos localizar um campo para saber seu tipo e tamanho e declararmos corretamente variáveis e outros que receberão seus valores.
Com a quantidade de campos cada vez maior nas tabelas do Protheus, é necessário usar artifícios para se ter agilidade nesta busca.
Segue então, um script que ajuda a localização de um, neste "mar" de campos. Por exemplo, para localizar rapidamente o campo E2_NUM e ver suas propriedades:


SELECT
TABELAS.NAME, COLUNAS.NAME AS COLUNA,
TIPOS.NAME AS TIPO,
COLUNAS.LENGTH AS TAMANHO,
COLUNAS.ISNULLABLE AS EH_NULO
FROM
sysobjects AS TABELAS,
syscolumns AS COLUNAS,
systypes AS TIPOS
WHERE
-- JOINS
TABELAS.ID = COLUNAS.ID
AND COLUNAS.USERTYPE = TIPOS.USERTYPE
AND TABELAS.NAME = 'SE2010'
AND COLUNAS.NAME = 'E2_NUM'


Obs.: Post complementar à outro feito neste blog: SQL para Listar os campos das tabelas

terça-feira, 19 de setembro de 2017

Mais uma de NFe - Consultando inutilização


Verifique se realmente suas notas fiscais foram inutilizadas consultando-as no link:

Portal da NFe. Verificando disponibilidade de serviços

Consultando a disponibilidade de serviços.

Durante sua finalização de vendas, caso precise ver a disponibilidade dos serviços de Nota Fiscal eletrônica, consulte pelo link:


terça-feira, 29 de agosto de 2017

Path Relativo X Absoluto !

Documentando, para quando ainda houver dúvida:


Em diversas funções do Protheus, como FCREATE(), temos que mencionar o path alvo. No caso de FCREATE(), o alvo será onde o arquivo será criado.

Este path pode ser absoluto ou relativo. Mas qual a diferença?

Quando informado um path relativo, sem a unidade de disco (exemplo: "\temp\teste"), o diretório alvo, será o servidor, abaixo do RootPath*.

Para apontar para um diretório na máquina cliente (onde o SmartClient está sendo executado), é necessário informar um path absoluto, com unidade de disco (exemplo: "c:\trabalho\teste").


* RoothPath = tag no arquivo appserver.ini, que identifica o diretório raiz do Sistema (ERP), a partir do qual todos os diretórios utilizados pelo Sistema serão criados.

sexta-feira, 17 de março de 2017

Barras de título ocupando espaço?





Precisando ganhar alguns centímetros de tela? Usando as propriedades WS_VISIBLE e WS_POPUP, neste caso, é possível remover a barra de títulos em janelas. Veja os exemplos:

define msdialog oDialog title "Sem barra de titulo" from 0,0 to 800,100 pixel style nOR( WS_VISIBLE, WS_POPUP )
oDialog:lMaximized := .t.  // maximiza janela.


* No construtor construtor MsDialog:New, use deste modo:

oDialog := msdialog():new(0,0,800, 1000,"Sem barra de titulo",,,,nOr(WS_VISIBLE,WS_POPUP),CLR_BLACK,CLR_WHITE,,,.t.,,,,.t.)
oDialog:lMaximized := .t.  // maximiza janela.


* No construtor TDialog:New, use deste modo:

oDialog := tdialog():New(0,0,800,1000,"Sem barra de titulo",,,,nOr(WS_VISIBLE,WS_POPUP),CLR_BLACK,CLR_WHITE,,,.t.,,,,,,.f.)
oDialog:lMaximized := .t.  // maximiza janela.