Dai dalera, eu mais uma vez aqui. hehehe. ..precisava de uma dica de como posso criar um Dbedit(), no meu caso preciso que ele abra o dbf LANGRA.DBF, que tem os campos:
t01
t02
t03
t04
t05
t06
t07
t08
Precisaria que o dbedit abrisse esse arquivo e o ponteiro ficasse no ultimo registro, e que eu pudesse alterar e inserir novos dados no dbf através dele. é dificil? Alguém pode me passar algum exemplo? Tentei fazer alguma coisa aqui mas sempre da erro, peguei alguns exemplo ja existentes no forum, mas não consegui adapta-los, por isso estou sendo mais especifico aqui. Vlw ai mais uma vez se alguem tiver alguma dica... -:]
Dica Dbedit()
Moderador: Moderadores
-
MARCELOG
- Usuário Nível 4

- Mensagens: 546
- Registrado em: 15 Mar 2005 16:54
- Localização: Divinópolis/MG
Caro Júnior,
escreva e compile/link o seguinte:
ver()
Function ver()
Use Langra.DBF
DbGoBottom()
Browse()
Return
É certo que, tal qual pessoas que gostam de Clipper, VB, etc., você também deve gostar da função DbEdit().
Infelizmente, usando a mesma, eu não sei te ajudar.
Mas sei que, embora DbEdit() resolva a maioria das situações para exibição do conteúdo de arquivos, ela não é 100%.
Foi o que eu li e, por isso, preocupei-me com a classe criada para sua substituição - TBROWSE.
Dê uma olhada na pasta source do Clipper.
Lá você encontrará exemplos para inserir, visualizar/ editar e deletar dados com tbrowse.
Pegue o exemplo n. 1, compreenda o funcionamento e, com o tempo vá aprimorando e verificando ou outros exemplos - o quê mudou? quais variáveis ? quais valores? etc. (um passo de cada vez).
Há coisas fantásticas que você pode fazer com este recurso.
Espero ter ajudado.
MGS
PS: atenção - comece simples, somente assim você vai entender o funcionamento e aplicar o recurso máximo.
escreva e compile/link o seguinte:
ver()
Function ver()
Use Langra.DBF
DbGoBottom()
Browse()
Return
É certo que, tal qual pessoas que gostam de Clipper, VB, etc., você também deve gostar da função DbEdit().
Infelizmente, usando a mesma, eu não sei te ajudar.
Mas sei que, embora DbEdit() resolva a maioria das situações para exibição do conteúdo de arquivos, ela não é 100%.
Foi o que eu li e, por isso, preocupei-me com a classe criada para sua substituição - TBROWSE.
Dê uma olhada na pasta source do Clipper.
Lá você encontrará exemplos para inserir, visualizar/ editar e deletar dados com tbrowse.
Pegue o exemplo n. 1, compreenda o funcionamento e, com o tempo vá aprimorando e verificando ou outros exemplos - o quê mudou? quais variáveis ? quais valores? etc. (um passo de cada vez).
Há coisas fantásticas que você pode fazer com este recurso.
Espero ter ajudado.
MGS
PS: atenção - comece simples, somente assim você vai entender o funcionamento e aplicar o recurso máximo.
:)
poiseh, mas desta forma com o tbrowse tb me ajudou, ja consegui fazer o que eu queria, muito obrigado pela dica. 
Duvida
poiseh, agora pintou uma duvida, neste meu DBF tenho os campos codref,codmat, t01,t02,t03... t14
Como faço para no lugar de codref aparecer REFETENCIA, no lugar de codmat, MATERIAL, e no lugar dos t01...t14 33,34,35,36 e assim por diante, no caso precisaria de uma mascara para o nome dos campos. Eu iria apenas mudar o nome dos campos no DBF conforme minha necessidade, mas o problema é que tenho um dbf secundario que faz o cadastro desses t01 até t14, que são os tamanhos, no caso estes tamanhos tem suas variaveis. Tem jeito pra fazer isto? VLW
Como faço para no lugar de codref aparecer REFETENCIA, no lugar de codmat, MATERIAL, e no lugar dos t01...t14 33,34,35,36 e assim por diante, no caso precisaria de uma mascara para o nome dos campos. Eu iria apenas mudar o nome dos campos no DBF conforme minha necessidade, mas o problema é que tenho um dbf secundario que faz o cadastro desses t01 até t14, que são os tamanhos, no caso estes tamanhos tem suas variaveis. Tem jeito pra fazer isto? VLW
Sem opção
como não tive mais nenhuma ideia, e achando esta conveniente, resolvi criar este dbf em modo de execução, sendo que ele é zerado a cada inserção, por isso fiz o seguinte:
sele gra
seek str(xcodgra,2)
xt01=t01
xt02=t02
xt03=t03
xt04=t04
xt05=t05
xt06=t06
xt07=t07
xt08=t08
xt09=t09
xt10=t10
xt11=t11
xt12=t12
xt13=t13
xt14=t14
sele 0
adbf={}
aadd(adbf, {"Ref", "C", 8, 0})
aadd(adbf, {"Mat", "C",30, 0})
aadd(adbf, {"Cor", "C",30, 0})
aadd(adbf, {"Ean", "C",12, 0})
aadd(adbf, {"Figura", "C",8, 0})
aadd(adbf, {"Obs", "C",20, 0})
if !empty(xt01)
aadd(adbf, {xt01, "C",4, 0})
endif
if !empty(xt02)
aadd(adbf, {xt02, "C",4, 0})
endif
if !empty(xt03)
aadd(adbf, {xt03, "C",4, 0})
endif
if !empty(xt04)
aadd(adbf, {xt04, "C",4, 0})
endif
if !empty(xt05)
aadd(adbf, {xt05, "C",4, 0})
endif
if !empty(xt06)
aadd(adbf, {xt06, "C",4, 0})
endif
if !empty(xt07)
aadd(adbf, {xt07, "C",4, 0})
endif
if !empty(xt08)
aadd(adbf, {xt08, "C",4, 0})
endif
if !empty(xt09)
aadd(adbf, {xt09, "C",4, 0})
endif
if !empty(xt10)
aadd(adbf, {xt10, "C",4, 0})
endif
if !empty(xt11)
aadd(adbf, {xt11, "C",4, 0})
endif
if !empty(xt12)
aadd(adbf, {xt12, "C",4, 0})
endif
if !empty(xt13)
aadd(adbf, {xt13, "C",4, 0})
endif
if !empty(xt14)
aadd(adbf, {xt014, "C",4, 0})
endif
//
dbcreate("estru",adbf)
neste caso ele cria o arquivo dbf da exata forma de que necessito, o problema é que quando eu executo ele via DBU, alguns campos da pra digitar normalmente, e outro, quando eu tento digitar qualquer coisa, aparece a seguinte mensagem de erro:
No exported Method: Eval
Se eu conseguir resolver apenas isto, ja vai funcionar como eu preciso, que depois eu dou um browse, e aparece ele com os nomes dos campos exatos, variando para cada CODGRA. Se alguem souber como posso resolver este erro.
sele gra
seek str(xcodgra,2)
xt01=t01
xt02=t02
xt03=t03
xt04=t04
xt05=t05
xt06=t06
xt07=t07
xt08=t08
xt09=t09
xt10=t10
xt11=t11
xt12=t12
xt13=t13
xt14=t14
sele 0
adbf={}
aadd(adbf, {"Ref", "C", 8, 0})
aadd(adbf, {"Mat", "C",30, 0})
aadd(adbf, {"Cor", "C",30, 0})
aadd(adbf, {"Ean", "C",12, 0})
aadd(adbf, {"Figura", "C",8, 0})
aadd(adbf, {"Obs", "C",20, 0})
if !empty(xt01)
aadd(adbf, {xt01, "C",4, 0})
endif
if !empty(xt02)
aadd(adbf, {xt02, "C",4, 0})
endif
if !empty(xt03)
aadd(adbf, {xt03, "C",4, 0})
endif
if !empty(xt04)
aadd(adbf, {xt04, "C",4, 0})
endif
if !empty(xt05)
aadd(adbf, {xt05, "C",4, 0})
endif
if !empty(xt06)
aadd(adbf, {xt06, "C",4, 0})
endif
if !empty(xt07)
aadd(adbf, {xt07, "C",4, 0})
endif
if !empty(xt08)
aadd(adbf, {xt08, "C",4, 0})
endif
if !empty(xt09)
aadd(adbf, {xt09, "C",4, 0})
endif
if !empty(xt10)
aadd(adbf, {xt10, "C",4, 0})
endif
if !empty(xt11)
aadd(adbf, {xt11, "C",4, 0})
endif
if !empty(xt12)
aadd(adbf, {xt12, "C",4, 0})
endif
if !empty(xt13)
aadd(adbf, {xt13, "C",4, 0})
endif
if !empty(xt14)
aadd(adbf, {xt014, "C",4, 0})
endif
//
dbcreate("estru",adbf)
neste caso ele cria o arquivo dbf da exata forma de que necessito, o problema é que quando eu executo ele via DBU, alguns campos da pra digitar normalmente, e outro, quando eu tento digitar qualquer coisa, aparece a seguinte mensagem de erro:
No exported Method: Eval
Se eu conseguir resolver apenas isto, ja vai funcionar como eu preciso, que depois eu dou um browse, e aparece ele com os nomes dos campos exatos, variando para cada CODGRA. Se alguem souber como posso resolver este erro.
-
Stanis Luksys
- Colaborador

