Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Apolo

PHC - Programação em XBASE

Recommended Posts

pc.cesar

Nao existe nada mas podes sempre utilizar TsqL

envio query que procurar o primeiro buraco nas entidades, cria um valor por defeito na numeração da CL

SELECT MIN(no) + 1 AS PROX_ID_LIVRE
FROM ag T
WHERE NOT EXISTS (
    SELECT no FROM ag T1 WHERE T1.no = (T.no + 1))

 

Share this post


Link to post
Share on other sites
Filipe Alves
Em 03/02/2018 às 13:37, pc.cesar disse:

Nao existe nada mas podes sempre utilizar TsqL

envio query que procurar o primeiro buraco nas entidades, cria um valor por defeito na numeração da CL


SELECT MIN(no) + 1 AS PROX_ID_LIVRE
FROM ag T
WHERE NOT EXISTS (
    SELECT no FROM ag T1 WHERE T1.no = (T.no + 1))

Obrigado. Testei mas cria conflito e não funciona quando se pretende adicionar estabelecimentos a um cliente existente.

Alguma sugestão ?

  • Vote 1

Share this post


Link to post
Share on other sites
NelsonPaiva

Alguém sabe em que tabela é que o PHC guarda a informação de quem imprimiu determinado IDU? É que num dossier tenho vários IDU mas tenho um IDU especifico que pretendo controlar as impressões e em que o PHC está a guardar o registo de todas as impressões feitas.

Se formos ao menu "opções diversas - opções com o registo - ver quem já imprimiu este registo" consigo ver quem e quando imprimiu mas apenas no dossier que tenho em aberto.

Se soubesse em que tabela é que essa informação é guardada eu poderia criar um código em que me mostrava quem é que usou aquele IDU especifico e em que em dossiers é que foi usado.

Andei a procurar no dicionários de dados mas apenas consigo encontrar um pequena parte da informação que é mostrada no registo das impressões.

Share this post


Link to post
Share on other sites
Luis Pais
Em 18/01/2018 às 18:49, camexavi disse:

Boa noite :)

Mais uma vez, venho solicitar a V/ preciosa ajuda.

Estou a criar IDU etiquetas, precisava que quando na linha do dossier o campo "BI.LOBS2" estivesse vazio fosse ler ao campo "ST.DESC5" na tabela ST.

Tenho este código, mas repete sempre o valor da 1ª linha do dossier para as restantes linhas com referencias de artigo diferente.

Obrigado!


Parameters iduvaltsql
select bi
Go top
Scan
u_sqlexec([select desc5,desc6 from st where st.ref=']+alltrim(bi.ref)+['],[curOBS])
 
If empty(m.iduvaltsql)
return curOBS.desc5
else
return m.iduvaltsql
endif
endscan

 

Boa noite,

Relativamente à questão por si colocada, conseguiu resolver?

Estou com um problema idêntico. No IDU das etiquetas, tenho um campo pertencente a uma tabela personalizada.

Ao imprimir a etiqueta, imprime o valor do 1º registo nas referências seguintes, referências essas diferentes

A título de exemplo, no IDU de Inventário de Stock's, ao pretender colocar na etiqueta de inventário a informação de um campo de uma tabela personalizada, usei a associação a "+alltrim(stinv.ref)+". Se utilizasse a associação a "+alltrim(st.ref)+", na etiqueta ía repetir o valor do 1º registo nas seguintes referências.

Daí, dado que não conheço profundamente a framework, calculo que exista um campo estilo "+alltrim(tmpbi.ref)+". Mas não consigo lá chegar.

Caso possa ajudar-me, agradeço.

Cumprimentos,

Luís Pais

Edited by Luis Pais

Share this post


Link to post
Share on other sites
camexavi
14 horas atrás, Luis Pais disse:

Boa noite,

Relativamente à questão por si colocada, conseguiu resolver?

Estou com um problema idêntico. No IDU das etiquetas, tenho um campo pertencente a uma tabela personalizada.

Ao imprimir a etiqueta, imprime o valor do 1º registo nas referências seguintes, referências essas diferentes

A título de exemplo, no IDU de Inventário de Stock's, ao pretender colocar na etiqueta de inventário a informação de um campo de uma tabela personalizada, usei a associação a "+alltrim(stinv.ref)+". Se utilizasse a associação a "+alltrim(st.ref)+", na etiqueta ía repetir o valor do 1º registo nas seguintes referências.

Daí, dado que não conheço profundamente a framework, calculo que exista um campo estilo "+alltrim(tmpbi.ref)+". Mas não consigo lá chegar.

Caso possa ajudar-me, agradeço.

Cumprimentos,

Luís Pais

Boa tarde!

Resolvi, mas de outra forma. Acabei por passar os valores que pretendo da tabela ST para a linha BI.

If !Empty(Alltrim(bi.ref))
	u_sqlexec([select desc5,desc6 from st where ref=?bi.ref],[curVERst])
	
		If bo.ndos=28
			If empty(bi.lobs2)
			Replace bi.lobs2 With curVERst.desc6
			Endif
			If empty(bi.lobs)
			Replace bi.lobs With curVERst.desc5
			Endif
Endif
Endif

 

  • Vote 1

Share this post


Link to post
Share on other sites
soares chirrute

bom dia!

Sou iniciante em phc. Peço que me ajudem a resolver a seguinte questão, quero criar uma regra que esconda um objecto de um ercã, quando um determinado grupo de utilizadores acede a esse mesmo ecrã.

Share this post


Link to post
Share on other sites
NelsonPaiva
7 horas atrás, soares chirrute disse:

bom dia!

Sou iniciante em phc. Peço que me ajudem a resolver a seguinte questão, quero criar uma regra que esconda um objecto de um ercã, quando um determinado grupo de utilizadores acede a esse mesmo ecrã.

Penso não estar a dizer nenhuma asneira mas isso não é possível. As regras são executadas ao gravar logo se o utilizador não gravar a regra nem é executada.

Mas podes fazer isso através de personalizações de ecrã. Crias uma personalização sem esse objeto e dizes que essa personalização é para determinado grupo.

Share this post


Link to post
Share on other sites
NelsonPaiva

Estou a tentar criar uma análise mas estou com alguns problemas. Se alguém me conseguir dar uma ajuda.

Explicando o cenário:
Tenho o dossier A e o dossier B.
O dossier B tem uma lista de materiais sendo que o total de custo das restantes linhas é calculado na 1ª linha.
Essa primeira linha é depois importada para o dossier A, sendo que um registo deste dossier terá várias linhas de diferentes dossiers B. Uma das colunas presentes no dossier A já indica qual o nº de dossier do B que origina aquela linha.

Eu queria criar uma análise em que bastava colocar o nº de dossier do "tipo" A e em que era lida a coluna com os nº dos dossiers B pertencentes a esse registo, e a análise fosse buscar cada um desses registos ao dossier B e desse um somatório do total de material agrupado por referência.

Exemplo:
O dossier A com o nº 200 tinha nas linhas os dossiers dos B nº 25, 33 e 20.
Na análise era pedido o nº do dossier A, eu colocava 200 e ele "guardava" os nº 25, 33 e 20 e ia ao dossier B a esses registos o final dava a lista de todas as referências que eram usadas nesses três dossiers e a quantidade.

 

Não sei se me consegui explicar bem.

A parte de ler o nº dos dossiers que fazem parte do registo A é facil. O meu problema é como pegar nesses valores e os usar para ir ao dossiers B e depois apresentar as referências.

Alguém me consegue dar uma ajuda?

Share this post


Link to post
Share on other sites
pc.cesar
5 horas atrás, NelsonPaiva disse:

Penso não estar a dizer nenhuma asneira mas isso não é possível. As regras são executadas ao gravar logo se o utilizador não gravar a regra nem é executada.

Mas podes fazer isso através de personalizações de ecrã. Crias uma personalização sem esse objeto e dizes que essa personalização é para determinado grupo.

é possivel  fazer isso , basta ir ás propriedades do campo e a primeira opção e dizer quem tem acesso ao campo

  • Vote 1

Share this post


Link to post
Share on other sites
Filipe Alves
12 horas atrás, pc.cesar disse:

é possivel  fazer isso , basta ir ás propriedades do campo e a primeira opção e dizer quem tem acesso ao campo

Olá

E na versão Corporate existe alguma forma de se definir que os utilizadores do X não tem acessos aos artigos de stock/dossiers internos com a marca Y ?

Share this post


Link to post
Share on other sites
NelsonPaiva
Em 16/03/2018 às 22:01, pc.cesar disse:

é possivel  fazer isso , basta ir ás propriedades do campo e a primeira opção e dizer quem tem acesso ao campo

Mas isso nas personalizações de ecrã? Ou é possível fazer numa regra?

Share this post


Link to post
Share on other sites
camexavi

Boa tarde ;)

Venho mais uma vez solicitar a vossa ajuda.

Existe um campo no PHC na tabela de faturas, FT3.BARCODE, em que pretendo gravar um código com o seguinte formato:

(ano atual)+ft.ndoc+ft.fno

Estou a tentar criar na opção Valores por defeito no campo FT3.BARCODE mas sem sucesso

Será que podem ajudar?

Obrigado!

Share this post


Link to post
Share on other sites
pc.cesar

Vou verificar,

Mas esse campo já deveria fazer isso a partir da V21 salvo erro.

Share this post


Link to post
Share on other sites
camexavi
2 minutos atrás, pc.cesar disse:

Vou verificar,

Mas esse campo já deveria fazer isso a partir da V21 salvo erro.

Segundo informação que obtive, foi descontinuado na V22, isto é o campo existe mas não grava nada

Obrigado!

Share this post


Link to post
Share on other sites
soares chirrute

bom dia!

mais uma vez espero contar com V/ajuda, 

alguem pode me ajudar com o comando xbase para gravar imagens na base de dados?

 

Share this post


Link to post
Share on other sites
NelsonPaiva
10 horas atrás, soares chirrute disse:

bom dia!

mais uma vez espero contar com V/ajuda, 

alguem pode me ajudar com o comando xbase para gravar imagens na base de dados?

 

Um comando para gravar imagens como assim?

O que pretendes fazer?

Share this post


Link to post
Share on other sites
pc.cesar

onde e o que queres gravar,,, atenção que as imagens/ficheiros gravados na BD vão fazer a BD crescer

 

CREATE TABLE TuTabla ( Id int, Name varchar(50) not null, imagen varbinary(max) not null ) INSERT INTO TuTabla (Id, Name, imagen) SELECT 1, 'Norman', BulkColumn FROM Openrowset( Bulk 'C:\ImagenFichero.bmp', Single_Blob) as Imagen

atenção que para usar o fox tambem tem de ser validado o tamanho e tipo de ficheiro para poder extrair o mesmo

 

 

Share this post


Link to post
Share on other sites
pc.cesar
Em 17/03/2018 às 10:03, Filipe Alves disse:

Olá

E na versão Corporate existe alguma forma de se definir que os utilizadores do X não tem acessos aos artigos de stock/dossiers internos com a marca Y ?

Não.. só com filtros em advanced

Share this post


Link to post
Share on other sites
camexavi
Em 20/03/2018 às 18:31, pc.cesar disse:

Vou verificar,

Mas esse campo já deveria fazer isso a partir da V21 salvo erro.

Desculpa a insistência, consegues ajudar me?

Obrigado!

Share this post


Link to post
Share on other sites
soares chirrute
13 hours ago, pc.cesar said:

onde e o que queres gravar,,, atenção que as imagens/ficheiros gravados na BD vão fazer a BD crescer

 

CREATE TABLE TuTabla ( Id int, Name varchar(50) not null, imagen varbinary(max) not null ) INSERT INTO TuTabla (Id, Name, imagen) SELECT 1, 'Norman', BulkColumn FROM Openrowset( Bulk 'C:\ImagenFichero.bmp', Single_Blob) as Imagen

atenção que para usar o fox tambem tem de ser validado o tamanho e tipo de ficheiro para poder extrair o mesmo

 

 

 

No ecrã gestão de stocks, na janela informação adicionei mais um campo para a segunda imagem, criei um botão para adicionar e ver a imagem. Pretendo criar outro botão pra gravar

19 hours ago, NelsonPaiva said:

Um comando para gravar imagens como assim?

O que pretendes fazer?

É o seguinte na ficha de artigos, adicionei mais um campo para a segunda imagem. Agora pretendo criar um botão que me permita gravar essa imagem

Share this post


Link to post
Share on other sites
femo
22 horas atrás, soares chirrute disse:

 

No ecrã gestão de stocks, na janela informação adicionei mais um campo para a segunda imagem, criei um botão para adicionar e ver a imagem. Pretendo criar outro botão pra gravar

É o seguinte na ficha de artigos, adicionei mais um campo para a segunda imagem. Agora pretendo criar um botão que me permita gravar essa imagem

Se o objectivo for apenas a visualização das imagens dos artigos, a minha solução para o problema passaria por colocar as imagens numa pasta partilhada gravadas com o nome do ficheiro [ref].jpg, [ref]_01.jpg  e criar um botão que chamasse esse(s) ficheiro(s). Claro que o caminho de partilha tinha que ser igual em todos os PC's, por isso atribuiria uma letra de unidade (T: por exemplo). Assim não pesariam na BD e toda a gente teria acesso. (É o sistema que utilizo na minha empresa)


Fernando Morais

Share this post


Link to post
Share on other sites
soares chirrute

boas tardes,

Estou a configurar uma loja web, peço a V/ajuda para criar um menu de navegação no cabeçalho contendo  por exemplo:  Bebe, acessórios…

Share this post


Link to post
Share on other sites
PHonorato

Boa tarde.

Como é que consigo chamar um programa externo com um argumento?

Se fizer um botão e tentar chamar o programa externo com argumento dá erro (exemplo: programa.exe teste1)(mas se fizer só programa.exe funciona)

O programa externo aceita argumentos depois do nome do programa, dá através de outros programas e através de linha de comandos.

Possivelmente por programação devo conseguir, só preciso mesmo de executar o programa externo com um argumento.

Obrigado

Share this post


Link to post
Share on other sites
PHonorato

Já consegui.

E já agora como é que sei qual o valor que está no campo ref na janela dos artigos?

Share this post


Link to post
Share on other sites
JoseAC

Olá a todos,

estou a tentar construir um IDU com este valores

Tenho um campo numérico   bo.u_valorini  que quero multiplicar 1.23  que é o valor do iva

exemplo se o campo tiver 150€ quando multiplico * 1.23 , devia dar 184.50 mas da-me 185 ( assim funciona mas eu queria eu ele fosse buscar o valor do iva a tabela BI.IVA )

quando tento correr este código não aparece nada  bo.u_valorini * BI.IVA   da-me erro

Alguma ajuda agradeço,

Obrigado

José

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.