TBROWSE

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

Moderador: Moderadores

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

TBROWSE

Mensagem 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?
Inacio de Carvalho Neto
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

TBROWSE

Mensagem 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...
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

TBROWSE

Mensagem 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...
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:

TBROWSE

Mensagem 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
Anexos
tela.png
Inacio de Carvalho Neto
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

TBROWSE

Mensagem 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.
[]´s
Alexandre Santos (AlxSts)
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

TBROWSE

Mensagem 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.
Anexos
tela2.png
tela2.png (6.11 KiB) Exibido 1986 vezes
tela.png
tela.png (9.25 KiB) Exibido 1986 vezes
Inacio de Carvalho Neto
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

TBROWSE

Mensagem 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?
Inacio de Carvalho Neto
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

TBROWSE

Mensagem por alxsts »

[]´s
Alexandre Santos (AlxSts)
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

TBROWSE

Mensagem 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?
Inacio de Carvalho Neto
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

TBROWSE

Mensagem 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
[]´s
Alexandre Santos (AlxSts)
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

TBROWSE

Mensagem por cjp »

Sim, era isso que eu queria. Muito obrigado.
Inacio de Carvalho Neto
Responder