- Mensagens: 1329
- Registrado em: 18 Jun 2005 03:04
- Localização: São Paulo
- Contato:
Ola amigo, quanto a alterar o conteudo direto no dbEdit() é simples:
Na funcao que controla o dbEdit:
É mais ou menos por aí, agora é só uma questão de incrementar, fazer validações e etc.
Para poder também incluir registros no estilo DBU, basta testar o pressionamente da tecla seta pra baixo, dar um append, posicionar corretamente linha e cursor (se necessario usar scroll pra dar a a sencacao de rolagem) e utilizar o tradicional replace para gravar no arquivo.
Na funcao que controla o dbEdit:
Código: Selecionar todos
function Exemplo
parameters mode, counter // aqui vc pega mode de operação e a coluna corrente
do case // testa o modo, aqui vou ao que interessa
.....
case mode = 4
if lastkey() = K_ENTER
Campo := FieldName(Counter)
@ Row(), Col() get &Campo // usando macro pra incluir direto no campo
set cursor on
read
set cursor off
endif
.........
endcase
Para poder também incluir registros no estilo DBU, basta testar o pressionamente da tecla seta pra baixo, dar um append, posicionar corretamente linha e cursor (se necessario usar scroll pra dar a a sencacao de rolagem) e utilizar o tradicional replace para gravar no arquivo.
Stanis Luksys
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
