Consulta pelo dbedit ou tbrowse
Moderador: Moderadores
-
Antonio Matheus
- Usuário Nível 1

- Mensagens: 28
- Registrado em: 13 Jul 2010 23:18
- Localização: sao caetano dosul
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Re: Consulta pelo dbedit ou tbrowse
Olá!
Se você puder fornecer detalhes adicionais, os mesmos serão muito úteis na criação de uma solução que possa te atender.
Pessoalmente, prefiro utilizar a "classe" TBrowse, por entender que a mesma é mais flexivel que a função DBEdit().
Recomendo que você analise (estude) um programa (TBDemo.Prg) que veio com a instalação padrão do Clipper 5. Se você tiver instalada em sua máquina esta versão, a encontrará na pasta C:\Clipper5\Source\Sample. Se não tiver, poste que te informaremos onde encontrar.
Se você puder fornecer detalhes adicionais, os mesmos serão muito úteis na criação de uma solução que possa te atender.
Pessoalmente, prefiro utilizar a "classe" TBrowse, por entender que a mesma é mais flexivel que a função DBEdit().
Recomendo que você analise (estude) um programa (TBDemo.Prg) que veio com a instalação padrão do Clipper 5. Se você tiver instalada em sua máquina esta versão, a encontrará na pasta C:\Clipper5\Source\Sample. Se não tiver, poste que te informaremos onde encontrar.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Consulta pelo dbedit ou tbrowse
Isso mesmo, como o colega Alexandre falou: tente dominar o TBROWSE. O DBEDIT tem bem menos poder de recursos. E tanto no DBEDIT como no TBROWSE a pesquisa de registros você poderá fazer da mesma forma que você faz após um @ GET... através de um SEEK ou até mesmo LOCATE. Esses comandos ou funções você implementa dentro da função de controle de navegação tanto no TBROWSE como no DBEDIT.
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
-
Antonio Matheus
- Usuário Nível 1

