Ajuda,

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

erico.santana
Usuário Nível 1
Usuário Nível 1
Mensagens: 2
Registrado em: 13 Ago 2011 18:34
Localização: Maringa

Ajuda,

Mensagem por erico.santana »

Ola pessoal sou novato na linguagem e no forum, estou tentando fazer algo simples para aprendizado, uma situação e a seguinte tenho um campo character com tamanho 1 ele pode estar preenchido ou nao, quando ele nao estiver preenchido gostaria de salvar o numero 1 em outro campo do mesmo dbf, isso percorrendo todos os registros, qual a ideia pessoal? alguma dica, algum lugar aonde possa achar algo do genero para ler, obrigado
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Ajuda,

Mensagem por ANDRIL »

Amigo, seja bem vindo ao forum.

Para fazer isso há algumas maneiras, como é para aprendizado, vou postar aqui um código que envolve um loop.

Código: Selecionar todos

//--limpa a tela no inicio do sistema
cls

//--A tabela.dbf é o banco de dados, nela tem dois campos com a seguinte estrutura:
//--CMP1 C,1 e CMP2 C,1  ou seja, os 2 campos aqui são do tipo caracter com tamanho de um caracter, ok

USE TABELA.DBF 

//--posiciona o ponteiro no topo da tabela
go top

//--condicao, que diz: faça enquanto o fim da tabela nao for encontrado.
DO WHILE !EOF()
    //--percorre a tabela inteira do inicio ao fim avaliando o primeiro campo e se CMP1 for vazio ou seja
    //--ter apenas um espaco. Tambem pode-se utilizar a funcao EMPTY() para testar se o campo é vazio, assim
    //-- if empty(CMP1)=.T.

    if CMP1=" "
          //--se for vazio, preenche o campo CMP2 com o numero "1" caracter
          replace CMP2 with "1"
          //--funcao que força a gravar a alteracao no disco HD
          dbcommit()
    endif
    
    //--vamos para o proximo registro e recomeça o procedimento 
    //--ate que a tabela seja toda percorrida
    SKIP +1

ENDDO

//--aqui fechamos a tabela.dbf
close 
//--encerramos o sistema
quit
Como disse, há diversas maneiras de fazer isso, inclusive usando apenas uma linha, com a função DbEval(), mais em se tratando de aprendizado, já se tem aqui, mais algumas noções sobre a linguagem.

Boa sorte.
Abraços.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
erico.santana
Usuário Nível 1
Usuário Nível 1
Mensagens: 2
Registrado em: 13 Ago 2011 18:34
Localização: Maringa

Ajuda,

Mensagem por erico.santana »

Andril Boa noite, e obrigado pela ajuda, eu consegui enteder bem o codigo ali, lhe agradeço, estou precisando fazer uns bicos em um sistema clipper e to tendo que aprender, a minha area e totalmente diferente, agradeço sua ajuda...

Muito Obrigado
Responder