Clipper On Line • Ver Tópico - Ler dados da dbf e imprimir na tela com minigui

Ler dados da dbf e imprimir na tela com minigui

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Ler dados da dbf e imprimir na tela com minigui

Mensagempor Nascimento » 04 Fev 2014 00:02

Amigos boa noite estou tentando pegar uns dados de uma dbf e printar na tela com a minigui desta forma


#include "minigui.ch"

function Mcenthos()
use aptos
aptos->(dbgotop())
 
define window Entrada ;
  at 0,0 ;
  width 900 ;
  height 640 ;
  title 'Entrada' ;
  nosize;
  main
  col:=10
for i := 1 to 20
skip
col+=10
@10, col  label i value apt
next
end window
entrada.center
entrada.activate

Return Nil


a dbf aptos é composta de numeros de 01 a 20

eu queria que ficasse mais ou menos assim na tela

01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20

so que da erro no label e nao sei qual o comando pra fazer isso
Anexos
APTOS.rar
aqui esta a dbf para quem quizer ver e no caso me ajudar com essa empreitada
(270 Bytes) Baixado 79 vezes
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes

Ler dados da dbf e imprimir na tela com minigui

Mensagempor Toledo » 04 Fev 2014 07:02

Josivan, tenta o seguinte:

#include "minigui.ch"

function Main()  //se a WINDOW vai ser MAIN, aqui também tem que ser Main()

SET DELETED ON  //os registros marcados para deletar não serão contados, pois tem muitos
                //registros deletados no seu arquivo APTOS.
use aptos
aptos->(dbgotop())
nTotReg:=LastRec()  //total de registros no arquivo APTOS (sem os deletados)

define window entrada ;
  at 0,0 ;
  width 900 ;
  height 640 ;
  title 'Entrada' ;
  nosize;
  main

  col:=10
  lin:=10
  for i := 1 to nTotReg
    @ lin, col  label &(strzero(i,2)) value alltrim(apt)
    skip    //coloquei o SKIP depois de LABEL, senão o 1º registro vai se perder
    col+=20
    if (i % 10)==0  //se já deu 10 registros
     lin+=20     //muda a linha
     col:=10     //e volta para coluna 10
    endif
  next
end window
entrada.center
entrada.activate

Return Nil


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
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

Ler dados da dbf e imprimir na tela com minigui

Mensagempor Nascimento » 04 Fev 2014 10:10

Mais uma Vez Mestre Toledo Muito obrigado a vc e a Todos que Mantem esse Forum :{
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes

Ler dados da dbf e imprimir na tela com minigui

Mensagempor Nascimento » 17 Fev 2014 16:41

Amigos tou aqui novamente pra ver se tem soluçao esse problema

a funçao corrigida pelo amigo toledo ficou certissima so que eu descidi da uma mechida no codigo

com uns exemplos que vi do nosso amigo Giovanni Di Maria

ficou otimo

so que apareceu outro problema no qual ja bati e nao consegui solucionar :%

vou postar como ficou o cod e abaixo o cod
# include 'minigui.ch'

Func Main()
local cButton,k
public vapt:={}
use aptos
set delete on
aptos->(dbgotop())
nTotReg:=LastRec()
define window Form_1 ;
at 90,90 ;
width 400 ;
height 500 ;
title "Entrada" ;
main
end window
  col:=10
  lin:=10 
for k := 1 TO nTotReg   
   cButton := strzero(k,2)
   AAdd(vapt,cButton)
   @ lin, col button &cButton ;
   parent  Form_1 ;
   caption  strzero(k,2) ;
   action MsgInfo(' Você clicou no Botão ' +strzero(k,2));
   width 20 ;
   height 20
   skip
   col+=30
   if (k % 10)==0  //se já deu 10 registros
    lin+=30     //muda a linha
     col:=10     //e volta para coluna 10
   endif
next k
Form_1.Activate
return Nil


e abaixo a imagem do respectivo codigo o que acontece é que eu queria que desse a action certa mais so da o mesmo numero (no caso ai so fica no 21) em todos os buttons

entrada.PNG


porque se essa maneira funcionar cada button vai execultar uma funçao defenida

a dbf esta logo no começo deste respectivo topico anexada como aptos.rar

att: Josivan Nascimento

ja agradecendo a todos que puderem me ajudar
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes

Ler dados da dbf e imprimir na tela com minigui

Mensagempor Toledo » 17 Fev 2014 17:25

Josivan, veja este exemplo:

# include 'minigui.ch'

Func Main()
local cButton,k
public vapt:={}
use aptos
set delete on
aptos->(dbgotop())
nTotReg:=LastRec()
define window Form_1 ;
at 90,90 ;
width 400 ;
height 500 ;
title "Entrada" ;
main
end window
  col:=10
  lin:=10 
for k := 1 TO nTotReg   
   cButton := strzero(k,2)
   AAdd(vapt,cButton)
   @ lin, col button &cButton ;
   parent  Form_1 ;
   caption  strzero(k,2) ;
   action {|| Clicou(this.Caption)};
   width 20 ;
   height 20
   skip
   col+=30
   if (k % 10)==0  //se já deu 10 registros
    lin+=30     //muda a linha
     col:=10     //e volta para coluna 10
   endif
next k
Form_1.Activate
return Nil

**********************************
Func Clicou(cCap)
MsgInfo("Você clicou no Botão "+cCap)
Return Nil


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
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

Ler dados da dbf e imprimir na tela com minigui

Mensagempor Nascimento » 17 Fev 2014 17:32

Muiiiiiiiiiito obrigado mestre toledo, e a todos os demais que fazem :))

