problema de registros em branco no dbf.
Moderador: Moderadores
problema de registros em branco no dbf.
ola amigos.
estou tendo um problema e não estou conseguindo detectar a fonte ou o porque, no meu arquivo dbf de produtos esta gerando uns registro em branco e eu to fazendo a deleteção desses resgistros em brando mas ai o cliente vai pesquisar os produtos fica uma lentidão só.
algume tem alguma idéia do que será que esta fazendo isso, possiveis causas.
ha e os indices são CDX
atenciosamente
robson
estou tendo um problema e não estou conseguindo detectar a fonte ou o porque, no meu arquivo dbf de produtos esta gerando uns registro em branco e eu to fazendo a deleteção desses resgistros em brando mas ai o cliente vai pesquisar os produtos fica uma lentidão só.
algume tem alguma idéia do que será que esta fazendo isso, possiveis causas.
ha e os indices são CDX
atenciosamente
robson
S COM INFORMÁTICA
CLIPPER 5.3 / FIVEWIN 2.0 / BLINKER 7
XHARBOUR/ BCC582
CLIPPER 5.3 / FIVEWIN 2.0 / BLINKER 7
XHARBOUR/ BCC582
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Oi Robson,
Eu assim sem poder ver nada... fica dificil de diagnosticar. Mas com certeza ABSOLUTA, que seu problema está num APPEND BLANK, é programação, meu caro. Não tem outra. Deves estar posicionando na area errada, deve estar fazendo algum looping duplo ou até desistência de inclusão que USUÁRIO... já viu , né ?.
Lamento, não poder ser mais analítico, mas em resumida é isso. Debuga seu código e faça alguma tentativas de inclusão MALUCAS...
Boa sorte !
Eu assim sem poder ver nada... fica dificil de diagnosticar. Mas com certeza ABSOLUTA, que seu problema está num APPEND BLANK, é programação, meu caro. Não tem outra. Deves estar posicionando na area errada, deve estar fazendo algum looping duplo ou até desistência de inclusão que USUÁRIO... já viu , né ?.
Lamento, não poder ser mais analítico, mas em resumida é isso. Debuga seu código e faça alguma tentativas de inclusão MALUCAS...
Boa sorte !
REGISTRO EM BRANCO
Olá Robson!
Meu caro, já passei por isso também. Rapaz!! como sofri heim !!!
Bem, vc sabe que um registro em branco no final do BD é normal né?!!!
O que não é normal é um monte de registros em branco.
Faça uma boa crítica na inclusão de dados. Só permita códigos >= 1.
E quando o usuário desitir da inclusão no meio da caminho, não deixe que o programa grave. Cancele a inclusão, feche o BD e saia.
Tente isso primeiro... Com certeza terá mais informações dos amigos aquí do Fórum.
[]´s
Netavin.
Meu caro, já passei por isso também. Rapaz!! como sofri heim !!!
Bem, vc sabe que um registro em branco no final do BD é normal né?!!!
O que não é normal é um monte de registros em branco.
Faça uma boa crítica na inclusão de dados. Só permita códigos >= 1.
E quando o usuário desitir da inclusão no meio da caminho, não deixe que o programa grave. Cancele a inclusão, feche o BD e saia.
Tente isso primeiro... Com certeza terá mais informações dos amigos aquí do Fórum.
[]´s
Netavin.
TK90 / TK95 / APPLE IIe / 286 / 386 / 486 / 586 / AMD Atlhon
" Sem saber que era impossível, foi lá e fez !! "
" Sem saber que era impossível, foi lá e fez !! "
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
scom:
Posta o codigo pra nos dar uma olhada !!!
Netavin:
Abraços
Leonardo Machado
Posta o codigo pra nos dar uma olhada !!!
Netavin:
Tche, até onde eu sei isso não é normal não !!Meu caro, já passei por isso também. Rapaz!! como sofri heim !!!
Bem, vc sabe que um registro em branco no final do BD é normal né?!!!
Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
Registro em branco
...Rapaz será que todo esse tempo me ensinaram errado??? Senão vejamos:
APPEND BLANK
Propósito: Criar (inserir) um registro em branco no banco de dados aberto na área corrente de trabalho.
Sintaxe: APPEND BLANK
Alguém poderia me inofrmar corrtamente ?
Um abraço a todos.
Netavin.
APPEND BLANK
Propósito: Criar (inserir) um registro em branco no banco de dados aberto na área corrente de trabalho.
Sintaxe: APPEND BLANK
Alguém poderia me inofrmar corrtamente ?
Um abraço a todos.
Netavin.
TK90 / TK95 / APPLE IIe / 286 / 386 / 486 / 586 / AMD Atlhon
" Sem saber que era impossível, foi lá e fez !! "
" Sem saber que era impossível, foi lá e fez !! "
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Teria que ser avaliado o procedimento de inclusão. E tenho visto procedimentos em que chama... e chama tantas funções no meio do caminho entre EDIÇÃO de variáveis, CONFIRMAR inclusão e REPASSAR no arquivo as variáveis. Por isso, eu faço os REPLACEs logo dentro do IF que pergunta: "Confirma inclusão ?"...
Robson, utilize ulgum utilitário que dê para varrer todos seus PRGs dentro daquela pasta do seu sistema, peça para localizar todos os APPEND BLANK, e analize um por um. Eu utilizo o FILEFIND do Norton.
Um clip-abraço :)Pos
Robson, utilize ulgum utilitário que dê para varrer todos seus PRGs dentro daquela pasta do seu sistema, peça para localizar todos os APPEND BLANK, e analize um por um. Eu utilizo o FILEFIND do Norton.
Um clip-abraço :)Pos
- Augusto
- Usuário Nível 3

- Mensagens: 473
- Registrado em: 26 Ago 2003 17:50
- Localização: Maricá/RJ
- Contato:
Pessoal...
Eu li rapidamente o tópico e seus posts...
O que a minha experiência diz é que o que está levando a inclusão de registros "em branco" no DB é que o colega "talvez" esteja dando o APPEND BLANK no início do processo de inclusão, ou seja, antes de dar os GETS etc... e aí se no meio desse caminho o usuário desiste e sai da rotina por algum motivo... o registro já foi criado e óbviamente "em branco"...
Sendo assim... inverta a lógica da rotina... Primeiro faça os GETS e suas devidas críticas... depois, por último, de preferencia após uma rotina de "confirmação" dos dados (GETs), faça a inclusão com o APPEND BLANK e seus devidos REPLACES terminando assim a rotina.
Me desculpe parceiro... mais essa afirmativa não procede... é falsa. Reveja seus conceitos !!Netavin escreveu:Bem, vc sabe que um registro em branco no final do BD é normal né?!!!
Eu li rapidamente o tópico e seus posts...
O que a minha experiência diz é que o que está levando a inclusão de registros "em branco" no DB é que o colega "talvez" esteja dando o APPEND BLANK no início do processo de inclusão, ou seja, antes de dar os GETS etc... e aí se no meio desse caminho o usuário desiste e sai da rotina por algum motivo... o registro já foi criado e óbviamente "em branco"...
Sendo assim... inverta a lógica da rotina... Primeiro faça os GETS e suas devidas críticas... depois, por último, de preferencia após uma rotina de "confirmação" dos dados (GETs), faça a inclusão com o APPEND BLANK e seus devidos REPLACES terminando assim a rotina.
:xau Fui...
goulart@provsul.com.br
Faça da PROVSUL o seu Provedor de Serviços WEB
Visite: www.PROVSUL.com.br
goulart@provsul.com.br
Faça da PROVSUL o seu Provedor de Serviços WEB
Visite: www.PROVSUL.com.br
REgistro vazio
... Isso aí Augusto. Esse é o procedimento que uso.
Mas se o colega postasse sua rotina de inclusão, certamente poderíamos ajudá-lo de maneira certa e sem suposições. Não e verdade.
Então SCOM, se postar seu código...
[]´s
Neetavin
Mas se o colega postasse sua rotina de inclusão, certamente poderíamos ajudá-lo de maneira certa e sem suposições. Não e verdade.
Então SCOM, se postar seu código...
[]´s
Neetavin
TK90 / TK95 / APPLE IIe / 286 / 386 / 486 / 586 / AMD Atlhon
" Sem saber que era impossível, foi lá e fez !! "
" Sem saber que era impossível, foi lá e fez !! "
caros colegas...temo que não é por causa de append blank
então amigos....
eu temo que não seja por causa de append blank porque só faço isso no cadastro do produto.
ou seja, trabalho com variaveis de memória e o cliente vai preenchendo e quando termina ai pergunto se ele confirma a gravação dos dados ai sim dou append blank e jogo os dados....mas sempre apos a confirmação ou seja não tem como ele cancelar e o registro em branco ficar, porque só dou append blank após a confirmação.
Mais ou menos assim:
DESC = SPACE(45)
MARC = SPACE(10)
APLI = SPACE(100)
@ 02,03 say 'Descrição:' GET DESC
@ 03,03 say 'Marca: ' GET MARC
@ 04,03 say 'Aplicação:' GET APLI
READ
IF LASTKEY()<>27
CONFSN() //Função que faz a pergunta de Confirmação
IF CONF='S'
APPEND BLANK
IF REG_LOCK() FUNÇÃO PARA TRAVAR O REGISTRO
REPLACE A_DESC WITH DESC,;
A_MARC WITH MARC,;
A_APLI WITH APLI
ENDIF
ENDIF
ENDIF
Esse é um exemplo de como eu faço para gravar.
MAS MUITO OBRIGADO A TODOS...E VOU PROCURAR MO MEU FONTES O SE TEM EM OUTRO LUGAR UM APPEND SEI LA....VOU VER SE ACHO.
Atenciosamente
ROBSON
eu temo que não seja por causa de append blank porque só faço isso no cadastro do produto.
ou seja, trabalho com variaveis de memória e o cliente vai preenchendo e quando termina ai pergunto se ele confirma a gravação dos dados ai sim dou append blank e jogo os dados....mas sempre apos a confirmação ou seja não tem como ele cancelar e o registro em branco ficar, porque só dou append blank após a confirmação.
Mais ou menos assim:
DESC = SPACE(45)
MARC = SPACE(10)
APLI = SPACE(100)
@ 02,03 say 'Descrição:' GET DESC
@ 03,03 say 'Marca: ' GET MARC
@ 04,03 say 'Aplicação:' GET APLI
READ
IF LASTKEY()<>27
CONFSN() //Função que faz a pergunta de Confirmação
IF CONF='S'
APPEND BLANK
IF REG_LOCK() FUNÇÃO PARA TRAVAR O REGISTRO
REPLACE A_DESC WITH DESC,;
A_MARC WITH MARC,;
A_APLI WITH APLI
ENDIF
ENDIF
ENDIF
Esse é um exemplo de como eu faço para gravar.
MAS MUITO OBRIGADO A TODOS...E VOU PROCURAR MO MEU FONTES O SE TEM EM OUTRO LUGAR UM APPEND SEI LA....VOU VER SE ACHO.
Atenciosamente
ROBSON
S COM INFORMÁTICA
CLIPPER 5.3 / FIVEWIN 2.0 / BLINKER 7
XHARBOUR/ BCC582
CLIPPER 5.3 / FIVEWIN 2.0 / BLINKER 7
XHARBOUR/ BCC582
- Augusto
- Usuário Nível 3

