Página 2 de 2

TBROWSE

Enviado: 03 Jan 2021 23:45
por cjp
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?

TBROWSE

Enviado: 04 Jan 2021 02:04
por alxsts
Olá!
JoséQuintas escreveu:Se servir, pode apenas alterar o SELECT pra trazer tudo pronto do jeito que quer.
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...
cjp escreveu:Poderia me dizer como fazer isto diretamente no select?
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.

Segue exemplo usando MariaDB:
Capturar.JPG
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...

TBROWSE

Enviado: 04 Jan 2021 10:12
por JoséQuintas
alxsts escreveu: Note que PadC() é uma combinação de PadR() com PadL() (ou vice-versa),
Não sei como o resultado aí deu certo.
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...

TBROWSE

Enviado: 04 Jan 2021 10:53
por cjp
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

TBROWSE

Enviado: 04 Jan 2021 14:50
por alxsts
Olá!
cjp escreveu:Uso banco de dados MySQL, com MariaDB.
Não entendi. Ou usa um ou outro. Apesar de o MariaDB ser oriundo do MySQL, são ferramentas diferentes...

A resposta está no link que você mesmo postou:
Capturar.JPG
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.

TBROWSE

Enviado: 04 Jan 2021 22:51
por cjp
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.

TBROWSE

Enviado: 13 Jun 2021 23:33
por cjp
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?

TBROWSE

Enviado: 14 Jun 2021 10:46
por alxsts

TBROWSE

Enviado: 16 Jun 2021 23:48
por cjp
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?

TBROWSE

Enviado: 17 Jun 2021 01:14
por alxsts
Olá!
cjp escreveu:Estudei a classe Tbrowse no NG, mas não achei nada a respeito.
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: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().
Também não vi alguma solicitação neste sentido. A não ser que a referência seja
quero algo como o modo/coluna
- A questão da coluna está resolvida.
- 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

TBROWSE

Enviado: 17 Jun 2021 01:34
por cjp
Sim, era isso que eu queria. Muito obrigado.