Página 2 de 3

Enviado: 14 Ago 2007 15:08
por gera som djs
me ajudem por favor

Enviado: 14 Ago 2007 15:31
por ederxc
Acho que ja da pra voce começar dae !Buenas sortes ....


Código: Selecionar todos

USE CLIENTE
index on cod to xNcli
index on client to xCcli
SET INDEX TO xNcli,XCcli
SET ORDER TO 1
DO WHILE .T.
   dbgotop()
   RESTSCREEN(00,00,23,80,TELA1)
   VCOD=0
   VFORN=SPACE(35)
   VCPF=SPACE(13)
   VIE=space(15)
   VEND=SPACE(30)
   VCIDADE=SPACE(50)
   VESTADO=SPACE(02)
   VBAIRRO=SPACE(50)
   VCEP=0 
   VFONE=0
   VFAX=0   
   VDATCAD=CTOD('')
   VEMAIL=SPACE(50)
   VSITE=SPACE(50)
   VOBS=SPACE(50)
   vdatcad=date()
   @24,08 SAY padc('[ ESC ] CANCELA - [F8] SAIR ',60) COLOR('G+/B')
   set color to ('gr+/b','b-/g-')
   opc=0
   @02,02 PROMPT 'CADASTRAR'      
   @04,10 PROMPT 'ALTERAR/EXCLUIR'
   MENU TO OPC
   IF OPC=1
      INCLUIR2()
      loop
   elseIF OPC=2
      ALTEXCLU2()
      LOOP
   ENDIF
   IF LASTKEY()=27
      RESTSCREEN(00,00,24,80,TELA1)
      RETURN .T.
   ENDIF
ENDDO

***************************<FUNCAO INCLUSAO>**********************

FUNCTION INCLUIR2()
DO WHILE .T.
      CLEAR GETS