esse forum é minha sala de aula , quase nunca saio dele rsrs

abraços a todos

att: josivan Nascimento
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes

Ler dados da dbf e imprimir na tela com minigui

Mensagempor Nascimento » 21 Mar 2014 03:35

Amigos Volto aqui mais uma vez precisando da ajuda de todos voceis, estou portando um fonte para harbour/minigui
o Amigo toledo deu alguns ajustes ficando otimo mais agora preciso de pequenos detalhes segue a imagem abaixo:
projeto.jpg


o que preciso é que aparece na label so o numero tipo: 999, 02 , 03, etc

mais quando clicar no botal apareça como esta na tela levando as informaçoes do campo "SIT" 999LI ,02LI ...17LI

abaixo segue o codigo e o banco de dados atualizado

# include 'minigui.ch'

Func Main()
local cButton,k
use aptos
set delete on
aptos->(dbgotop())
nTotReg:=LastRec()
define window Form_1 ;
at 90,90 ;
width 400 ;
height 500 ;
title "Entrada" ;
main
end window
  col:=50
  lin:=20 
for k := 1 TO nTotReg   
   cButton := ltrim(apt)
   @ lin, col button &cButton ;
   parent  Form_1 ;
   caption  ltrim(apt)+' '+sit ;    // AQUI SO APARECERIA NO CASO O NUMERO DO APT
   action {|| Clicou(this.Caption)};
   width 40 ;
   height 20
   skip
   col+=50
   if (k % 10)==0  //se já deu 10 registros
    lin+=40     //muda a linha
     col:=50    //e volta para coluna 10
   endif
next k
Form_1.Activate
return Nil

**********************************
Func Clicou(cCap)
MsgInfo("Você clicou no Botão "+cCap)  // AQUI SIM O NUMERO DO APT MAIS A SITUAÇAO DO MESMO
Return Nil


aqui segue o banco de dados atualizado
APTOS.rar
(862 Bytes) Baixado 61 vezes


Agradeço a Todos que poderem me ajudar
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes

Ler dados da dbf e imprimir na tela com minigui

Mensagempor Toledo » 21 Mar 2014 09:25

Amigo, faça o seguinte:

Incluir o comando abaixo uma linha antes do use aptos:
 Private aApto:={}

Alterar o Caption do botão:
caption  ltrim(apt)

Incluir uma linha antes do comando skip:
   AADD(aApto,{ltrim(apt),sit})

Incluir uma linha antes do comando MsgInfo:
nAp:=ASCAN(aApto,{|e| e[1]==cCap})

Alterar o conteúdo do comando MsgInfo:
MsgInfo("Você clicou no Botão "+cCap+" "+aApto[nAp,2])


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
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

