cor no tbrowse

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

cor no tbrowse

Mensagem por JoséQuintas »

cjp escreveu:Uma outra dúvida, por favor: tentei colocar o campo PONTOS também em vermelho na mesma linha do total, mas sei como fazer isto.
Do mesmo jeito que o total, aí está procurando pela palavra "TOTAL". Ela existe?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

cor no tbrowse

Mensagem por JoséQuintas »

Novamente:
A função para o browse, você chamou de BROWSEADO2()
É ela que vai usar no aplicativo.

Se está dizendo que vai usar a BROWSEADO()....
foi tempo perdido, vai acabar fazendo tudo igual antes.

Está querendo fazer o browse partindo de um comando SQL não importa de onde vém ou pra que serve.
Isso não vai ter solução nunca.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

cor no tbrowse

Mensagem por cjp »

Se está dando erro de compilação, a mensagem da compilação já deve estar dizendo do que se trata.
Sim, eu esqueci de anexar o erro.

O erro é de ambiguos reference.

Eu já testei até trocar o nome da variável, mas o erro permanece.
Anexos
tela.png
Inacio de Carvalho Neto
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

cor no tbrowse

Mensagem por JoséQuintas »

Legal.
Isso é a variável dos GETs, que não fica visível nos fontes.
O correto é aonde tem gets, declarar essa variável.

Código: Selecionar todos

LOCAL GetList := {}
Assim, os GETs de um fonte não interferem nos gets de outro fonte.

Esse aviso só aparece quando usamos a compilação -w3 -es2

Se olhar essas linhas, vão ter GET/READ/etc.
Se por acaso for CLEAR... então é usar o correto pra limpar tela, que é CLS.
O CLEAR, além de limpar a tela, também limpa os gets, o que acaba fazendo uso da variável GetList.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

cor no tbrowse

Mensagem por JoséQuintas »

Pra curiosidade, a tradução dos comandos, em harbour\include\std.ch

Código: Selecionar todos

#command CLS                        => Scroll() ; SetPos( 0, 0 )
#command CLEAR SCREEN               => CLS
#command CLEAR GETS     => ReadKill( .T. ) ; GetList := {} ; ( GetList )
#command CLEAR                   => CLEAR SCREEN ; CLEAR GETS
Pode parecer uma coisa à toa, mas.... vai fazer diferença no tamanho do EXE e na velocidade.
Menos comandos, EXE menor e mais rápido.
E se fossem adaptados pra ambiente GUI... daria certo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

cor no tbrowse

Mensagem por cjp »

Esse problema foi resolvido, mas agora, prosseguindo na elaboração da função de usuário, estou com outro problema: está dando o mesmo erro "ambiguous reference 'COD'", nestas linhas:

Código: Selecionar todos

   private cod

...	  
	  cod=oRs:Fields("id"):Value

...
		 exqado("update pontos set pontos="+alltrim(str(nPtx))+" where id="+alltrim(str(cod)))
	  
Não consegui achar nenhum erro aí.


Uma outra dúvida, por favor: tentei colocar o campo PONTOS também em vermelho na mesma linha do total, mas sei como fazer isto.

Tentei o óbvio:

Código: Selecionar todos

        { "PONTOS",     { || oRs:ToStr( "PONTOS", 6 ) }, { | x | If( At( "TOTAL ", Upper( x ) ) > 0, { 5, 5 }, { 1, 2 } ) } }, ;



Mas assim não funcionou.

Como ainda não entendi esse codeblock, não soube adaptar. Pode me ajudar?
Inacio de Carvalho Neto
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

cor no tbrowse

Mensagem por JoséQuintas »

É o mesmo erro que antes, falta declarar variável.

PRIVATE não declara variáveis, nem PUBLIC.
Se quiser usar private ou public, vai ter que declarar no início dos fontes as variáveis private/public como MEMVAR

Código: Selecionar todos

MEMVAR Cod
Se retirar da compilação o -w3 -es2 não precisa disso, mas pode passar muito erro.
De qualquer forma, volta ao seu jeito de programar de antes.

Isso também é ativado por #pragma -w3 no fonte.

Agora decide:
Ou passa a trabalhar com -w3 -es2, ou volta como era antes.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

cor no tbrowse

Mensagem por JoséQuintas »

Reforçar de novo:

Se me lembro bem, o browse atual recebe comando SQL, e pesquisa servidores diferentes, e bancos diferentes.

É pra CADA rotina ter seu próprio browse, chamando o ADO2()

Se for o caso.... crie funções separadas pra CADA browse.

Código: Selecionar todos

FUNCTION BrowseAcoesPraSelecionar()

   AbreBanco()
   FazSelect()
   aCamposList := ???
   BrowseADO2( aCamposList, ??? )
Se mantiver tudo no BrowseADO(), vai continuar sendo uma salada dentro do browseado().

Pense assim: CADA browse é uma tela diferente, então CADA browse precisa de sua rotina própria.
Apenas BrowseADO2() vai ser uma rotina comum, pra usar em todas essas suas rotinas.

Como vai fazer pra gerenciar os browses em vários servidores... isso já é outra história...
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

cor no tbrowse

Mensagem por cjp »