PRIV  VCOD:=VCEP:=VFONE:=VFAX:=0
PRIV  VFORN:=SPACE(35)
PRIV  VCPf:=SPACE(13)
PRIV  VIE:=space(15)
PRIV  VEND:=SPACE(30)
PRIV  VESTADO:=SPACE(02)
PRIV  VDATCAD:=CTOD('')
PRIV  VEMAIL:=VSITE:=VOBS:=VCIDADE:=VBAIRRO:=SPACE(50)
PRIV  vdatcad:=date()
      restscreen(00,00,25,80,tela1)
      setcolor('W+/b')
      @07,01 clear to 21,78
      DISPBOX(07,1,21,78)      
      @02,03 SAY 'COD. CLIENTE:'   COLOR('Gr+/B')
      @24,10 SAY padc('NOVO CADASTRO',60) COLOR('G+*/B')
      @08,04 SAY 'CLIENTE..............'
      @09,04 SAY 'CPF..................'
      @09,49 SAY 'IE.:' color('w+/b')
      @10,04 SAY 'ENDERECO.............'  
      @11,04 SAY 'BAIRRO...............'      
      @12,04 SAY 'CIDADE...............'
      @13,04 SAY 'ESTADO...............'
      @14,04 SAY 'CEP..................'
      @15,04 SAY 'FONE.................'
      @16,04 SAY 'FAX..................'
      @17,04 SAY 'DATA DE CADASTRO.....'
      @18,04 SAY 'SITE.................'
      @19,04 SAY 'E-MAIL...............'
      @20,04 SAY 'INFO. ADICIONAL......'
      dbgobottom()
      VCOD=cod
      VCOD++
      SETCOLOR('W/B')
      @08,25 CLEAR TO 20,77
      @02,17 SAY VCOD PICT '999'
      @08,25 GET VFORN      PICT '@!'     COLOR('GR+/B')
      READ
      IF LASTKEY()=27
         RETURN .T.
      ENDIF
      IF EMPTY(VFORN)
         RETURN
      ENDIF
      @09,49 SAY 'IE.:' color('GR+/b')
      @09,25 GET VCPF       PICT '@R 999.999.999-99' valid CPF(vcPF)COLOR('GR+/B')
      @09,53 GET VIE        PICT '999.999.999.999'  COLOR('GR+/B')
      @10,25 GET VEND       PICT '@!'               COLOR('GR+/B')
      @11,25 GET VBAIRRO    PICT '@!'               COLOR('GR+/B')
      @12,25 GET VCIDADE    PICT '@!'               COLOR('GR+/B')
      @13,25 GET VESTADO    PICT '@!'               COLOR('GR+/B')
      @14,25 GET VCEP       PICT '99-999-999'       COLOR('GR+/B')
      @15,25 GET VFONE      PICT '(99)9999-9999'    COLOR('GR+/B')
      @16,25 GET VFAX       PICT '(99)9999-9999'    COLOR('GR+/B')
      @17,25 SAY VDATCAD    PICT '99/99/9999'       COLOR('GR+/B')
      @18,25 GET VSITE      PICT '@!'               COLOR('GR+/B')
      @19,25 GET VEMAIL     PICT '@!'               COLOR('GR+/B')
      @20,25 GET VOBS       PICT '@!'               COLOR('GR+/B')
       READ
      tela_sav=""
      tela_sav=savescreen(18,29,21,47,tela_sav)
      set color to ('n/gb','gb/n')
      @18,29 clear to 21,47
      dispbox(18,29,21,47)
      opc=0
      @19,30 SAY('confirma inclusao')
      @20,32 prompt(" sim ")
      @20,40 prompt(" nao ")
      menu to opc
      set color to ('n/gb','b-/g-')
      if ! lastkey()=27
         IF opc=1
            APPEND BLANK
            REPLA COD       WITH VCOD
            REPLA CLIENT    WITH VFORN
            REPLA CPF       WITH VCPF
            REPLA IE        WITH VIE
            REPLA END       WITH VEND
            REPLA BAIRRO    WITH VBAIRRO
            REPLA CIDADE    WITH VCIDADE
            REPLA ESTADO    WITH VESTADO
            REPLA CEP       WITH VCEP
            REPLA FONE      WITH VFONE
            REPLA FAX       WITH VFAX
            REPLA EMAIL     WITH VEMAIL
            REPLA DATCAD    WITH VDATCAD
            REPLA SITE      WITH VSITE
            REPLA EMAIL     WITH VEMAIL
            REPLA OBS       WITH VOBS
            DBCOMMIT()          
            return .t.
            restscreen(18,29,21,47,tela_sav)
        else
            restscreen(18,29,21,47,tela_sav)
            LOOP
      endif
     ENDIF
   RETURN 
ENDDO

***********************<ALTERA EXCLUI>**************************

