Clipper On Line • Ver Tópico - HMG - LISTAR NOME DE CAMPOS DURANTE EXECUÇÃO RUNTIME

HMG - LISTAR NOME DE CAMPOS DURANTE EXECUÇÃO RUNTIME

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

HMG - LISTAR NOME DE CAMPOS DURANTE EXECUÇÃO RUNTIME

Mensagempor microvolution » 02 Jan 2021 14:59

Boa tarde!
Tô aqui com uma dúvida.
Estou fazendo uma função genérica para pegar o conteúdo de um certo DBF/NTX e preencher uma ou várias matrizes com o conteúdo completo do DBF, tais como:

NOME_CAMPO
TIPO (N/C/D)
CONTEÚDO

Então pensei um do while .not. eof()
Dentro do WHILE pretendo usar um FOR/NEXT len NOME_CAMPO pra preencher o que precisamos.

Mas, estou com dúvida em quais funções internas da linguagem uso pra saber as informações acima.

Se alguém souber, agradecido ficarei!

Feliz 2021!
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
microvolution
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1175
Data de registro: 02 Set 2011 22:17
Curtiu: 59 vezes
Mens.Curtidas: 17 vezes

HMG - LISTAR NOME DE CAMPOS DURANTE EXECUÇÃO RUNTIME

Mensagempor alxsts » 02 Jan 2021 15:29

Olá!

LOCAL i, nFCount

   USE .... // abrir arquivo
   DbGoTop ()

   nFCount := FCount ()

   WHILE!   Eof ()
      For i := 1 To nFCount
         ? FName (i) // nome do campo
        ? Valtype ( FieldGet (i) ) // tipo
         ?  Transform (FieldGet (i), "" ) // conteúdo
      Next
      DbSkip ()
   Enddo

   DbCloseArea ()

   RETURN
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

HMG - LISTAR NOME DE CAMPOS DURANTE EXECUÇÃO RUNTIME

Mensagempor microvolution » 02 Jan 2021 17:54

alxsts escreveu:nFCount := FCount ()
tinha pensado em algo como DBSTRUCT()... aí não lembrava de jeito nenhum do FCOUNT()
vou testar e darei o retorno a todos(as)!
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
microvolution
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1175
Data de registro: 02 Set 2011 22:17
Curtiu: 59 vezes
Mens.Curtidas: 17 vezes

HMG - LISTAR NOME DE CAMPOS DURANTE EXECUÇÃO RUNTIME

Mensagempor microvolution » 02 Jan 2021 22:32

microvolution escreveu:vou testar e darei o retorno a todos(as)!
fiz assim:
   WHILE!   Eof ()
      For i := 1 To nFCount
         add item {FieldName(i),Transform (FieldGet (i),"")} to grid_pesquisa of form_pesquisa
      Next
      DbSkip ()
   Enddo

Só que quero exportar isso para uma grid e simular um tbrowse... só que gera n_erros...
Quero que os cabeçalhos contenham o nome do campo e nas linhas abaixo os conteúdos em formato de planilha

Talvez se os moderadores mudassem este tópico para a MINIGUI facilitaria pra outros...
do jeito que está acima, tá muito estranho, parece que só vejo 2 colunas que são os campos do DBF. Mas, se o DBF tiver 3 campos, e aí?
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
microvolution
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1175
Data de registro: 02 Set 2011 22:17
Curtiu: 59 vezes
Mens.Curtidas: 17 vezes

LISTAR NOME DE CAMPOS DURANTE EXECUÇÃO RUNTIME

Mensagempor alxsts » 03 Jan 2021 02:55

Olá!

microvolution escreveu:Talvez se os moderadores mudassem este tópico para a MINIGUI facilitaria pra outros...
mas já está ... você colocou HMG.

Não mexo com MinGUI mas o fórum tem vários exemplos. Isto sem falar na pasta de exemplos da MiniGUI, que eu sei que existe. É só procurar...