Esse problema do cod foi resolvido, obrigado. Agora acho que consigo fazer a função de usuário pra esta função.
Não tenho mais vários provedores.
Quanto à questão de tornar esta função genérica da forma correta, vamos ver se eu entendi: a função nova terá uma parte genérica e uma parte específica para cada função, correto?
Entendi que a função de usuário é uma das partes específicas, correto?
Agora quanto à tbrowseado ser genérica ou específica, estou em dúvida.
Atualmente esta nova função está assim: começa com a tbrowseado(), com um só parâmetro recebido: a query a ser executada. Esta faz a conexão (oRs), tem a lista de campos (aCamposList) e chama a tbrowseado2(), com os seguintes parâmestros: oRs, aCamposList e um code block com oBrowse, nkey, a função de usuário (RotinaUsuario). Então, me parece que esta tbrowseado() não é da parte genérica, e sim da parte específica, correto?
Então, a parte genérica seria a tbrowseado2() né?
Enfim, parece que eu estou começando a entender como funciona este tbrowse.
Inacio de Carvalho Neto
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

cor no tbrowse

Mensagem por JoséQuintas »

Sim, isso mesmo.
tbrowseado2() é a genérica.

O que vai ser rotina específica:

- define comando SQL
- faz pesquisa
- criar as colunas que interessam para o browse
- cria a rotina de usuário específica

A que define a informação envolvida, que define a tela, e que define o funcionamento/recursos
E isso equivale ao que é normal: cada tela é um módulo

Não tem que desviar tudo pra tbrowseADO(), só por causa de executar SQL.
Deve fazer o contrário, deixar a execução disponível nos módulos.
Exemplo:

Código: Selecionar todos

Rs := ExecutaSQL( "SELECT ...." )
Desta forma, elimina toda parte que envolve servidor de cada módulo, sem mover a parte específica do módulo.
Cada módulo com sua parte específica, mais fácil fazer manutenção.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

cor no tbrowse

Mensagem por cjp »

Não sei se entendi esta parte.
Eu poderia transferir para a tbrowseado2() a conexão (oCN), o open e a execução (oRs)? Se for isso, como ficaria o do while da tbrowseado()? Passaria também para a tbrowseado2()? Mudaria os parâmetros para passar da tbrowseado() para a tbrowseado2()?
Queria definir bem isso para poder fazer em definitivo a parte genérica, para então passar a usar ela pra tudo.
Reitero meu pedido anterior da mudança da cor da coluna pontos também, por favor.
Inacio de Carvalho Neto
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

cor no tbrowse

Mensagem por JoséQuintas »

NÃO.
A única rotina genérica é o tratamento de browse, é a browseado2().
Abrir conexão não tem a ver com ela.
Se ela recebe o recordset (oRS), e a lista de campos validada, precisa estar tudo aberto e comando executado pra ela funcionar.

Se todo esse trabalho é pra tirar isso da sua rotina velha, perguntar se vai colocar lá dentro de novo..... é froyds...

Sobre a cor é só isso. Verifique se o iif() é válido.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

cor no tbrowse

Mensagem por cjp »

Se todo esse trabalho é pra tirar isso da sua rotina velha, perguntar se vai colocar lá dentro de novo..... é froyds...
Não sei se eu não te entendi, ou vc não me entendeu. Mas eu estou do novo browse que fizemos aqui, não da minha função velha.
A ideia seria transferir para a tbrowseado2(), a genérica, o máximo de informações possíveis, para deixar as funções específicas o mais enxutas possíveis.
Por isso pensei se não seria possível deixar a conexão nesta tbrowseado2(), pra ficar genérica.
Se não é possível, tudo bem, paciência.

Sobre a cor é só isso. Verifique se o iif() é válido.
Não entendi esta parte.

Estava me referindo a esta dúvida:
Uma outra dúvida, por favor: tentei colocar o campo PONTOS também em vermelho na mesma linha do total, mas sei como fazer isto.

Tentei o óbvio:

{ "PONTOS", { || oRs:ToStr( "PONTOS", 6 ) }, { | x | If( At( "TOTAL ", Upper( x ) ) > 0, { 5, 5 }, { 1, 2 } ) } }, ;

Mas assim não funcionou.

Como ainda não entendi esse codeblock, não soube adaptar. Pode me ajudar?
Inacio de Carvalho Neto
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

cor no tbrowse

Mensagem por JoséQuintas »

cjp escreveu:Não sei se eu não te entendi, ou vc não me entendeu. Mas eu estou do novo browse que fizemos aqui, não da minha função velha.
A ideia seria transferir para a tbrowseado2(), a genérica, o máximo de informações possíveis, para deixar as funções específicas o mais enxutas possíveis.
Por isso pensei se não seria possível deixar a conexão nesta tbrowseado2(), pra ficar genérica.
Se não é possível, tudo bem, paciência.
Mover conexão, criação da lista de campos, rotinas de usuário, etc.
Centenas de rotinas diferentes no mesmo fonte.
O que tem de genérico nisso?
cjp escreveu:Estava me referindo a esta dúvida:
Eu também, se a outra funciona, verifique se esse iif() é válido.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

cor no tbrowse

Mensagem por JoséQuintas »

Fico pensando se não seria mais fácil colocar o que está querendo dentro do próprio banco de dados, como VIEW ou PROCEDURE.
E o próprio banco retornar a configuração do browse.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder