Página 1 de 1

Incluindo/Alterando "Tudo ao mesmo tempo"

Enviado: 18 Out 2006 17:32
por CCA
Olá amigos,

To com um probleminha, que não estou conseguindo resolver.
Preciso, fazer um cadastro de clientes, e qdo estiver incluindo o sistema mostrar se já esta ou não cadastrado. E se estiver, cadastrado ele devera fazer o cadastro deste cliente, já com novo codigo. Tudo em REDE.

To tentando, mas não esta avisando...

Cadastro de Clientes
- CODIGO
- NOME
- DATA NASCIMENTO
- TELEFONE

Fico grato!!!

Enviado: 18 Out 2006 17:55
por gvc
Creio não ter entendido direito o que vc quer fazer, mas vamos tentar.

- Fazer a pesquisa no cadastro de clientes e localizar o registro solicitado;
- Copiar os dados usando um array para conter os dados atuais;
- Abrir um novo registro no mesmo arquivo;
- Alterar o código no array;
- Gravar o array no arquivo.

Só não entendi essa de ter o cadastro do cliente e cadastra-lo novamente com código diferente.
Se vc esta querendo só atualizar o código, vc corre o perigo de perder os dados relacionados ao cliente.

Se vc explicar melhor, talvez eu possa ajudar mais.
Boa sorte.

Enviado: 19 Out 2006 12:41
por MARCELOG
Crie arquivo com o nome dos campos a serem preenchidos.
Ex: teste.dbf com campos teste1, teste2, teste3

Crie índices para esse arquivo conforme a necessidade.
Ex: teste1.ntx (eu prefiro cdx)

Abra o arquivo no modo compartilhado.

No seu programa, e é apenas uma sugestão, em sua rotina inclusão,
iguale as variáveis de memória com os campos do arquivo.

Use o "registro fantasma" para obter informações válidas

dbgobottom()
dbskip(1)

vteste1:=TESTE->TESTE1
vteste2:=TESTE->TESTE2
vteste3:=TESTE->TESTE3

O usuário preenche as variáveis e "aperta" a tecla que confirma a gravação do registro.

O campo chave é teste1, é por ele que o sistema vai verificar se o registro já está gravado.

Então, se a informação em vteste1 já estiver no banco de dados, as informações não devem ser gravadas.

Assim:

if dbseek(vteste1) //lembre-se o arquivo está indexado (ordenado) por teste1
alter("Registro já foi gravado")
Else
dbappend()
if neterr() //verifica se não houve erro de inclusão
TESTE->TESTE1:=vteste1
TESTE->TESTE2:=vteste2
TESTE->TESTE3:=vteste3
dbcommit() //força gravação
dbunrlock() //libera registro
endif

É mais ou menos isso.

Há exemplos na pasta de downloads.

MarceloG

Ps:para novo código, procure no fórum, utilizando o "buscador" ou veja em www.caclipperwebsite.com
Não é propaganda do site, mas tem coisas muito úteis numa liguagem fácil.
Todavia, sempre frequente este fórum.