FUNCTION ALTEXCLU2()
   RESTSCREEN(00,00,24,80,TELA1)
   @02,03 SAY 'COD. CLIENTE:'COLOR("GR+/B")
   @02,17 GET VCOD PICT '999'  COLOR("w+/B")  when mensagem("[ENTER] - pesquisa")
   @24,08 SAY padc('[ ESC ] CANCELA - [F8] SAIR ',60) COLOR('G+/B')
   READ
   if ! lastkey()=27
     IF EMPTY(VCOD)
        PESQ2()
        RESTSCREEN(00,00,24,80,TELA1)
     endif
   endif
   SET ORDER TO 1
   IF DBSEEK(VCOD)
      VCOD=COD
      VFORN=CLIENT
      VCPF=CPF
      VIE=IE
      VEND=END
      VBAIRRO=BAIRRO
      VCIDADE=CIDADE
      VESTADO=ESTADO
      VCEP=CEP
      VFONE=FONE
      VFAX=FAX
      VDATCAD=DATCAD
      VSITE=SITE
      VEMAIL=EMAIL
      VOBS=OBS
      setcolor('w+/b')
      @07,01 clear to 21,78
      DISPBOX(07,1,21,78)
      @02,03 SAY ("NOME CLIENTE:") PICT '@!' COLOR ("GR+/B")
      @08,04 SAY 'CLIENTE..............'
      @09,04 SAY 'CPF..................'
      @10,04 SAY 'ENDERECO.............'  
      @11,04 SAY 'BAIRRO...............'      
      @12,04 SAY 'CIDADE...............'
      @13,04 SAY 'ESTADO...............'
      @14,04 SAY 'CEP..................'
      @15,04 SAY 'FONE.................'
      @16,04 SAY 'FAX..................'
      @17,04 SAY 'DATA DE CADASTRO.....'
      @18,04 SAY 'SITE.................'
      @19,04 SAY 'E-MAIL...............'
      @20,04 SAY 'INFO. ADICIONAL......'
      @24,08 SAY padc('[F2] - ALTERA      [F3] - EXCLUI',60) COLOR('G+/B')

      SETCOLOR('W/B')
      @08,25 CLEAR TO 20,77
      @02,17 SAY STRZERO(VCOD) PICT '999'
      @08,25 SAY VFORN         PICT '@!'
      @09,25 SAY VCPF          PICT  '@R 999.999.999-99' 
      @09,53 SAY VIE           PICT '999.999.999.999'
      @09,49 SAY 'IE.:' color('w+/b')
      @10,25 SAY VEND          PICT '@!'                   
      @11,25 SAY VBAIRRO       PICT '@!'                   
      @12,25 SAY VCIDADE       PICT '@!'
      @13,25 SAY ESTADO        PICT '@!'
      @14,25 SAY VCEP          PICT '99-999-999'           
      @15,25 SAY VFONE         PICT '(99)9999-9999'        
      @16,25 SAY VFAX          PICT '(99)9999-9999'
      @17,25 SAY VDATCAD       PICT '99/99/9999'
      @18,25 SAY VSITE         PICT '@!'
      @19,25 SAY VEMAIL        PICT '@!'
      @20,25 SAY VOBS          PICT '@!'
      VTECLA=INKEY(0)
      IF VTECLA= -1
         @08,25 GET VFORN      PICT '@!' COLOR('GR+/B')
         @09,25 GET VCPF       PICT '@R 999.999.999-99'  valid CPF(VCPF) COLOR('GR+/B')
         @09,53 GET VIE        PICT '999.999.999.999'  COLOR('GR+/B')
         @10,25 GET VEND       PICT '@!'               COLOR('GR+/B')
         @11,25 GET VBAIRRO    PICT '@!'               COLOR('GR+/B')
         @12,25 GET VCIDADE    PICT '@!'               COLOR('GR+/B')
         @13,25 GET VESTADO    PICT '@!'               COLOR('GR+/B')
         @14,25 GET VCEP       PICT '99-999-999'       COLOR('GR+/B')
         @15,25 GET VFONE      PICT '(99)9999-9999'    COLOR('GR+/B')
         @16,25 GET VFAX       PICT '(99)9999-9999'    COLOR('GR+/B')
         @17,25 SAY VDATCAD    PICT '99/99/9999'       COLOR('GR+/B')
         @18,25 GET VSITE      PICT '@!'               COLOR('GR+/B')
         @19,25 GET VEMAIL     PICT '@!'               COLOR('GR+/B')
         @20,25 GET VOBS       PICT '@!'               COLOR('GR+/B')
         READ
         if ! lastkey()=27
            OPC={'SIM','NAO'}
            OPC2=ALERT('CONFIRMA ALTERACAO ?',OPC,'N/GB,')
            IF opc2=1
               REPLA COD       WITH VCOD
               REPLA CLIENT    WITH VFORN
               REPLA CPF       WITH VCPF
               REPLA IE        WITH VIE
               REPLA END       WITH VEND
               REPLA BAIRRO    WITH VBAIRRO
               REPLA CIDADE    WITH VCIDADE
               REPLA ESTADO    WITH VESTADO
               REPLA CEP       WITH VCEP
               REPLA FONE      WITH VFONE
               REPLA FAX       WITH VFAX
               REPLA EMAIL     WITH VEMAIL
               REPLA DATCAD    WITH VDATCAD
               REPLA SITE      WITH VSITE
               REPLA EMAIL     WITH VEMAIL
               REPLA OBS       WITH VOBS
               DBCOMMIT()
               DBUNLOCK()
               RETURN
             ELSE
               RETURN
             ENDIF
          endif
      ELSEIF VTECLA=-2
         alert('DESEJA RELAMENTE EXCLUIR?;;SE ISSO FOR FEITO OS DADOS;JAMAIS PODERAO SER RECUPERADOS',,'n/gb')
         OPC={'SIM','NAO'}
         OPC2=ALERT('CONFIRMA EXCLUSAO ?',OPC,'N/GB,')
         IF opc2=1         
            DELE
            RETURN
         ELSEIF OPC2=2
            RETURN
         ENDIF
      ENDIF
   ENDIF
