Dbedit Relacionado...

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
Marcos
Usuário Nível 3
Usuário Nível 3
Mensagens: 355
Registrado em: 20 Set 2003 09:16
Localização: Cáceres/Mato Grosso

Dbedit Relacionado...

Mensagem por Marcos »

Olá a todos deste conceituado fórum, em minha aplicação possuo um rotina onde a função tém por finalidade mostrar todas as Contas a Receber, só que estou com um pequeno problema, eu gravo no DBF Contas a Receber o nome do cliente porque não sei como relacionar a Tabela de Contas a receber com a Tabela de Clientes, eu queria mudar isto, só que a minha rotina está pronta sem o Relacionamento, e gostaria com a ajuda de vocês resolver isto, eu já gravo o Código do Cliente no Contas a Receber, e gostaria de mostrar no meu Dbedit() de Contas a Receber o nome do Cliente e também mais alguns dados sobre ele tipo como detalhes, ou seja, abaixo do Dbedit() Contas a Receber aparecer detalhes com o Nome do Cliente, endereço etc, e conforme o usuário vai movimentando sobre o Dbedit vai mostrando em detalhes os dados. Não sei se fui claro, abaixo vai um pedaço do meu código para analise:

Código: Selecionar todos

SELECT ARECEBER    // TABELA DE CONTAS A RECEBER
DBSETORDER(1)
PUBLIC VETOR1[13], VETOR2[13], VETOR3[13]
VETOR1[1] = "CODIGO"
VETOR1[2] = "NUM_PARCEL"
VETOR1[3] = "NOME_CLIEN"   // GRAVO O NOME PORQUE NÃO SEI      
VETOR1[4] = "NOTAFISCAL"   // FAZER O RELACIONAMENTO.
VETOR1[5] = "VALOR_PARC"
VETOR1[6] = "DATA_VENCI"
VETOR1[7] = "TIPO"
VETOR1[8] = "DATA_EMISS"
VETOR1[9] = "DATA_ENTRA"
VETOR1[10] = "VALOR_DOC"
VETOR1[11] = "QTD_PARCEL"
VETOR1[12] = "DIAS_PRAZO"
VETOR1[13] = "SITUACAO"
VETOR2[1] = "999999"
VETOR2[2] = "999"
VETOR2[3] = "@!"
VETOR2[4] = "9999999999"
VETOR2[5] = "9,999,999,999.99"
VETOR2[6] = "99/99/9999"
VETOR2[7] = "@!"
VETOR2[8] = "99/99/9999"
VETOR2[9] = "99/99/9999"
VETOR2[10] = "9,999,999,999.99"
VETOR2[11] = "999"
VETOR2[12] = "999"
VETOR2[13] = "@!"
VETOR3[1] = "Doc."
VETOR3[2] = "Parc."
VETOR3[3] = "Nome do Cliente"
VETOR3[4] = "Nf"
VETOR3[5] = "Valor Parcela"
VETOR3[6] = "Vencimento"
VETOR3[7] = "Tipo"
VETOR3[8] = "Emiss„o"
VETOR3[9] = "Entrada"
VETOR3[10] = "Valor"
VETOR3[11] = "Qtd. Parc."
VETOR3[12] = "Prazo"
VETOR3[13] = "Situa‡„o"
DBGOTOP(1)
dbedit( 2, 3,20,77,vetor1,"TESTE",vetor2,vetor3,chr(194)+chr(196),chr(179),chr(193)+chr(196),)
Do While .t.
   Do Case
     Case (LastKey() == K_ENTER)
        Goto RecNo()
        xcod_cre:=CODIGO
   EndCase
     Exit
EndDo
RETURN (.T.)
A função TESTE() é para fazer Pesquisas diversas dentro do Dbedit.
Ficaria muito grato c alguém pudesse me ajudar.
Abraços,
Marcos
Da Roça.
Editado pela última vez por Pablo César em 09 Abr 2012 21:58, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Mensagem por janio »

Olá,

Também já passei por esse mesmo tipo de problema. Como sempre precisei da ajuda dos clippeiros deste Fórum e eles, é claro, me ajudaram! Oba! :lol:

Neste tópico vc encontrará a solução para seu problema
http://www.forumnow.com.br/vip/mensagen ... co=2371878

bay, bay

Janio
Avatar do usuário
Marcos
Usuário Nível 3
Usuário Nível 3
Mensagens: 355
Registrado em: 20 Set 2003 09:16
Localização: Cáceres/Mato Grosso

Funcionou em Partes!!!

Mensagem por Marcos »

Janio muito obrigado pela sua ajuda, funcionou em partes, como eu mencionei na minha postagem, eu gostaria que o Nome do Cliente e mais alguns dados sobre o mesmo fossem exibidos como detalhe na tela, ou seja, de acordo que o usuario for movimentando as teclas direcionais dentro do Dbedit vai passando os dados sobre o cliente, acho que vocês me entederam, mas até aqui deu tudo certo, muito obrigado desde já.
Abraços,
Marcos
dimn
Usuário Nível 1
Usuário Nível 1
Mensagens: 25
Registrado em: 14 Set 2004 10:02

Mensagem por dimn »

é só vc escrever dentro da funcao teste a pesquisa, ou seja, a funcao teste é acionada toda vez q um tecla é pressionada, então quando o usuario movimentar a setas a função teste será chamada, então escrevea dentro da função teste o seguinte:

x = select() //
select cliente
seek contas a receber->cliente
select(x) //
@ 15,20 say nome

