Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Apolo

PHC - Programação em XBASE

Mensagens Recomendadas

Camarao69

Boa noite.

Preciso de uma ajuda a laçar os saldos das contas corrente dos clientes na contabilidade.Tenho criada uma configuração ODBC para movimentos contabilisticos, esta ligado a um ficheiro excel , alguém me pode dar uma luz  como é que importo para as de documentos contabilísticos ?

Tenho de criar alguma tecla , porque não existe nenhuma opção de importação de linhas como nos dossiers internos.

Desde já Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Camarao69

Ajudem me com a tecla sff, Já sei que o ecra é sdointro, , agora alguem me ajuda com o codigo para importar as linhas do exel sff?

 

Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pc.cesar

BOAS

 

Pelo codigo acima apenas necessita de acrescentar

 

 

        Replace ft.Nome With curCL.Nome
        Replace ft.no With curCL.No
        Replace ft.estab With curCL.estab
        ftclact()

Replace ft.Nome With curCL.Nome
        Replace ft.no With curCL.No
        Replace ft.estab With curCL.estab
        ftclact()

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
camexavi
4 minutos atrás, pc.cesar disse:

BOAS

 

Pelo codigo acima apenas necessita de acrescentar

 

 

        Replace ft.Nome With curCL.Nome
        Replace ft.no With curCL.No
        Replace ft.estab With curCL.estab
        ftclact()

Replace ft.Nome With curCL.Nome
        Replace ft.no With curCL.No
        Replace ft.estab With curCL.estab
        ftclact()

Viva @pc.cesar

Quando acrescento ftclact(), em vez de passar os dados do cliente selecionado na  Browlist, está a passar os dados do cabeçalho da ultima fatura gravada.

Porquê?

Obrigado

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
FGuedes

Bom dia,

Necessitava de uma pequena ajuda.

Necessitava de criar na parte dos Stocks e Serviços, Referencias com 26 caracteres. E este campo está bloqueado a 18, à alguma maneira de alterar? Pois na BD é uma coluna de chave primária logo está associada a outros dados.

Através do PHC consigo alterar?

Obrigado a todos desde já.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pc.cesar

Alterar do campo ref,?!!!! é possivel, terá de alterar todos os campos ref, refb, refi de todas as  tabelas, mas sempre que efectuar uma actualização irá perder a informação e causar inconsistência da BD, pois é uma campo da aplicação, voltara ao estado original sempre

deve utilizar o campo codigo "codigo de barras"

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoseAC

eu alterei alguns tamanhos dos campos, em varias tabelas.

é complicado quando se faz uma actualização ou quando se criar um novo "campo do utilizador" perde-se tudo.

já percebi como é que o PHC funciona a esse nivél, e temos um procedimento interno para alterar os tamanhos.

Realmente não mexemos no campo ref.

 

Espero ter ajudado,
José

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PedroBorga

Bom dia,

Sou novo aqui no fórum, embora já tenha por aqui passado algum tempo a aprender umas coisas, embora não-registado.

Hoje peço a vossa ajuda no PHC.

Tenho um campo C chamado u_egar com com comprimento 20.

Normalmente nesse campo são inseridos 16  caracteres. Acontece que nums códigos .FXP presentes no PHC (fazem pesquisas) deviam aparecer 16 caracteres o que não acontece. Aparecem só 15.

No resultado de uns .FXP aparecem os 15 caracteres alinhados à esquerda, noutros os15 alinhados à direita. E depois, quando carrego para exportar e ver em html ou excel aparecem os 16 caracteres novamente.

Há alguma forma de ver mais de 15 caracteres nos quadros (imagem em anexo)?

Como alinho o tal campo sempre à esquerda ou sempre à direita?

Obrigado.

 

Editado por PedroBorga

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PedroBorga
Em 05/01/2018 às 14:10, femo disse:

Não será apenas uma questão da máscara no form?

E como mudo isso? :D

Editado por PedroBorga

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
femo
Em 08/01/2018 às 09:13, PedroBorga disse:

E como mudo isso? :D

Na edição da personalização, cada campo tem propriedades. Uma delas é a máscara, que permite alterar a forma como se mostra o campo. Por exemplo, permite que um campo que está preenchido apenas com números (1234,56), seja mostrado como 1.234,56€.


Fernando Morais

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
camexavi

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

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
camexavi
11 horas atrás, pc.cesar disse:

Apenas necessita de:


If empty(m.iduvaltsql)
return st.desc5
else
return BI.LOBS2
endif

Primeiramente quero agradecer a resposta.

Já coloquei conforme indicou mas não funciona. Quando BI.LOBS2 está preenchido imprime, mas quando não está preenchido não imprime o st.desc5.

Obrigado!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
FGuedes

Bom dia,

Antes de mais obrigado por toda a ajuda, não cheguei a alterar o campo Ref na BD pois ia implicar alterar demasiados campos e de nada valia depois de actualizar.

 

Necessitava agora de outra ajuda! :D

 

Necessitava de criar um botão para quando estou a preencher a fatura. Basicamente queria que ao clicar no botão preenche-se "x" linhas com dados já predefinidos, ou seja, clico na botão e automaticamente aparecia na designação:

1

2

3

4

etc..

 

Não sei se me fiz entender mas penso que sim. Obrigado.

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
femo

Tens mesmo a certeza que é necessário criares um botão para isso?