- Mensagens: 473
- Registrado em: 26 Ago 2003 17:50
- Localização: Maricá/RJ
- Contato:
Re: caros colegas...temo que não é por causa de append blank
O seu erro está aí... Perceba que o APPEND BLANK está "fora" do IF que bloqueia o registro.scom escreveu:IF CONF='S'
APPEND BLANK
IF REG_LOCK() FUNÇÃO PARA TRAVAR O REGISTRO
Caso a condição desse IF não seja satisfeita vc "já incluiu o registro em branco" e não gravou nada... entendeu ??
Veja como eu fiz e teste.
Código: Selecionar todos
DO WHILE .T.
DESC = SPACE(45)
MARC = SPACE(10)
APLI = SPACE(100)
@ 02,03 say 'Descrição:' GET DESC
@ 03,03 say 'Marca: ' GET MARC
@ 04,03 say 'Aplicação:' GET APLI
READ
IF LASTKEY()=27
EXIT
ENDIF
CONFSN()
IF CONF='S'
IF REG_LOCK()
APPEND BLANK
REPLACE A_DESC WITH DESC, A_MARC WITH MARC, A_APLI WITH APLI
ENDIF
ELSE
LOOP
ENDIF
ENDDO:xau Fui...
goulart@provsul.com.br
Faça da PROVSUL o seu Provedor de Serviços WEB
Visite: www.PROVSUL.com.br
goulart@provsul.com.br
Faça da PROVSUL o seu Provedor de Serviços WEB
Visite: www.PROVSUL.com.br
mas será?
o augusto...muito obrigado.
mas será? perceba que estou travando o registro em branco, do jeito que vc me passou eu vou travar o que? o bando todo? porque pela minha logica eu gero o registro em branco travo gravo os dados e destravo.
mas vou verificar e testar..
obrigado.
atenciosamente
robson
mas será? perceba que estou travando o registro em branco, do jeito que vc me passou eu vou travar o que? o bando todo? porque pela minha logica eu gero o registro em branco travo gravo os dados e destravo.
mas vou verificar e testar..
obrigado.
atenciosamente
robson
S COM INFORMÁTICA
CLIPPER 5.3 / FIVEWIN 2.0 / BLINKER 7
XHARBOUR/ BCC582
CLIPPER 5.3 / FIVEWIN 2.0 / BLINKER 7
XHARBOUR/ BCC582
- Augusto
- Usuário Nível 3

