DBF incremental não mostra o registro ...

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

arcanjoebc
Usuário Nível 2
Usuário Nível 2
Mensagens: 63
Registrado em: 23 Dez 2015 23:58
Localização: Tramandaí/RS

DBF incremental não mostra o registro ...

Mensagem por arcanjoebc »

Amigos do fórum, estou elaborando um sistema de videolocadora e estou encontrando uma dificuldade. Na hora de inserir o cliente, ou seja, o segundo cliente, deveria aparecer o número do próximo registro, porém, isso não acontece e eu não sei o porquê disso, alguém aqui pode me ajudar. Abaixo coloco a rotina de inclusão dos clientes, sendo que os índices são CDX, com numeração automática:

Código: Selecionar todos

use clientes
OrdSetFocus("indcodcli")

PUBLIC MEM_COD, MEM_NOME, MEM_NASC, MEM_SEXO, MEM_ENDE
PUBLIC MEM_NUM, MEM_BAIRRO, MEM_CID, MEM_CEP, MEM_FONE
PUBLIC MEM_CPF, MEM_PROF, MEM_EC, MEM_PROF, MEM_EMAIL
PUBLIC MEM_OBS, MEM_UF, CONFIRMA

DO WHILE .T.
  CLEAR
  @ 00,00 TO 33,149 DOUBLE
  @ 02,63 SAY "INCLUSAO DE NOVOS CLIENTES"
  @ 04,03 SAY "COD.:"
  @ 06,03 SAY "NOME:"
  @ 08,03 SAY "DATA NASC   /  /     SEXO:   ESTADO CIVIL:"
  @ 10,03 SAY "ENDERECO:                                          NUM.:"
  @ 12,03 SAY "BAIRRO:                               CEP:"
  @ 14,03 SAY "CIDADE:                                        UF:"
  @ 16,03 SAY "TELEFONE: (  )     -      CPF:    .   .   -  "
  @ 18,03 SAY "PROFISSAO:"
  @ 20,03 SAY "E-MAIL:"
  @ 22,03 SAY "OBS.:"
  @ 24,03 SAY "CONFIRMA? (S/N) "
  MEM_COD   = 0000
  MEM_NOME  = SPACE(30)
  MEM_NASC  = CTOD("  /  /  ")
  MEM_SEXO  = SPACE(01)
  MEM_EC    = SPACE(01)
  MEM_ENDE  = SPACE(35)
  MEM_NUM   = SPACE(10)
  MEM_BAIRRO = SPACE(20)
  MEM_CID   = SPACE(35)
  MEM_UF    = SPACE(02)
  MEM_CEP   = SPACE(10)
  MEM_FONE  = SPACE(14)
  MEM_CPF   = SPACE(14)
  MEM_PROF  = SPACE(20)
  MEM_EMAIL = SPACE(50)
  MEM_OBS   = SPACE(50)
  CONFIRMA  = SPACE(01)
  @ 04,13 SAY MEM_COD PICT "99999"
  @ 06,13 SAY MEM_NOME PICT "@!35"
  @ 08,13 SAY MEM_NASC PICT "  /  /    "
  @ 08,30 SAY MEM_SEXO PICT "!"
  @ 08,47 SAY MEM_EC PICT "!"
  @ 10,13 SAY MEM_ENDE PICT "@!35"
  @ 10,60 SAY MEM_NUM PICT "9999999999"
  @ 12,13 SAY MEM_BAIRRO PICT "@!20"
  @ 12,47 SAY MEM_CEP PICT "99.999-999"
  @ 14,13 SAY MEM_CID PICT "@!35"
  @ 14,56 SAY MEM_UF PICT "!!"
  @ 16,13 SAY MEM_FONE PICT "(99)99999-9999"
  @ 16,34 SAY MEM_CPF PICT "999.999.999-99"
  @ 18,13 SAY MEM_PROF PICT "@!20"
  @ 20,13 SAY MEM_EMAIL PICT "@!50"
  @ 22,13 SAY MEM_OBS  PICT "@!50"
  @ 24,19 SAY CONFIRMA PICT "!"
  @ 04,13 GET MEM_COD PICT "99999"
  READ
  IF MEM_COD = 00000
    EXIT
  ENDIF
  LOCATE FOR COD = MEM_COD
  IF FOUND()
    ENTER=SPACE(01)
    @ 24,03 SAY "CLIENTE JAH CADASTRADO <ENTER> " GET ENTER
    READ
    @ 24,03 SAY "                               "
    LOOP
  ENDIF
  @ 04,13 GET MEM_COD PICT "99999"
  @ 06,13 GET MEM_NOME PICT "@!35"
  @ 08,13 GET MEM_NASC PICT "  /  /    "
  @ 08,30 GET MEM_SEXO PICT "!"
  @ 08,47 GET MEM_EC PICT "!"
  @ 10,13 GET MEM_ENDE PICT "@!35"
  @ 10,60 GET MEM_NUM PICT "9999999999"
  @ 12,13 GET MEM_BAIRRO PICT "@!20"
  @ 12,47 GET MEM_CEP PICT "99.999-999"
  @ 14,13 GET MEM_CID PICT "@!35"
  @ 14,56 GET MEM_UF PICT "!!"
  @ 16,13 GET MEM_FONE PICT "(99)99999-9999"
  @ 16,34 GET MEM_CPF PICT "999.999.999-99"
  @ 18,13 GET MEM_PROF PICT "@!20"
  @ 20,13 GET MEM_EMAIL PICT "@!50"
  @ 22,13 GET MEM_OBS  PICT "@!50"
  @ 24,19 GET CONFIRMA PICT "!" 
  READ
  IF CONFIRMA = "S"
    APPEND BLANK
    REPLACE COD    WITH MEM_COD
    REPLACE NOME   WITH MEM_NOME
    REPLACE NASC   WITH MEM_NASC
    REPLACE SEXO   WITH MEM_SEXO
    REPLACE EC     WITH MEM_EC
    REPLACE ENDE   WITH MEM_ENDE
    REPLACE NUM    WITH MEM_NUM
    REPLACE BAIRRO WITH MEM_BAIRRO
    REPLACE CEP    WITH MEM_CEP
    REPLACE CID    WITH MEM_CID
    REPLACE UF     WITH MEM_UF
    REPLACE FONE   WITH MEM_FONE
    REPLACE CPF    WITH MEM_CPF
    REPLACE PROF   WITH MEM_PROF
    REPLACE EMAIL  WITH MEM_EMAIL
    REPLACE OBS    WITH MEM_OBS
  ENDIF
ENDDO
CLOSE ALL
RETURN
 
Desde já, sou-lhes grato por qualquer ajuda futura! Tudo de bom!

Everaldo
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

DBF incremental não mostra o registro ...

Mensagem por alxsts »

Olá!

Como está sendo criado o teu DBF? Manualmente? Via código? Qual é o campo chave (auto increment)? Poste o código.
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

DBF incremental não mostra o registro ...

Mensagem por Toledo »

Na linha 24, onde está:

Código: Selecionar todos

MEM_COD   = 0000
Troque por:

Código: Selecionar todos

GO BOTTOM
MEM_COD   = (COD+1)
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

DBF incremental não mostra o registro ...

Mensagem por alxsts »

Olá!

Gostaria de ver como foi a criação da tabela... se o tipo de campo realmente foi definido como auto incremento (+) o Harbour gerencia automaticamente a numeração. Não é possível atribuir valor (replace) a um campo auto incremento. O controle é automático. Isto é padrão em todos os bancos de dados, daí o nome AUTO incremento.

Veja este tópico, onde consta um exemplo de código para criar e popular uma tabela com campo auto incremento.

autoincrementocoluna
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

DBF incremental não mostra o registro ...

Mensagem por JoséQuintas »

alxsts escreveu:Não é possível atribuir valor (replace) a um campo auto incremento. O controle é automático. Isto é padrão em todos os bancos de dados, daí o nome AUTO incremento.
Você está errado, é normal atribuir valor, apenas é opcional.

Imagine um backup/restore do banco de dados... ele precisa aceitar o conteúdo anterior.
Faça o teste no MySQL e vai ver que é normal.
Ou como seria no DBF um COPY TO... se o conteúdo não puder ser gravado no destino.

Mas... se não atribuir valor, será usado o automático.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder