[Resolvido] Alinha dados no banco de dados
Moderador: Moderadores
-
gilsonpaulo
- Usuário Nível 3

- Mensagens: 135
- Registrado em: 02 Fev 2008 11:30
- Localização: Quatro Barras
[Resolvido] Alinha dados no banco de dados
Ola a todos.
Estou precisando alinhar a direita e centralizar os dados no banco de dados (dbf).
Alguem poderia me dar uma luz?
---
Nota da Moderação (Maligno):
O presente tópico, apesar do assunto tratar de manipulação de banco de dados, teve de ser movido da seção "Banco de dados", uma vez que, na realidade, o âmago da questão está relacionado apenas à aplicação da linguagem XBase, supostamente vinculada à ferramenta Clipper.
Estou precisando alinhar a direita e centralizar os dados no banco de dados (dbf).
Alguem poderia me dar uma luz?
---
Nota da Moderação (Maligno):
O presente tópico, apesar do assunto tratar de manipulação de banco de dados, teve de ser movido da seção "Banco de dados", uma vez que, na realidade, o âmago da questão está relacionado apenas à aplicação da linguagem XBase, supostamente vinculada à ferramenta Clipper.
Re: Alinha dados no banco de dados
Não entendi exatamente o que você pretende. Poderia explicar melhor? Alinhar onde? Algum relatório? Textos dentro do banco de dados?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
-
gilsonpaulo
- Usuário Nível 3