RETURN 


********************<PESQUISA>***********************
FUNCTION PESQ2()
SET ORDER TO 2
setcolor('w+/b')
   GO TOP
   VNOME=SPACE(30)   
   @24,08 SAY PADC ('PESQUISA NO BANCO DE DADOS',60) COLOR('G+*/B')
   @02,03 SAY 'NOME CLIENTE:'COLOR('GR+/B')
   @02,18 GET  VNOME PICT '@!'   COLOR('GR+/B')
   READ
   IF LASTKEY()=27
      RESTSCREEN(00,00,25,80,TELA1)
      RETURN .f. 
   ENDIF
   IF EMPTY(VNOME)
      if ! lastkey()=27
         dispbox(07,03,21,76)
         dbedit(08,04,20,75)
         vCOD=COD
         return
      endif
   ENDIF
   VNOME=ALLTRIM(VNOME)
   if dbseek(vNOME)
     if ! lastkey()=27
        dispbox(06,03,20,76)
        dbedit(07,04,19,75,)
        VNOME=CLIENT
        VCOD1=COD
        VCOD=VCOD1
        return
     endif
   else      
      return 
   endif
return
***********************<VALIDAR CPF>**************************

FUNCTION CPF(vcpf)

LOCAL i,ii,soma,controle,digito,num
cpf = IF(VALTYPE(Vcpf)="U","",Vcpf)
IF EMPT(Vcpf)
    RETURN(.F.)
ELSE
    IF LEN(Vcpf) < 11
        RETURN(.F.)
    ENDIF
ENDIF
controle=""
num=10
FOR ii=1 TO 2
    soma=0
    FOR i=1 TO 9
        soma+=(VAL(SUBSTR(Vcpf,i,1))*num)
        num--
    NEXT
    IF ii=2
        soma+=(2*VAL(controle))
    ENDIF
    digito=soma - (INT(soma/11)*11)
    IF digito=0 .OR. digito=1
        controle=controle+"0"
    ELSE
        controle=controle+STR(11-digito,1)
    ENDIF
    num=11
NEXT
IF controle!=SUBST(Vcpf,10,2)
    TONE(1001,3)
    ALERT("CPF INVALIDO")
    RETURN(.F.)
ENDIF
RETURN(.T.)
:%

Enviado: 14 Ago 2007 15:53
por sygecom
Stanis Luksys escreveu:hehhehe!!!

Primeiro programa e já ta na onda do "func main()"?/ rsrs

Deixa disso, escrever "function" não cai a mão de ninguém.
Ajudou bastante...

Pode usar o Func como function tanto faz...isso não vai lhe diferenciar agora....
De uma olhada nosexemplos que estão na seção de dowload desse site: um deles segue abaixo....
https://pctoledo.org/download/cop ... t&deonde=2

Obs: o exemplo que o eder passou só falta o DBF....