No preenchimento da factura tens uma opção por baixo das linhas, no menu de opções para "Inserir muito texto nas linhas".

Estes textos podem ser escritos no momento ou "pré-criados" no menu "Tabelas->Supervisor->Textos rápidos".

Parece-me a solução mais prática pois podes editá-los quando quiseres e é uma solução nativa do PHC.


Fernando Morais

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
FGuedes

Boas femo,

Já tentei criar no menu "Tabelas->Supervisor->Textos rápidos" mas não consigo com que me apareça nessa opção da factura.

Por isso é questionei o botão.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
femo

Na factura, por baixo das linhas, não tens o menu de "Opções sobre as linhas" ou nesse menu não tens a opção de "Introduzir muito texto nas linhas"??


Fernando Morais

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
FGuedes

Esquece já descobri. Sim tenho e fiz por ai mas só vi que depois da caixa de texto abrir é que consigo ir buscar o texto rápido.

 

Obrigado !! ;)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Filipe Alves

Boa tarde. Estava a tentar criar um código de forma a preencher os buracos na numeração dos clientes. No entanto estamos a usar estabelecimentos pelo que não estou a conseguir.

O mesmo código funciona nos fornecedores, contactos e pessoas. Alguem pode pf ajudar ? Código abaixo

**inativar mais tarde
Local m_numseq

u_sqlexec("Select no from cl (nolock) order by no", "cltmp")

Local m_oknum
Do While Not m_oknum

 m.m_numseq = 1
 Select cltmp
 Scan
  If m.m_numseq <> cltmp.no
   **m.m_numseq=getnome("Qual o número", m.m_numseq)
   Exit
  Endif
  m.m_numseq = m.m_numseq + 1
 Endscan
 Select cltmp
 Go Top
 Locate For cltmp.no = m.m_numseq
 If Found()
  msg("Desculpe mas não pode escolher esse nº pois já existe na tabela!")
 Else
  m.m_oknum = .T.
 Endif
Enddo

Return m.m_numseq

fecha("cltmp")

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
femo

Não testei, mas na Enciclopedia PHC (2012) tem este exemplo:

---------------------------------------------------------------------------------

Procurar Buracos na Numeração

Pode-se desenvolver código para procurar "buracos" ou falhas numa numeração qualquer. O código pode ser adaptado a qualquer tabela do Software PHC desde que se altere a tabela na instrução SQL.

Durante a execução do código é criado um cursor que vai ser verificado por uma ordem sequencial. Se houver um ou mais "buracos" entre números, é feita uma pergunta ao utilizador para este indicar o número que não foi preenchido (o tal "buraco" numérico). Na própria pergunta é sugerido o número que se encontra em falta se houver mais "buracos", é sempre sugerido o primeiro número que for encontrado, só depois de este ser corrigido é que é sugerido o próximo número em falta.
Se o número introduzido pelo utilizador (durante a pergunta) estiver a ser utilizado o software adverte que o mesmo já se encontra em utilização.

 

* Define-se a variável que vai controlar o número por ordem sequencial
local m_mpsnum

* Neste exemplo é executado o Select à tabela de vendedores. o campo onde vai ser verificado se existem
* falhas numéricas (os tais "buracos") é o campo "CM", ou seja, o número de vendedor.
u_sqlexec("Select cm from cm3 (nolock) order by cm", "cm3tmp")


local m_oknum
do while not m_oknum

* Inicializamos a variável a 1 e começamos a navegar pelo cursor registo a registo por ordem sequencial
m.m_mpsnum = 1
select cm3tmp
scan
* Caso haja uma falha numérica perguntamos ao utilizador qual o número
* mas a própria pergunta sugere o nº que esta em falta e saímos da navegação do cursor
if m.m_mpsnum <> cm3tmp.cm
m.m_mpsnum=getnome("Qual o número", m.m_mpsnum)
exit
endif
* Aqui é incrementada a variável numérica
m.m_mpsnum = m.m_mpsnum + 1
endscan

select cm3tmp
go top

* Verifica-se se existe o número introduzido na pergunta, caso exista o utilizador é advertido e tem de introduzir outro número
* Se o número não existir é porque não houve falhas numéricas ou o utilizador introduziu o número correcto dava origem a um "buraco"
locate for cm3tmp.cm = m.m_mpsnum
if found()
msg("Desculpe mas não pode escolher esse nº pois já existe na tabela!", "DIRECTA")
else
m.m_oknum = .t.
endif
enddo

return m.m_mpsnum

 


Fernando Morais

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Filipe Alves

Pois, eu usei esse código da PHC enciclopédia para os fornecedores, contactos e pessoas Mas não funciona nos clientes :)

Alguma ideia porque ?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
FGuedes

Boa tarde,

sei que não tem nada haver com a programação do phc, mas para fazer a atualização do código interno do phc, não é na própria aplicação?

Cumprimentos.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Filipe Alves
Em 01/02/2018 às 16:59, FGuedes disse:

Boa tarde,

sei que não tem nada haver com a programação do phc, mas para fazer a atualização do código interno do phc, não é na própria aplicação?

Cumprimentos.

Não. Não existe nenhuma função nas definições do PHC para "tapar" buracos de numeração. tem de ser criado código especifico...

Mas já resolvi. Bastou alterar para:

u_sqlexec("Select no from cl (nolock) where estab = 0 order by no", "cltmp")

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.