Ler dados da dbf e imprimir na tela com minigui

Mensagempor Nascimento » 21 Mar 2014 10:36

Muito Obrigado amigo Toledo! funcionou perfeitamente

agora vou continuar aqui o árduo processo de migraçao que seria quase impossivel se nao fosse por esse forum , quando concluir vou postar os prints do antes e depois
o antes e o depois Abraços a todos :{
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes

Ler dados da dbf e imprimir na tela com minigui

Mensagempor Nascimento » 30 Mar 2014 12:54

Amigos peço ate desculpas pela Amolaçao mais é que realmente no inicio de migraçao do modo console pra o modo gráfico é muito complicado das os primeiros passos

o meu propósito agora é o seguinte gravar no banco de dados mudando o campo "SIT" se ele estiver "LI" ele ir pra "OC"

adicionei como exemplo essas linhas

Func Clicou(cCap)
nAp:=ASCAN(aApto,{|e| e[1]==cCap})

if aApto[nAp,2] =="LI" .and. msgyesno('deseja mudar a situaçao?') = .t.
   msginfo('Gravou No Campo' + cCap + ' "SIT"  OC')
endif 

MsgInfo("Você clicou no Botão "+cCap+" "+aApto[nAp,2]) // AQUI SIM O NUMERO DO APT MAIS A SITUAÇAO DO MESMO
Return Nil


Por Exemplo: eu clico no 03 a o Campo dele esta "LI" ao clicar em Sim o Campo "SIT" do 03 Atualiza pra "OC" ja Atualizando Na Tela Tabem
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes

Ler dados da dbf e imprimir na tela com minigui

Mensagempor Toledo » 31 Mar 2014 08:28

Amigo, logo após gravar o campo SIT com OC, basta alterar o valor do segundo elemento da matriz:

aApto[nAp,2] := "OC"


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
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

Ler dados da dbf e imprimir na tela com minigui

Mensagempor Nascimento » 31 Mar 2014 08:55

nobre amigo toledo isso que nao tou conseguindo gravar na dbf , parece ate brincadeira mais eu nao tou conseguindo com a minigui fazer isso ai vou dando andamento no soft e virando noites tentando ter exito na gravaçao da dbf o que ainda nao aconteceu :%
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes

Ler dados da dbf e imprimir na tela com minigui

Mensagempor Toledo » 31 Mar 2014 09:55

Josivan, abrir um arquivo DBF (USE), indexar o arquivo (INDEX), buscar um registro no arquivo (SEEK) e gravar um valor em um campo (REPLACE), são comandos básicos para qualquer programador Clipper/Harbour.

Mas tudo bem, vamos as modificações no seu código:

Logo após ao comando use aptos, incluir:
If !File("aptos1.ntx")
  Index on strzero(val(apt),3) to aptos1
Endif
Set index to aptos1


Trocar o código:
if aApto[nAp,2] =="LI" .and. msgyesno('deseja mudar a situaçao?') = .t.
   msginfo('Gravou No Campo' + cCap + ' "SIT"  OC')
endif


Por este:
If aApto[nAp,2] =="LI"
  If msgyesno('deseja mudar a situaçao?','Apto: '+cCap+' Sit: '+aApto[nAp,2])
    Go Top
    Seek StrZero(Val(cCap),3)
    Replace sit with "OC"
    aApto[nAp,2] := "OC"
  Endif
Endif


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
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

Ler dados da dbf e imprimir na tela com minigui

Mensagempor Pablo César » 01 Abr 2014 10:38

Josivan Nascimento escreveu:nobre amigo toledo isso que nao tou conseguindo gravar na dbf , parece ate brincadeira mais eu nao tou conseguindo com a minigui fazer isso ai vou dando andamento no soft e virando noites tentando ter exito na gravaçao da dbf o que ainda nao aconteceu :%
Na minha opinião e acredito que de muitos outros colegas, quando temos uma dificuldade de acertar o nosso código, devemos disponibilizar o nosso código fonte primeiramente, mesmo com erros. E indicar qual é a linha onde não está funcionando a rotina.

Temos que ser mais objetivos nas nossas questões. Só assim poderemos prosseguir no aprendizado. Não esperar que seja feito tudo... afff paciência do Toledo e de todo mundo...
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Ler dados da dbf e imprimir na tela com minigui

Mensagempor Nascimento » 07 Abr 2014 01:58

entao como o amigo pablo sugeriu estou postando exatamente o trecho do codigo em uso e pablo nos softs que eu trabalhava quando comecei a aprender nunca usei seek() , e nem replace

caso mais detalhes posso te explicar so da um toc que eu te mostro em que trabalhava ai vc vai entender por conta as perguntas aparentemente bobas, sem mais delongas vamos la se vc entender e poder me ajudar te agradeço nao pensse que é eu querendo me aproveitar disso ou daquilo é que realmente eu estou perdido mais que cego em tiroteio , e so estou conseguindo das pequenos passos com a ajuda do amigo toledo e deste forum, que eu agradeço de coraçao

# include 'minigui.ch'
static v_cor
Func Main()
local cButton,k
public sit
Private aApto:={}
public _verde_1   := {094,255,094}
public _branco    := {255,255,255}
public _preto     := {000,000,000}
public _vermelho  := {190,000,000}
public _amarelo   := {255,255,128}
use aptos
If !File("aptos1.ntx")
  Index on strzero(val(apt),3) to aptos1
Endif
Set index to aptos1
set delete on
* aptos->(dbgotop())
* nTotReg:=LastRec()
define window Form_1 ;
    at 0,0;
    width 1024;
    height 768;
    main;
    on init janela();
    backcolor {0,0,0}   
end window
Form_1.Activate

*******************************************************************************
func janela()
*use aptos
*-set delete on
goto top
totap:= LastRec() - 1
lin := 10
for i= 1 to 10
   col  := 0
   do while (!EOF())
      if (col >488)
         exit
      endif
*     NESTE PEQUENO EXEMPLO PODEREMOS JA ANEXAR AS CORES DE ACORDO COM A SITUAÇAO DA DBF ORIGINAL
      do case
         case sit =="LI"
             v_cor:=_verde_1
         case sit== "OC"
             v_cor:=_vermelho
          case sit == "CL" .or. sit =="AR"
             v_cor:=_branco                                   
         case sit== "IT"         
             v_cor:=_preto
         case sit== "EC"
             v_cor:=_amarelo
         otherwise
             v_cor:=_amarelo
      end case
      cButton := ltrim(apt)
      @ lin, col label &cButton ;
      parent Form_1;
      width 40;
      height 20;
      value ltrim(apt) ;
      tooltip 'A Suite Esta '+cButton + sit;
      border;
      font 'verdana' size 8 bold;
      action {|| clicou(this.caption)};
      backcolor v_cor;                       // NAO ENTENDI POR QUE NAO ESTA MUDANDO A COR DA LABEL
      centeralign
*      msginfo(v_cor)   // COLOQUEI PARA VER SE ESTA PASSANDO  A COR PRA O BACKCOLOR
      AADD(aApto,{ltrim(apt),sit})
      skip
      col += 50
   end do
   if (EOF())
      exit
   endif
   lin += 40
next i
Return

return Nil

**********************************
Func Clicou(cCap)
nAp:=ASCAN(aApto,{|e| e[1]==cCap})
If aApto[nAp,2] =="LI"
  If msgyesno('deseja mudar a situaçao?','Apto: '+cCap+' Sit: '+aApto[nAp,2])
    Go Top
    Seek StrZero(Val(cCap),3)
    Replace sit with "OC"
    aApto[nAp,2] := "OC"
  Endif
Endif


ai vem as duvidas eu acho que as realmente finais o que eu pude adiantar usando os codigos clipper / harbour fiz sem dificuldades mais quando mistura com a minigui ai vem a minha dificuldade

1º assim que mudar a sit o backcolor mudar tambem mudando a cor dele
isso é tudo que preciso pra dar continuidade ao resto do codigo

a funçao clicou ela esta perfeita com ela consigo ir pra outras funçoes mais nao consigo mudar a cor do backcolor para que o operador indentifique a nova situaçao
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes

Próximo



Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 6 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro