TBROWSE
Moderador: Moderadores
TBROWSE
Sem dúvida seria muito mais fácil fazer isto pelo próprio select, se isso for possível, já que só preciso disso para alguns campos de apenas um select.
Entretanto, pesquisei bastante, e não achei nada que funcione como um padc no select.
Também fiz vários testes, como select center(campo) from tabela, com várias variantes.
Poderia me dizer como fazer isto diretamente no select?
Entretanto, pesquisei bastante, e não achei nada que funcione como um padc no select.
Também fiz vários testes, como select center(campo) from tabela, com várias variantes.
Poderia me dizer como fazer isto diretamente no select?
Inacio de Carvalho Neto
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
TBROWSE
Olá!
Segue exemplo usando MariaDB:
Note que independentemente do tipo de dados do campo na tabela, o resultado no SELECT var ser string, e o mesmo vai ocorrer com a coluna do grid...
Não pensei nisto mas, é um caminho, apesar de SQL servir para armazenar e recuperar dados e não para formatar dados. Mas, o tópico começou com TBrowse e foi para ADO / SQL. Confunde um pouco...JoséQuintas escreveu:Se servir, pode apenas alterar o SELECT pra trazer tudo pronto do jeito que quer.
Não sei qual banco usa mas creio que todos tenham funções semelhantes de manipulação de strings. Até o DBF tem. Note que PadC() é uma combinação de PadR() com PadL() (ou vice-versa), todas estas funções xBase. Nos bancos de dados relacionais, PadL chama-se LPAD() e PadR() chama-se RPAD(). Não existe equivalente a PadC() pelo motivo colocado acima.cjp escreveu:Poderia me dizer como fazer isto diretamente no select?
Segue exemplo usando MariaDB:
Note que independentemente do tipo de dados do campo na tabela, o resultado no SELECT var ser string, e o mesmo vai ocorrer com a coluna do grid...
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
TBROWSE
Não sei como o resultado aí deu certo.alxsts escreveu: Note que PadC() é uma combinação de PadR() com PadL() (ou vice-versa),
Considerando que PADR( "A", 20 ) deixa a string com 20 caracteres, porque acrescenta espaços pra ficar com 20 caracteres...
PADL( PADR( "A", 20 ), 20 ), retornaria a mesma coisa, já que a string com 20 caracteres não teria modificaçã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/
TBROWSE
Uso banco de dados MySQL, com MariaDB.
Aqui não funcionou. Dá erro de incorreto número de argumentos na LPAD. Veja o anexo.
Pesquisei a LPAD(), parece que ela não serve para o que pretendo. Veja: https://www.w3schools.com/sql/func_mysql_lpad.asp
Aqui não funcionou. Dá erro de incorreto número de argumentos na LPAD. Veja o anexo.
Pesquisei a LPAD(), parece que ela não serve para o que pretendo. Veja: https://www.w3schools.com/sql/func_mysql_lpad.asp
Inacio de Carvalho Neto
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
TBROWSE
Olá!
A resposta está no link que você mesmo postou:
Na versão do MariaDB que usei acima (10.5.8-MariaDB), o terceiro parâmetro não é obrigatório mas é obrigatório na versão que você usou (não sei se MySQL ou MariaDB).
Acrescente na tua consulta um terceiro parâmetro, tanto na LPAD() quanto na RPAD(). Pode ser um ' ' (espaço em branco) para o preenchimento.
Não entendi. Ou usa um ou outro. Apesar de o MariaDB ser oriundo do MySQL, são ferramentas diferentes...cjp escreveu:Uso banco de dados MySQL, com MariaDB.
A resposta está no link que você mesmo postou:
Na versão do MariaDB que usei acima (10.5.8-MariaDB), o terceiro parâmetro não é obrigatório mas é obrigatório na versão que você usou (não sei se MySQL ou MariaDB).
Acrescente na tua consulta um terceiro parâmetro, tanto na LPAD() quanto na RPAD(). Pode ser um ' ' (espaço em branco) para o preenchimento.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
TBROWSE
Quis dizer que uso o MySQL, usando o conector do MariaDBF.
Eu entendi no link que postei que faltaria um parâmetro obrigatório. Só quis dizer que essa forma parece não resolver o problema.
Acrescentei o parâmetro, como vc sugeriu, e agora os dados estão como NULL. Quando consulto sem o RPAD e o LPAD, os dados aparecem corretamente.
Eu entendi no link que postei que faltaria um parâmetro obrigatório. Só quis dizer que essa forma parece não resolver o problema.
Acrescentei o parâmetro, como vc sugeriu, e agora os dados estão como NULL. Quando consulto sem o RPAD e o LPAD, os dados aparecem corretamente.
- Anexos
-
- tela2.png (6.11 KiB) Exibido 1986 vezes
-
- tela.png (9.25 KiB) Exibido 1986 vezes
Inacio de Carvalho Neto
TBROWSE
Uma outra dúvida sobre Tbrowse, com ADO (se bem que, ao que me parece, a questão é exclusiva de Tbrowse):
Gostaria de saber como obter a referência à coluna em foco no Tbrowse.
Em suma, quero algo como o modo/coluna que uso em funções de usuário do dbedit().
Estudei a classe Tbrowse no NG, mas não achei nada a respeito.
Alguém pode me ajudar?
Gostaria de saber como obter a referência à coluna em foco no Tbrowse.
Em suma, quero algo como o modo/coluna que uso em funções de usuário do dbedit().
Estudei a classe Tbrowse no NG, mas não achei nada a respeito.
Alguém pode me ajudar?
Inacio de Carvalho Neto
TBROWSE
De fato, colPos() resolve parte do meu problema.
Mas não vi no tópico em questão se seria possível pegar também o nome da coluna posicionada. É possível?
Mas não vi no tópico em questão se seria possível pegar também o nome da coluna posicionada. É possível?
Inacio de Carvalho Neto
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
TBROWSE
Olá!
- A classe TBrowse() não tem esta opção "Modo".
- Nome da coluna posicionada: o nome da coluna não é possível saber pois as colunas não são nomeadas. Se estiver se referindo ao cabeçalho de coluna, é possível recuperar da mesma forma usada para recuperar a coluna atual:
NG é documentação do Cl*pper. Se você usa Harbour, estude a documentação do Harbour, embora não seja abundante. A documentação do Harbour possivelmente mostre todas as funções e comandos do Cl*pper mas o inverso não é verdadeiro. Para estudos, baixe o documento xHarbour Language Reference Guide (chm file). É xHarbour mas é mais compatível com Harbour que com Cl*pper...cjp escreveu:Estudei a classe Tbrowse no NG, mas não achei nada a respeito.
Também não vi alguma solicitação neste sentido. A não ser que a referência sejacjp escreveu:Mas não vi no tópico em questão se seria possível pegar também o nome da coluna posicionada. É possível?
Em suma, quero algo como o modo/coluna que uso em funções de usuário do dbedit().
- A questão da coluna está resolvida.quero algo como o modo/coluna
- A classe TBrowse() não tem esta opção "Modo".
- Nome da coluna posicionada: o nome da coluna não é possível saber pois as colunas não são nomeadas. Se estiver se referindo ao cabeçalho de coluna, é possível recuperar da mesma forma usada para recuperar a coluna atual:
Código: Selecionar todos
oTBrowse:getColumn(nCol):heading[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