espero ter sido claro.
Avatar do usuário
Marcos
Usuário Nível 3
Usuário Nível 3
Mensagens: 355
Registrado em: 20 Set 2003 09:16
Localização: Cáceres/Mato Grosso

Outra Forma.

Mensagem por Marcos »

Dimn eu entendi perfeitamente, só que há um problema, a minha função TESTE é universal e serve para todos os DBEDIT'S, não teria como eu colocar o código que vc sugeriu no DBEDIT, ou uma outra forma de fazer pelo DBEDIT.
Outra dúvida minha é a seguinte: Ao fazer o Relacionamento a Função de Busca não está funcionando mais, ao digitar o Nome do Cliente dentro do DBEDIT de Contas a Receber a busca não funciona, acho que é devido ao Nome do Cliente vir do Cadastro de Clientes e não estar no Contas a Receber, pois no Contas a Receber só consta o Código do Cliente, como poderia resolver isto?
Marcos
Avatar do usuário
Clash
Usuário Nível 2
Usuário Nível 2
Mensagens: 81
Registrado em: 11 Set 2004 11:14
Localização: Divinópolis (MG)

Relacionamento no Dbedit

Mensagem por Clash »

Olá Marcos! Tudo bem?!
Já tive os mesmos problemas até encontrar a solução adequada. Resolvi de forma simples e fácil usando o SET RELATION com o DbEdit() e a função de Pesquisa.

Vou tentar ser breve, mas tb coloco a disposição meu email (drtech@ig.com.br) para futuras consultas.
Nota de Moderação:
por [url=https://pctoledo.org/forum/memberlist.php?mode=viewprofile&u=100899][color=#00AA00]Pablo César[/color][/url]: (de acordo a sua ultima citação) 
 
Enviar por email, resolver através de meios privados são práticas não aceitas aqui no fórum. Desestimulamos este tipo de procedimento, já que o objetivo do fórum é para servir como fonte centralizadora de informações, onde os usuários possam compartilhar de forma pública e não exclusiva. Favor ler a Regra Geral do Fórum (itens 10,11,12 e 13).
Veja o exemplo:

Código: Selecionar todos

Select 0
Use CLIENTES alias CLIENTES
Set Index to CLIECOD,CLIENOM,CLIECPF
Select 0

Use RECEBER alias RECEBER
Set Index to RECBVCT,RECBCOD,RECBDOC
Set Relation COD_CLIE into CLIENTES   
Go Top
&&--> COD_CLIE é o campo código do cliente aqui no DBF Receber!

Declare Campos[4],Titulos[4],Masc[4]  ou do jeito q vc estava fazendo.
Campos := {"campo1","campo2","campo3",....}
Titulos := {"titulo1","titulo2",....}

Dbedit(ls,cs,li,ci,Campos,"PESQUISA",Masc,Titulos)

FUNCTION PESQUISA(MODO)
Do Case
     Case Modo = 0  &&--> Navegação de registros (SETAS,PGUP,etc)
             @ LIN,COL Say LEFT(CLIENTES->NOME,30)
             @ LIN,COL Say CLIENTES->TELEFONE
             &&--> essa linha e coluna é uma área do janela onde vc exibe 
                       o dbedit. Eu sempre faço uma janela maior que o do 
                       dbedit exatamente pra deixar umas duas linhas pra
                       mostrar dados do Cliente, Forma de pgto, etc...

     Case Modo = 4 &&--> O usuário pressionou alguma tecla de ação
                                      ENTER(13),ESC(27),INSERT(22)...
             Do Case
                  Case Lastkey()=27
                          Return(0) &&--> pra terminar o Dbedit
                  Case Lastkey()=13
                          Rotina pra alterar ou pesquisar, etc..
             EndCase
EndCase
Return(1)
Ok Marcos?!

Agora, eu tb já uso agora colocar dentro da matriz do DbEDit(). Se vc não se preocupa com a quantidade de campos na janela do dbedit, coloque como um vetor. Veja:

Código: Selecionar todos

Declare Campos[4],Titulos[4],Masc[4]  ou do jeito q vc estava fazendo.
Campos := {"DATA","CLIENTES->NOME","CLIENTES->TELEFONE","campo3",....}
Titulos := {"titulo1","titulo2",....}
Dbedit(ls,cs,li,ci,Campos,"PESQUISA",Masc,Titulos)
Assim vc terá uma coluna no dbedit com o nome do cliente, junto com os campos do Contas a Receber, particularmente eu acho bem melhor.

Espero ter ajudado, dúvidas entre em contato.

[ ]s
Clash
Editado pela última vez por Pablo César em 11 Abr 2012 20:26, em um total de 2 vezes.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Avatar do usuário
Clash
Usuário Nível 2
Usuário Nível 2
Mensagens: 81
Registrado em: 11 Set 2004 11:14
Localização: Divinópolis (MG)

Correção!

Mensagem por Clash »

Olá Marcos!

Só acrescentando uma correção no código que te passei. O Comando SET RELATION:
Set Relation to COD_CLIE into CLIENTES

Falou Kra!

[ ]s
Clash
Avatar do usuário
Marcos
Usuário Nível 3
Usuário Nível 3
Mensagens: 355
Registrado em: 20 Set 2003 09:16
Localização: Cáceres/Mato Grosso

Vou Testar.

Mensagem por Marcos »

Clash obrigado pela ajuda, vou testar a sugestão...
Marcos
Responder