- Mensagens: 473
- Registrado em: 26 Ago 2003 17:50
- Localização: Maricá/RJ
- Contato:
Desculpe... falha minha...
Em uma INCLUSÃO travamos o ARQUIVO e não o registro pois o mesmo ainda não existe...
Altere sua função REG_LOCK() para uma que seja ARQ_LOCK() por exemplo...
Em uma INCLUSÃO travamos o ARQUIVO e não o registro pois o mesmo ainda não existe...
Altere sua função REG_LOCK() para uma que seja ARQ_LOCK() por exemplo...
:xau Fui...
goulart@provsul.com.br
Faça da PROVSUL o seu Provedor de Serviços WEB
Visite: www.PROVSUL.com.br
goulart@provsul.com.br
Faça da PROVSUL o seu Provedor de Serviços WEB
Visite: www.PROVSUL.com.br
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Tche, tb. acho que é isso que o Augusto falou.....alias tenho quase certeza.....vc não prescissa bloquear um registro em branco...a função do APPEND BLANK por si jah bloqueia o registro....de uma olhada no link abaixo:
http://www.caclipperwebsite.com/howto/topico01.htm
Abraços
Leonardo Machado
http://www.caclipperwebsite.com/howto/topico01.htm
Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
-
MARCELOG
- Usuário Nível 4

- Mensagens: 546
- Registrado em: 15 Mar 2005 16:54
- Localização: Divinópolis/MG
Pessoal,
o APPEND BLANK cria o registro em branco, move o foco para ele e, automaticamente trava o mesmo.
A sua rotina está tentando bloquear um registro qye já está bloqueado, por isso tá falhando.
Coloque no lugar do seu reg_lock() a função NetErr() negativa.
No final, dê um commit e desbloquei o registro.
..
IF LASTKEY()<>27
CONFSN() //Função que faz a pergunta de Confirmação
IF CONF='S'
APPEND BLANK
IF !NetErr()
REPLACE A_DESC WITH DESC,;
A_MARC WITH MARC,;
A_APLI WITH APLI
Commit
Unlock
ENDIF
ENDIF
ENDIF
o APPEND BLANK cria o registro em branco, move o foco para ele e, automaticamente trava o mesmo.
A sua rotina está tentando bloquear um registro qye já está bloqueado, por isso tá falhando.
Coloque no lugar do seu reg_lock() a função NetErr() negativa.
No final, dê um commit e desbloquei o registro.
..
IF LASTKEY()<>27
CONFSN() //Função que faz a pergunta de Confirmação
IF CONF='S'
APPEND BLANK
IF !NetErr()
REPLACE A_DESC WITH DESC,;
A_MARC WITH MARC,;
A_APLI WITH APLI
Commit
Unlock
ENDIF
ENDIF
ENDIF