- Mensagens: 135
- Registrado em: 02 Fev 2008 11:30
- Localização: Quatro Barras
Re: Alinha dados no banco de dados
Dentro do banco, ao gravar os dados eles devem ficar alinhado a diretira.
É que estou fazendo uma rotina de conversão de um sistema clipper para outro sistema, e os dados tem que estar alinhados a direita no banco de dados.
Os campos são caracateres, por padrão ficam alinhados a esquerda.
É que estou fazendo uma rotina de conversão de um sistema clipper para outro sistema, e os dados tem que estar alinhados a direita no banco de dados.
Os campos são caracateres, por padrão ficam alinhados a esquerda.
Re: Alinha dados no banco de dados
Entendi. Nesse caso você só precisa de uma rotina simples que "varra" todo o banco de dados para a troca das strings. Um exemplo simples:
Sendo <nome_campo> e <tamanho_campo> dados conhecidos, fica bem fácil: primeiro ele remove os espaços à direita e em seguida, preenche a string com espaços à esqueda, até a largura do campo. Se não for exatamente o que quer, ainda assim o conceito é esse. Basta ajustar para suas necessidades.
Código: Selecionar todos
dbEval(||<nome_campo> := PadL(RTrim(<nome_campo>),<tamanho_campo>)})[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
-
gilsonpaulo
- Usuário Nível 3

- Mensagens: 135
- Registrado em: 02 Fev 2008 11:30
- Localização: Quatro Barras
-
gilsonpaulo
- Usuário Nível 3

- Mensagens: 135
- Registrado em: 02 Fev 2008 11:30
- Localização: Quatro Barras
Re: Alinha dados no banco de dados
Maligno, testei com sua função mas não deu certo.
Vai um trecho do código:
Vai um trecho do código:
Código: Selecionar todos
select fornec
go top
do while .not. eof()
select forbas
go top
seek fornec->cgc
if found()
if rlock()
forbas->nr_cgcpf:= strtran(strtran(strtran(fornec->cgc,"."),"-"),"/")
bla bla bla
unlock
endif
else
append blank
if rlock()
forbas->nr_cgcpf:= strtran(strtran(strtran(fornec->cgc,"."),"-"),"/")
bla bla bla
unlock
endif
endif
select fornec
skip
enddo
Editado pela última vez por gilsonpaulo em 30 Out 2009 18:23, em um total de 1 vez.
Re: Alinha dados no banco de dados
Só com esse código não dá pra entender nada.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
-
gilsonpaulo
- Usuário Nível 3

- Mensagens: 135
- Registrado em: 02 Fev 2008 11:30
- Localização: Quatro Barras
Re: Alinha dados no banco de dados
Ja arrumado, falha humana.
Fiz assim para teste com sua função.
Mas não funcionou
Fiz assim para teste com sua função.
Código: Selecionar todos
select forbas
do while .not. eof()
dbEval({||forbas->nr_cgcpf := PadL(RTrim(forbas->nr_cgcpf),15)})
enddoRe: Alinha dados no banco de dados
E qual o efeito do teste que fez? O que exatamente deu errado?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
-
gilsonpaulo
- Usuário Nível 3

- Mensagens: 135
- Registrado em: 02 Fev 2008 11:30
- Localização: Quatro Barras
-
gilsonpaulo
- Usuário Nível 3

- Mensagens: 135
- Registrado em: 02 Fev 2008 11:30
- Localização: Quatro Barras
Re: Alinha dados no banco de dados
Resolvido,
Se não fosse pelos caracteres ".", "/" e "-" que estou retirando pelo strtran ficaria assim.:
Para funcionar com o seu exemplo Maligno, ficaria assim.:
help do vfp 5
Retorna uma seqüência de uma expressão preenchida com espaços ou caracteres até o comprimento especificado no lado direito, esquerdo ou nos dois lados.
Sintaxe
PADL(eExpressão, nTamanhoResultado [, cCaracterePreenchimento])
– Ou –
PADR(eExpressão, nTamanhoResultado [, cCaracterePreenchimento])
– Ou –
PADC(eExpressão, nTamanhoResultado [, cCaracterePreenchimento])
Tipos de retorno
Caractere
Argumentos
eExpressão Especifica a expressão a ser preenchida. Esta expressão pode ser de qualquer tipo, exceto expressão lógica ou um campo de figura ou geral.
nTamanhoResultado Especifica o número total de caracteres na expressão depois que ela foi preenchida.
cCaracterePreenchimento Especifica o valor a ser utilizado no preenchimento. Este valor é repetido, de acordo com a necessidade, para preencher a expressão até o número especificado de caracteres.
Se você omitir cCaracterePreenchimento, espaços (caractere ASCII 32) serão utilizados no preenchimento.
Comentários
PADL( ) insere preenchimento à esquerda, PADR( ) insere preenchimento à direita e PADC( ) insere preenchimento nos dois lados.
Exemplo.:
Fonte.: http://www.vfpbrasil.com.br/modules/new ... ic_id=1926
Valeu Maligno pela ajuda
Código: Selecionar todos
select fornec
go top
do while .not. eof()
select forbas
go top
seek fornec->cgc
if found()
if rlock()
forbas->nr_cgcpf:= pdal(strtran(strtran(strtran(fornec->cgc,"."),"-"),"/"),15," ")
bla bla bla
unlock
endif
else
append blank
if rlock()
forbas->nr_cgcpf:= pdal(strtran(strtran(strtran(fornec->cgc,"."),"-"),"/"),15," ")
bla bla bla
unlock
endif
endif
select fornec
skip
enddo
Se não fosse pelos caracteres ".", "/" e "-" que estou retirando pelo strtran ficaria assim.:
Código: Selecionar todos
select fornec
go top
do while .not. eof()
select forbas
go top
seek fornec->cgc
if found()
if rlock()
forbas->nr_cgcpf:= pdal(fornec->cgc),15," ")
bla bla bla
unlock
endif
else
append blank
if rlock()
forbas->nr_cgcpf:= pdal(fornec->cgc),15," ")
bla bla bla
unlock
endif
endif
select fornec
skip
enddo
Código: Selecionar todos
select forbas
go top
do while .not. eof()
dbEval({||forbas->nr_cgcpf := PadL(RTrim(forbas->nr_cgcpf),15," ")})
enddoRetorna uma seqüência de uma expressão preenchida com espaços ou caracteres até o comprimento especificado no lado direito, esquerdo ou nos dois lados.
Sintaxe
PADL(eExpressão, nTamanhoResultado [, cCaracterePreenchimento])
– Ou –
PADR(eExpressão, nTamanhoResultado [, cCaracterePreenchimento])
– Ou –
PADC(eExpressão, nTamanhoResultado [, cCaracterePreenchimento])
Tipos de retorno
Caractere
Argumentos
eExpressão Especifica a expressão a ser preenchida. Esta expressão pode ser de qualquer tipo, exceto expressão lógica ou um campo de figura ou geral.
nTamanhoResultado Especifica o número total de caracteres na expressão depois que ela foi preenchida.
cCaracterePreenchimento Especifica o valor a ser utilizado no preenchimento. Este valor é repetido, de acordo com a necessidade, para preencher a expressão até o número especificado de caracteres.
Se você omitir cCaracterePreenchimento, espaços (caractere ASCII 32) serão utilizados no preenchimento.
Comentários
PADL( ) insere preenchimento à esquerda, PADR( ) insere preenchimento à direita e PADC( ) insere preenchimento nos dois lados.
Exemplo.:
Código: Selecionar todos
m.campo = ' 1'
m.campo = padl(alltrim(campo),8,'0')
campo ficara assim '00000001'
Fonte.: http://www.vfpbrasil.com.br/modules/new ... ic_id=1926
Valeu Maligno pela ajuda
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Re: Alinha dados no banco de dados
Tenta desta forma:
Abraços
Código: Selecionar todos
dbEval({||forbas->nr_cgcpf := PadL(RTrim(forbas->nr_cgcpf),15," ")})Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
-
gilsonpaulo
- Usuário Nível 3

- Mensagens: 135
- Registrado em: 02 Fev 2008 11:30
- Localização: Quatro Barras
Re: Alinha dados no banco de dados
Obrigado Toledo, mas ja resolvi.
Valeu a juda de todos.
Tem como colocar resolvido no topíco?
Valeu a juda de todos.
Tem como colocar resolvido no topíco?
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Re: Alinha dados no banco de dados
Postamos ao mesmo tempo... 18:26
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Re: [Resolvido] Alinha dados no banco de dados
O código que fez com DBEval() está certo. Fiz até um teste aqui, bem semelhante:
Usei um arquivo de clientes qualquer, com um campo NOME. Alinhou os nomes à direita perfeitamente, como esperado.
A única coisa que vejo errada no seu código é essa malha DO. Ela é desnecessário, e se mantida, ficará num loop infinito. Se testou, deve ter travado.
Curiosidade: porque alinhar à direita um campo de CNPJ se esse número é muito mais útil alinhado à esquerda?
Código: Selecionar todos
use ("d:\nome.dbf") exclusive
dbEval({||field->nome := PadL(RTrim(field->nome),35)})A única coisa que vejo errada no seu código é essa malha DO. Ela é desnecessário, e se mantida, ficará num loop infinito. Se testou, deve ter travado.
Curiosidade: porque alinhar à direita um campo de CNPJ se esse número é muito mais útil alinhado à esquerda?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