O código abaixo está neste tópico

      DEFINE GRID Grid_1
         PARENT Form_Main
         ROW 140
         COL 405
         WIDTH  360
         HEIGHT 200
         HEADERS {"Cod","Descricao","Cobrar S/N","Valor"}
         COLUMNCONTROLS { {'TEXTBOX','NUMERIC','9'},{'TEXTBOX','CHARACTER','AAAAAAAAAAAAAAAAAAAA'},{'TEXTBOX','CHARACTER','A'},{'TEXTBOX','NUMERIC','9.99'} }
         WIDTHS {40,200,80,55}
      ITEMS aRows  // se optar por usar ITEMS não pode usar ROWSOURCE e COLUMNFIELDS
         // ROWSOURCE "DCI10035" // abre os campos da tabela DBF dentro do GRID automaticamente  // campos da tabela DBF - se usar este tem q usar em conjunto o COLUMNFIELDS e não pode usar ITEMS aROWS
         // COLUMNFIELDS { "DCI10035->DESCRICAO", "DCI10035->SIMNAO", "DCI10035->VALOR" } // campos da tabela DBF - se usar este tem q usar em conjunto o ROWSORCE e não pode usar ITEMS aROWS
         CELLNAVIGATION .T.
         DYNAMICFORECOLOR { fColor , fColor, fColor, fColor, fColor } // muda as cores de frente dinamicamente uma linha após a a outra
      DYNAMICBACKCOLOR { bColor , bColor , bColor , bColor , bColor , bColor } // muda as cores de fundo dinamicamente uma linha após a aoutra 7/2/19w
         ALLOWEDIT .T. // se estiver em .T. não funciona o ONDBLCLICK e funciona o COLUMNWHEN
         // COLUMNVALID 1
         // NOLINES .T. // desaparece as linhas de grade em .T.
       JUSTIFY { BROWSE_JTFY_LEFT, BROWSE_JTFY_LEFT, BROWSE_JTFY_CENTER, BROWSE_JTFY_CENTER }   
         // COLUMNWHEN  { { || This.CellValue <> nil } , Nil , Nil , Nil }
      COLUMNWHEN { { || .F. } ,  { || .F. } , { || .T. } ,  { || .T. }  } // trava/destrava colunas pra serem editadas. Mas, o ALLOWEDIT tem que estar em .T. pra funcionar
         // LOCKCOLUMNS 2
      // VALUE { 1 , 4 }
         // ONDBLCLICK MOVE_GRID_ARQUIVO () // duplo click do mouse aciona esta função
         // ONCHANGE MOVE_GRID_ARQUIVO () // apenas um click do mouse aciona esta função
      // EDIT
      // ALLOWAPPEND .T. // pra usar esse tem q usar o ROWSOURCE senão não funciona
      // ALLOWDELETE .T. // pra usar esse tem q usar o ROWSOURCE senão não funciona
         ONSAVE OnSaveTest()
      END GRID


No teu caso, use ROWSOURCE com o nome da tua tabela. Em HEADERS coloque os nomes dos campos ou cabeçalhos que desejar. Em COLUMNFIELDS coloque o nome dos campos que deseja exibir. Analise as outras opções e ajuste conforme sua necessidade.

Edit:
Respondendo ao que pede o título do post, use o código abaixo:
FUNCTION GetFieldNames()

   LOCAL aFieldNames := {}, nFieldCount, nPos

   USE SuaTabela SHARED NEW
   
   nFieldCount := FCount()
   
   For nPos := 1 To nFieldCount
      AAdd( aFieldNames, FieldName( nPos ) )       
   Next

RETURN aFieldNames


Esta função pode ser usada em HEADERS na definição do grid
HEADERS GetFieldNames()
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

HMG - LISTAR NOME DE CAMPOS DURANTE EXECUÇÃO RUNTIME

Mensagempor Jairo Maia » 03 Jan 2021 13:05

Olá Alexandre,

alxsts escreveu:mas já está ... você colocou HMG.
Alexandre, agora está porque ele pediu para mudar para MiniGui. Foi trocado DBF do título por HMG para deixar claro a todos que ele está usando HMG. HMG usa MiniGui.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

HMG - LISTAR NOME DE CAMPOS DURANTE EXECUÇÃO RUNTIME

Mensagempor alxsts » 03 Jan 2021 22:22

Olá!

Me perdoem. Eu não percebi a mudança no título do post. Valeu @Jairo.
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

HMG - LISTAR NOME DE CAMPOS DURANTE EXECUÇÃO RUNTIME

Mensagempor JoséQuintas » 03 Jan 2021 22:40

É que as LIBs causam confusão até nisso...

HMG é a MINIGUI original
HMG Extended, chamam de MINIGUI ou HMG
OOHG, chamam de OOHG, ou HMG orientada a objeto, ou minigui orientada a objeto

As três podem ser consideradas minigui ou hmg, e isso causa confusão.
Até a sintaxe.... pode ser a mesma, mas com menos ou mais opções.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18015
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

HMG - LISTAR NOME DE CAMPOS DURANTE EXECUÇÃO RUNTIME

Mensagempor microvolution » 04 Jan 2021 14:20

JoséQuintas escreveu:OOHG, chamam de OOHG, ou HMG orientada a objeto, ou minigui orientada a objeto
mas afinal, qual diferença de ser OOP?
pois todas as 3 não são OOP?
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
microvolution
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1175
Data de registro: 02 Set 2011 22:17
Curtiu: 59 vezes
Mens.Curtidas: 17 vezes

HMG - LISTAR NOME DE CAMPOS DURANTE EXECUÇÃO RUNTIME

Mensagempor JoséQuintas » 04 Jan 2021 16:18

microvolution escreveu:pois todas as 3 não são OOP?


Não, mas simulam isso.
Mas isso fica pra outro post.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18015
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

HMG - LISTAR NOME DE CAMPOS DURANTE EXECUÇÃO RUNTIME

Mensagempor microvolution » 04 Jan 2021 17:07

JoséQuintas escreveu:Mas isso fica pra outro post.
... aguardando...
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
microvolution
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1175
Data de registro: 02 Set 2011 22:17
Curtiu: 59 vezes
Mens.Curtidas: 17 vezes




Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 7 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