- Mensagens: 28
- Registrado em: 13 Jul 2010 23:18
- Localização: sao caetano dosul
Re: Consulta pelo dbedit ou tbrowse
Boa noite segue o codigo de consulta que ja tenho
essa rotina e pelo codigo
essa e pelo nome
desde ja agradeco a colaboracao de todos
abraco
essa rotina e pelo codigo
Código: Selecionar todos
CLEAR
@01,00 TO 03,79 DOUBLE
@04,00 TO 23,79 DOUBLE
@06,01 TO 06,78 DOUBLE
@21,01 TO 21,78 DOUBLE
@06,00 SAY CHR(204)
@21,00 SAY CHR(204)
@06,79 SAY CHR(185)
@21,79 SAY CHR(185)
SELECT 1
USE CLIENTE
IF (!FILE("CODIGO.NTX"))
INDEX ON STR(CODIGO,5,0) TO CODIGO
ENDIF
SET INDEX TO CODIGO
DO WHILE .T.
vCodigo:=0
cSai:="N"
@02,25 SAY "[ Consulta por Codigo ]"
@22,63 SAY "< ESC Sair ! >"
@05,01 SAY "Codigo...................:" GET vCodigo PICTURE "99999" VALID(vCodigo>0)
READ
IF LASTKEY()=27
EXIT
ENDIF
GO TOP
SEEK vCodigo
IF FOUND()
@ 07,01 SAY "Nome................:" +NOME
@ 08,01 SAY "Endereco............:" +ENDERECO
@ 09,01 SAY "Complemento.........:" +COMPL
@ 10,01 SAY "Bairro..............:" +BAIRRO
@ 11,01 SAY "Cidade..............:" +CIDADE
@ 12,01 SAY "Telefone............:" +TELEFONE
@ 13,01 SAY "Celular.............:" +CELULAR
@ 14,01 SAY "Telefone Comercial..:" +TELCOM
@ 15,01 SAY "Data de Aniversario.:" +DTOC(ANIVER)
@ 16,01 SAY "Nome Mae............:" +MAE
@ 17,01 SAY "Cep.................:" +CEP
@ 18,01 SAY "Estado..............:" +UF
@ 19,01 SAY "Email...............:" +EMAIL
@ 20,01 SAY "C.p.f...............:" +CPF
@ 20,42 SAY "Rg..................:" +RG
ELSE
ALERT("Codigo Nao Cadastro !")
ENDIF
@ 22,01 SAY "Deseja Sair?...:" GET cSai PICTURE "@!" VALID (cSai $ "SN")
READ
IF cSai= "S"
EXIT
ENDIF
ENDDO
CLEAR
RETURNCódigo: Selecionar todos
CLEAR SCREEN
@01,00 TO 03,79 DOUBLE
@04,00 TO 23,79 DOUBLE
@06,01 TO 06,78 DOUBLE
@21,01 TO 21,78 DOUBLE
@06,00 SAY CHR(204)
@21,00 SAY CHR(204)
@06,79 SAY CHR(185)
@21,79 SAY CHR(185)
SELECT 1
USE CLIENTE
IF (!FILE("CLIENTE.NTX"))
INDEX ON NOME TO CLIENTE
ENDIF
SET INDEX TO CLIENTE
DO WHILE .T.
vNome:=SPACE(50)
cSai= "N"
@02,25 SAY "[ Consulta por Nome ]"
@20,63 SAY "< ESC Sair ! >"
@22,01 SAY "Digite o Nome.:" GET vNome PICTURE "@!"
READ
IF LASTKEY()=27
EXIT
ENDIF
GO TOP
SEEK vNome
IF (FOUND())
@07,01 SAY "Nome..................:" +NOME
@08,01 SAY "Endereco..............:" +ENDERECO
@09,01 SAY "Complemento...........:" +COMPL
@10,01 SAY "Bairro................:" +BAIRRO
@11,01 SAY "Cidade................:" +CIDADE
@12,01 SAY "Telefone..............:" +TELEFONE
@13,01 SAY "Celular...............:" +CELULAR
@14,01 SAY "Telefone comercial....:" +TELCOM
@15,01 SAY "Data Aniversario......:" +DTOC(ANIVER)
@16,01 SAY "Nome Mae..............:" +MAE
@17,01 SAY "Cep...................:" +CEP
@18,01 SAY "Estado................:" +UF
@19,01 SAY "E-mail................:" +EMAIL
@20,01 SAY "C.p.f.................:" +CPF
@18,28 SAY "Rg....................:" +RG
ELSE
ALERT("Nome Nao Cadastrado !")
ENDIF
READ
IF cSai= "S"
EXIT
ENDIF
ENDDO
CLEARabraco
Editado pela última vez por Pablo César em 07 Abr 2011 08:27, 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
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
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Consulta pelo dbedit ou tbrowse
Antonio, vocÊ ja fez o seu TBROWSE ? Senão, faça-o e poste aqui e te ajudarei a implementar a pesquisas como vocÊ solicitou. Sem o TBROWSE não tem como fazer... Sugiro você começar um novo PRG com o TBROWSE.
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Re: Consulta pelo dbedit ou tbrowse
Olá!
Isso mesmo. Crie um novo programa (baseie-se no TBDemo.Prg que mencionei acima).
Crie um TBrowse que será a consulta padrão do teu cadastro, mostrando todos os registros.
Defina teclas para incluir (a tecla INS, por exemplo), excluir(a tecla DEL, por exemplo) e alterar (a tecla ENTER, por exemplo).
Defina uma tecla que acionará a tela de consulta por código ou por nome.
Depois poste o código (não esqueça de colocar entre as tags code) e te ajudaremos a refinar.
Isso mesmo. Crie um novo programa (baseie-se no TBDemo.Prg que mencionei acima).
Crie um TBrowse que será a consulta padrão do teu cadastro, mostrando todos os registros.
Defina teclas para incluir (a tecla INS, por exemplo), excluir(a tecla DEL, por exemplo) e alterar (a tecla ENTER, por exemplo).
Defina uma tecla que acionará a tela de consulta por código ou por nome.
Depois poste o código (não esqueça de colocar entre as tags code) e te ajudaremos a refinar.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
Re: Consulta pelo dbedit ou tbrowse
Um exemplo de Tbrowser bem simples:
Abraços =)
Código: Selecionar todos
***************************************
FUNCTION loc_on()
***************************************
* cChave sera o grupo do item
cor(1)
WHILE .T.
tel22 := SAVESCREEN()
nAprima := .T.
mEugRupa := crd->codigo
* criar tbrowse
oPropri := tbrowsedb (05,28,17,70)
tela(04,27,18,71)
tela(18,27,22,71,'.')
* filtro tbrowse com a func skipwhil()
oProPri:SKIPBLOCK := {|x| SKIPWHIL(x, {||item->cod_grup == cChave})}
oPropri:GOTOPBLOCK := {| | SKIPWHIL((LASTREC()* -1),{||item->cod_grup == cChave})}
oproPri:GOBOTTOMBLOCK := {| | SKIPWHIL((LASTREC()* 1), {||item->cod_grup == cChave})}
* defino colunas do tbrowse
oCol1 := tbcolumnnew(" PRODUTOS CADASTRADOS", {||" ³ " + item->produto + " ³ "})
oProPri:addcolumn(oCol1)
WHILE .T.
WHILE(!oPropri:stabilize())
END
IF nAprima
sset(2)
IF _MODE == 'pItem1'
IF EMPTY(pItem1)
forca_lc()
ELSE
SEEK gPitem + RTRIM(pItem1)
END
ELSEIF _MODE == 'pItem2'
IF EMPTY(pItem2)
forca_lc()
ELSE
SEEK gPitem + RTRIM(pItem2)
END
ELSEIF _MODE == 'pItem3'
IF EMPTY(pItem3)
forca_lc()
ELSE
SEEK gPitem + RTRIM(pItem3)
END
ELSEIF _MODE == 'pItem4'
IF EMPTY(pItem4)
forca_lc()
ELSE
SEEK gPitem + RTRIM(pItem4)
END
END
IF EOF()
forca_lc()
oPropri:refreshall()
KEYBOARD(CHR(47)); KEYBOARD(CHR(47))
END
oPropri:refreshall()
KEYBOARD(CHR(47)); KEYBOARD(CHR(47))
END
@ 19,30 SAY SUBSTR(desc_p1,1,37)
@ 20,30 SAY SUBSTR(desc_p1,38,70)
nTecla := INKEY(0)
DO CASE
CASE ( nTecla == K_ESC )
EXIT
CASE ( nTecla == K_ENTER )
EXIT
CASE ( nTecla == K_DOWN )
oPropri:down ()
CASE ( nTecla == K_UP )
oPropri:up ()
CASE ( nTecla == K_LEFT )
oPropri:left ()
CASE ( nTecla == K_RIGHT )
oPropri:right ()
CASE ( nTecla == K_PGUP )
oPropri:pageup ()
CASE ( nTecla == K_PGDN )
oPropri:pagedown ()
CASE ( nTecla == K_CTRL_PGUP )
oPropri:gotop ()
CASE ( nTecla == K_CTRL_PGDN )
oPropri:gobottom ()
OTHERWISE
*** ENC100B2.PRG
IF nAprima
nAprima := .F.
ELSE
ver_teclado()
END
ENDCASE
oPropri:refreshall()
END
EXIT
END
cor(0)
RESTSCREEN(,,,,tel22); RELEASE tel22
RETURN
***************************************
FUNCTION SKIPWHIL (x,key_val)
***************************************
LOCAL i := 0
IF LASTKEY() == 0
RETURN i
END
IF (x > 0 .AND. RECNO() <> LASTREC()+1)
WHILE (i < x)
SKIP 1
IF EOF() .OR. !(EVAL(key_val))
SKIP -1
EXIT
END
i++
END
ELSEIF (x < 0)
WHILE (i > x)
SKIP -1
IF BOF()
EXIT
END
IF !(EVAL(key_val))
SKIP 1
EXIT
END
i--
END
END
RETURN imixsistemas@gmail.com
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Re: Consulta pelo dbedit ou tbrowse
Olá!
Parabéns pela iniciativa Bonotto. O código está bom. Digo isso apesar de estar lendo apenas um fragmento. Mas, pode ser melhorado.
No exemplo inicial por você fornecido, a tabela alvo da consulta era a de clientes (podemos até deduzir o layout). No exemplo mais recente, a tabela é a de produtos mas só vemos um campo. A função SKIPWHIL() parece ter um filtro...
Em suma, poste mais detalhes:
- layout da tabela, chaves de índice
- campos que devem ser exibidos pelo TBrowse()
- eventuais filtros
- eventuais pesquisas
- se precisa incluir, alterar, excluir...
Parabéns pela iniciativa Bonotto. O código está bom. Digo isso apesar de estar lendo apenas um fragmento. Mas, pode ser melhorado.
No exemplo inicial por você fornecido, a tabela alvo da consulta era a de clientes (podemos até deduzir o layout). No exemplo mais recente, a tabela é a de produtos mas só vemos um campo. A função SKIPWHIL() parece ter um filtro...
Em suma, poste mais detalhes:
- layout da tabela, chaves de índice
- campos que devem ser exibidos pelo TBrowse()
- eventuais filtros
- eventuais pesquisas
- se precisa incluir, alterar, excluir...
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
Consulta pelo dbedit ou tbrowse
Peço mil desculpas pelo tempo em responder, tenho outra profissão que me ocupa um certo tanto de tempo; sou piloto e as vezes fico
afastado.
SKIPWHIL() é um filtro para acessar somente produtos de um certo grupo:
Exemplo:
se o grupo for 0056 (leiteria) só aparecerem itens cadastrados com a chave 0056; seria igual ao SET FILTER do dbedit só que estupidamente mais
rapido.
A partir dai é só setar as teclas na função postada, é possivel fazer tudo relacionado ao banco de dados.
Espero ter ajudado =)
afastado.
SKIPWHIL() é um filtro para acessar somente produtos de um certo grupo:
Exemplo:
se o grupo for 0056 (leiteria) só aparecerem itens cadastrados com a chave 0056; seria igual ao SET FILTER do dbedit só que estupidamente mais
rapido.
A partir dai é só setar as teclas na função postada, é possivel fazer tudo relacionado ao banco de dados.
Espero ter ajudado =)
mixsistemas@gmail.com
