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

Tesla

PHC: Tecla para copiar dossiers para outros dossiers

19 mensagens neste tópico

Boas.

Alguém sabe como copiar o conteúdo de um Dossier Interno para outro Dossier Interno à escolha?

Podem explicar como?

Abraço.  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vê o exemplo:

if not used("Bo")

do dbfusebo

endif

** Leitura da referência interna, centro de custo

* e identificação interna dos documento de facturação

select Bo

** Copia as linhas de facturas paras as linhas das compras,

* aqui o utilizador é livre de colocar os campos que achar melhor.

select bi

scan

do boine2in

select Bi

replace bi.bistamp with u_stamp()

replace bi.ref with bi.ref

replace bi.design with bi.design

replace bi.qtt with bi.qtt

endscan

** Refresh ao ecrã.

sbo.refresh()

isto cria o dossier mas em modo de edição (no client e não no server) depois é só validar a informação.

Claro que podes depois complementar o codigo para colocar informação mais informação no cabeçalho do documento (na bo)

não te esqueças de corrigir o ndos origem e ndos destino

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eh pah, passei o código directamente para uma tecla, mas quando o corri a unica coisa que aconteceu o acrescento de linhas entre as referencias do dossier... podias explicar melhor o código que aí tens?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boas

Usa este codigo, mas não uses uma tecla do phc, cria um botão e coloca-o a fazer isto. Evita as teclas...

boa implementação, :)

codigo em VFP

"...

if not used("BO")

do dbfuseBo

endif

select Bo

m_var1=""

m_var1=m_var1+"Select * From Bo (Nolock) Where bostamp='"+bo.bostamp+"' "

u_sqlexec(m_var1,"c_bo")

select Bi

m_var2=""

m_var2=m_var2+"Select * From bi (Nolock) where bostamp='"+bo.bostamp+"' Order by lordem"

u_sqlexec(m_var2,"c_bi")

doread("Bo","SBo")

sbo.newndos(1)  && deves aqui colocar o ndos destino

sBo.dointroduzir

Select Bo

Replace Bo.Nome With Rtrim(c_bo.Nome)

Replace Bo.VENDEDOR With c_bo.VENDEDOR

Replace Bo.Vendnm With Rtrim(c_bo.Vendnm)

Replace Bo.No With c_bo.No

Replace Bo.Estab With c_bo.Estab

Replace Bo.DataObra With c_bo.DataObra

Select Bi

delete

do Boine2in

Replace Bi.Design With Rtrim(c_Bo.Nmdos) + " n.º " +Ltrim(Rtrim(Str(c_Bo.obrano)))+ " de "+ Rtrim(Dtos(c_Bo.DataObra) )

Replace Bi.Obrano      With c_Bo.Obrano

Replace Bi.Bostamp With Rtrim(c_Bo.Bostamp)

Replace Bi.ndos With c_Bo.ndos

Replace Bi.nmdos With Rtrim(c_Bo.nmdos)

Do TSREAD with '',1

Do U_BOTTDEB with 'Bi'

select c_Bi

Go top

scan

Do Boine2in

select Bi

Replace Bi.oobistamp With Rtrim(c_bi.bistamp)

Replace Bi.Bistamp With u_stamp()

Replace Bi.ref With Rtrim(c_bi.ref)

Replace Bi.design With Rtrim(c_bi.design)

Replace Bi.qtt With c_bi.qtt

Replace Bi.uni2qtt With c_bi.uni2qtt

Replace Bi.Armazem With c_Bi.Armazem

Replace Bi.Obrano With c_Bo.Obrano

Replace Bi.Bostamp With Rtrim(c_Bo.Bostamp)

Replace Bi.ndos With c_Bo.ndos

Replace Bi.nmdos With Rtrim(c_Bo.nmdos)

Replace Bi.codigo With c_bi.codigo

Replace Bi.Cpoc With c_bi.Cpoc

Replace Bi.usr1 With c_bi.usr1

Replace Bi.usr2 With c_bi.usr2

Replace Bi.usr3 With c_bi.usr3

Replace Bi.usr4 With c_bi.usr4

Replace Bi.usr5 With c_bi.usr5

Replace Bi.usr6 With c_bi.usr6

Replace Bi.unidade With c_bi.unidade

Replace Bi.unidad2 With c_bi.unidad2

Replace Bi.familia With c_bi.Familia

Replace Bi.NcCod With c_Bi.NcCod

Replace Bi.Pu With c_Bi.Pu

Replace Bi.ePu With c_Bi.ePu

Replace Bi.debito With c_Bi.debito

Replace Bi.edebito With c_Bi.edebito

Replace Bi.prorc With c_Bi.prorc

Replace Bi.eprorc With c_Bi.eprorc

Replace Bi.custoind With c_Bi.custoind

Replace Bi.ecustoind With c_Bi.ecustoind

Replace Bi.debitoori With c_Bi.debitoori

Replace Bi.edebitoori With c_Bi.edebitoori

Replace Bi.pcusto With c_Bi.pcusto

Replace Bi.epcusto With c_Bi.epcusto

Replace Bi.ttdeb With c_Bi.ttdeb

Replace Bi.ettdeb With c_Bi.ettdeb

Do TSREAD With '',1 && muda o ndos

Do U_BOTTDEB With 'Bi'

endscan

sBo.refresh()

..."

1

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas.

Muito obrigado pelo código. Apesar de fazer a alteração para o BO de destino, aparece-me uma mensagem de erro a dizer que o endereço não é válido.

Onde pode estar o problema?

Abraço e obrigado. :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

se estas a usar personalização de ecrã e associas-te isto a um botão, então o tipo de acção (click) ficou para 1-programa externo e deve estar 2-programa interno (Nas propriedades do objecto, é das ultimas propriedades)

no comando deves colocar a tecla/função/procedimento a correr

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

se estas a usar personalização de ecrã e associas-te isto a um botão, então o tipo de acção (click) ficou para 1-programa externo e deve estar 2-programa interno (Nas propriedades do objecto, é das ultimas propriedades)

no comando deves colocar a tecla/função/procedimento a correr

sim, isso eu sei e fiz( keyboard "{CTRL+PGUP}" )... e é quando clico no botão que me dá essa mensagem...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tou a dormir... tinha comando externo... lol... já testo e já digo algo. ;-)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o erro reportado esta associado ao programa externo/interno. Para te poder ajudar mais só acedendo à programação (envia-me o template do ecrã bem como o n. ndos) ou acedendo remotamente à tua maquina.

O codigo que te envie (2 vez) funciona bem no meu pc, sem erros (testei antes de enviar)

...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

mais uma vez, não uses teclas, cria funções e/ou trabalha com o bindevent

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É possível criar funções em advanced? Onde? Como?

E dá-me erro na linha 8 ... Operator/operand type mismatch...

Bom, mas o importante do código foi atingido. Acho que percebi a mecânica de passar isto.

Só preciso de saber o que são os seguintes comandos:

Boine2in

TSREAD

U_BOTTDEB

Abraço.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É possível criar funções em advanced? Onde? Como?

R:cria uma grelha na função Xbase cria a função (neste caso será local)

E dá-me erro na linha 8 ... Operator/operand type mismatch...

R:envia-me o teu codigo (faz copy/paste para aqui para eu ver o erro)

Bom, mas o importante do código foi atingido. Acho que percebi a mecânica de passar isto.

R:ainda bem que entendeste

Só preciso de saber o que são os seguintes comandos:

Boine2in

TSREAD

U_BOTTDEB

R: são tudo funções do PHC abre a enciclopedia e pesquisa informação sobre estas funções. Mas podes sempre criar as tuas funções, locais ou publicas para  fazeres o que quiseres com elas no PHC

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estou aqui a brincar com o código e obtenho este erro (2 vezes) sempre que corro isto

*busca das informações a introduzir no novo dossier

u_sqlexec([sELECT * FROM bo (nolock) WHERE bo.bostamp=']+bo.bostamp+['], [cr1])

u_sqlexec([sELECT * FROM bi (nolock) WHERE bi.bostamp=']+bo.bostamp+['], [cr2])

doread("BO", "SBO")

*codigo para abrir o novo dossier e introduzir os campos obrigatórios

sbo.newndos(28)

sbo.dointroduzir

O que poderá estar a acontecer?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O erro é

Object is not contained in a FORM.

Ocorre duas vezes, talvez porque o documento que estou a usar para teste tem duas linhas.

Depois, isto só acontece quando coloco a linha sbo.newndos(28)... ??

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o erro que reportas tem haver com objectos do form e não com o codigo em causa (isto partindo do principio que não estas a mexer nos objectos do form e estas a usar a tecla).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois é.

Fui para outra BD, menos mexida e testei o código sem o botão... e pimba... não deu erro nenhum... então como é que consigo por isto a correr sem erros mas usando o botãozeco?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

como deduzo que saibas pouco de programação vou explicar o metodo mais simples

crias uma grid no dossier

na opção XBASE

crias a função com o codigo que esta na tecla

crias um botão no dossier

invocas a função

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ola.

Experimentei esse método mas obtive o erro do form reportado pelo user tesla.

Criei a grid, fui à opção XBASE, criei a função com o código da tecla, depois criei o botão no dossier e em comando coloquei funcaoteste(), defini como comando interno e salvei.

Quando click nele, fez tudo o que se lhe pediu mais a apresentação do erro do FORM.

Que estarei a fazer mal?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como criaste o botão na personalização do dossier origem (ndos=1) no dossier destino (ndos=2) este objecto não existe (nunca abandonas-te o form, apenas mudas-te de dossier) como tal a aplicação queixa-se.

Para ultrapassar isto deves criar o botão no form mas não atraves da personalização do ecrã.

Se não sabes cria objectos em form sem usar a personalização de ecrã (nem a framework do PHC) usa a tecla é mais simples...

0

Partilhar esta mensagem


Link 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