Do mesmo jeito que o total, aí está procurando pela palavra "TOTAL". Ela existe?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.
cor no tbrowse
Moderador: Moderadores
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
cor no tbrowse
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
cor no tbrowse
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.
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/
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/
cor no tbrowse
Sim, eu esqueci de anexar o erro.Se está dando erro de compilação, a mensagem da compilação já deve estar dizendo do que se trata.
O erro é de ambiguos reference.
Eu já testei até trocar o nome da variável, mas o erro permanece.
Inacio de Carvalho Neto
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
cor no tbrowse
Legal.
Isso é a variável dos GETs, que não fica visível nos fontes.
O correto é aonde tem gets, declarar essa variável.
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.
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 := {}
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
cor no tbrowse
Pra curiosidade, a tradução dos comandos, em harbour\include\std.ch
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.
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
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/
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/
cor no tbrowse
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:
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:
Mas assim não funcionou.
Como ainda não entendi esse codeblock, não soube adaptar. Pode me ajudar?
Código: Selecionar todos
private cod
...
cod=oRs:Fields("id"):Value
...
exqado("update pontos set pontos="+alltrim(str(nPtx))+" where id="+alltrim(str(cod)))
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
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
cor no tbrowse
É 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
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.
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
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
cor no tbrowse
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.
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...
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, ??? )
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/
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/
cor no tbrowse
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.
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
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
cor no tbrowse
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:
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.
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 ...." )
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/
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/
cor no tbrowse
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.
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
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
cor no tbrowse
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.
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/
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/
cor no tbrowse
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.Se todo esse trabalho é pra tirar isso da sua rotina velha, perguntar se vai colocar lá dentro de novo..... é froyds...
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.
Não entendi esta parte.Sobre a cor é só isso. Verifique se o iif() é válido.
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
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
cor no tbrowse
Mover conexão, criação da lista de campos, rotinas de usuário, etc.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.
Centenas de rotinas diferentes no mesmo fonte.
O que tem de genérico nisso?
Eu também, se a outra funciona, verifique se esse iif() é válido.cjp escreveu:Estava me referindo a esta dúvida:
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
cor no tbrowse
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.
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/
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/