Enviado: 14 Ago 2007 16:12
por Maligno
gera som djs escreveu:Tambem naum tem ninguem pra me ensinar
o que eu tenho pra fazer passo a passo se tivese alguem eu naum taria postando essas perguntas idiotas no forum e tirando o tempo de vcis. :|<
Mas a função do fórum não é dar curso. É tirar dúvida. É o que está sendo feito, não?

Enviado: 14 Ago 2007 20:46
por gera som djs
Obrigado ederxc olha so
eu edito clientes.prg e compilon pra exe

Enviado: 15 Ago 2007 07:53
por ederxc
Bom digamos que voce ainda ñ tenha um *.DBF para este prg , ok ?

*****************************************************
Então entra no DBU e cria um arquivo cliente.DBF
com os campos relacionados do PRG


Código: Selecionar todos

campos DBF
COD
CLIENT
CPF
IE
END
BAIRRO
CIDADE
ESTADO
CEP
FONE
FAX
DATCAD
SITE
EMAIL
OBS 

creio que voce ja saiba usar o DBU e saiba diferenciar um campo Numerico , DATA , CARACTER // só vai precisar deles



Código: Selecionar todos

USE CLIENTE
index on cod to xNcli      //indice por campo "Cod" NUmerico
index on client to xCcli   //indice por campo "NOME" caracter
SET INDEX TO xNcli,XCcli  //abre os indices em ordem  numerico, caracter
SET ORDER TO 1         // seta  a ordem para começar com indice numérico xNcli
Obrigado ederxc olha so
eu edito clientes.prg e compilon pra exe

R: Agora Sim



See ya !
:|<

Enviado: 15 Ago 2007 14:13
por ederxc
Ae cara , desistiu ?


Tô vendo se consigo um exemplo bem simplesinho de tudo pra voce começar.

a propósito , onde voce teve a idéia de programar em clipper, e pq ?? Apenas uma curiosidade , nada mais !

´o)

Enviado: 15 Ago 2007 14:15
por gera som djs
Código:

campos DBF
COD
CLIENT
CPF
IE
END
BAIRRO
CIDADE
ESTADO
CEP
FONE
FAX
DATCAD
SITE
EMAIL
OBS


Éder fala:

creio que voce ja saiba usar o DBU e saiba diferenciar um campo Numerico , DATA , CARACTER // só vai precisar deles




Código:
USE CLIENTE
index on cod to xNcli //indice por campo "Cod" NUmerico
index on client to xCcli //indice por campo "NOME" caracter
SET INDEX TO xNcli,XCcli //abre os indices em ordem numerico, caracter
SET ORDER TO 1 // seta a ordem para começar com indice numérico xNcli




Olha só esses codigos DBF que vc me mandou eu compilo separado do outro anterior né?



desde ja agradeço

Um abraço

Enviado: 15 Ago 2007 14:26
por ederxc
Esquece isso por hora , isso foi apenas uma explicação de como funcionam os indices , primeiro precisamos saber se voce ja sabe usar o DBU , sem banco de dados , nada de PRG, ok !

Outra coisa , qual seu sistema operacional , desconfio que voce ainda esta usando o win98....


Para que meu exemplo funcione perfeitamente , voce tera que criar um DBF no DBU que vem junto com o clipper , e depois só depois disso ir para o PRG

OBS: crie uma pasta em c:\cliente
e faça tudo dentro dela para ñ se perder

o arquivo dbf devera se chamar cliente.dbf contendo os seguintes campos a baixo

Código: Selecionar todos

COD
CLIENT
CPF
IE
END
BAIRRO
CIDADE
ESTADO
CEP
FONE
FAX
DATCAD
SITE
EMAIL
OBS

Código: Selecionar todos

USE CLIENTE
index on cod to xNcli //indice por campo "Cod" NUmerico
index on client to xCcli //indice por campo "NOME" caracter
SET INDEX TO xNcli,XCcli //abre os indices em ordem numerico, caracter
SET ORDER TO 1 // seta a ordem para começar com indice numérico xNcli 


hj to meio na forca , mas ainda essa semana tento lhe mandar um cadastro de clientes enchuto , sem funçõe sem nada , apenas abre DB , indexa, tela , get´s e grava no DB , prometo essa semana fazer isso pra voce .... -:]

Enviado: 15 Ago 2007 15:13
por gera som djs
Não desisti naum


obrigado por estar tendo um tempinho pra me dar essa força


fico muito grato por isso

por que eu quis lhe-dar com clipper?

R:porque eu quero aprender é uma baita profiçao

Um abraço

Enviado: 15 Ago 2007 15:58
por Stanis Luksys
sygecom escreveu:
Stanis Luksys escreveu:Primeiro programa e já ta na onda do "func main()"?/ rsrsDeixa disso, escrever "function" não cai a mão de ninguém.
Ajudou bastante...
Pode usar o Func como function tanto faz...isso não vai lhe diferenciar agora.....
Ajudei sim. Embora a linguagem permita a sintaxe de abreviação, não é de bom costume isso. E é de principante que se pega vícios como esses, que de fato em nada colaboram para o desenvolvimento da aprendizagem e do aplicativo.

Será que abreviando todos os comandos, ao longo de um dia, quantos minutos se economiza com digitação?

Isso não sei, mas uma coisa te garanto: tentando entender depois, outra pessoa vai gastar vários.

Talvez um dia você querendo fazer parte de um projeto opensource, ou de alguma organização mesmo, onde o código passe pelas mãos e vistas de dezenas de pessoas, você entenda que isso, entre outras coisas, é importante.

É por essas e outras que a maioria dos "clipperos" não sairão do círculo xBase (clipper/xharbour) nunca. Depois de tantos vícios de linguagem, é muito difícil se adaptar numa sintaxe mais criteriosa com um compilador mais severo.

Antes de julgar se ajudei ou não, escolha 15 dos meus piores 50 posts, e compare com 15 dos seus 1000 melhores.

Enviado: 15 Ago 2007 16:08
por sygecom
Antes de julgar se ajudei ou não, escolha 15 dos meus piores 50 posts, e compare com 15 dos seus 1000 melhores.
Ual...Calma ...isso é um Forum amiguinho e não competição ou algo semelhante...espero que saiba o que é isso !!! e fique a vontade de selecionar os seus post !!

Obs:Não julguei, apenas disse que o que vc postou não ajudou na duvida do colega !!! mas tudo bem...

Abraços
Leonardo Machado

Enviado: 15 Ago 2007 16:17
por sygecom
É por essas e outras que a maioria dos "clipperos" não sairão do círculo xBase (clipper/xharbour) nunca. Depois de tantos vícios de linguagem, é muito difícil se adaptar numa sintaxe mais criteriosa com um compilador mais severo.
Tche, isso pra min é desculpa....por favor...para quem quiser sair xBase sai e pronto...nd que um curso,faculdade, apostilas e um outros que não posso dar um empuranzinho.

Abraços

Enviado: 15 Ago 2007 16:28
por Stanis Luksys
Não se trata de competir, e sim de olhar mais para o que se escreve, e julgar menos o que os outros escrevem.

Esta prática aqui no forum vem se tornando muito comum de um tempo pra cá. E você é um dos que estão sempre envolvidos.

Se você leu minha resposta e acha que não ajudou, ajude mais e fale menos.

Como você disse isso é um forum, mas parece que estão fazendo nele as mesmas intrigas que minhas vizinhas mais chatas ficam fazendo lá em baixo do prédio...

Enviado: 15 Ago 2007 16:51
por Samu
Bom!!

Eu comecei agora no forum....

em 3 posts eu ajudei um e fui criticado em 2....

Me corrigirão até os erros de portugues.... PO!!! ISSO SIM E PERDER TEMPO...

Irei desistir de postar e vou apenas procurar tirar minhas duvidas daqui pra frente apenas campeando posts e assistindo a brigas desnecessarias...

Espero que alguem (como de costume) corrija algum erro no meu post.



SEM MAIS.... SAMU