Fao um select em um banco mysql que a data guardada como aaaa-mm-dd
o resultado vai para um recordset , quando mando para um report a data vai 2014-08-30.
como inverto essa data para ficar no formato dd-mm-aaaa dentro do report ?
Muito Obrigado.
Fao um select em um banco mysql que a data guardada como aaaa-mm-dd
o resultado vai para um recordset , quando mando para um report a data vai 2014-08-30.
como inverto essa data para ficar no formato dd-mm-aaaa dentro do report ?
Muito Obrigado.
[quote=125929:@Cauby Osorio]Faço um select em um banco mysql que a data é guardada como aaaa-mm-dd
o resultado vai para um recordset , quando mando para um report a data vai 2014-08-30.
como inverto essa data para ficar no formato dd-mm-aaaa dentro do report ?
Muito Obrigado.[/quote]
Olá Cauby,
Tenho uma situação semelhante, mas em formulários. De qualquer modo, acredito que o princípio seja o mesmo, já que também uso o MySql.
1 - Eu crio variáveis representando as datas que quero tratar, recebidas do banco. No exemplo abaixo, myDataEmissao e myDataEntrada.
2 - Igualo os valores de cada uma aos valores correspondentes do recordSet retornado do banco de dados.
3 - Verifico se nenhum valor é nulo, e atribuo o valor das variáveis aos meus campos textField do formulário, no formato “ShortDate”, que já se encarrega de formatar do modo correto, de acordo com as configurações do sistema.
[code]
Dim myDataEmissao As Date
Dim myDataEntrada As Date
sql = "Select * from notasentradas where id = " + me.myId
rs = App.myDb.SQLSelect( sql )
If App.myDb.Error then
MsgBox "Erro carregando dados da NF: " + App.myDb.ErrorMessage
return
end if
//Tratamento para formatar as datas recebidas do banco de dados
myDataEmissao = rs.Field("dataEmissao").DateValue
myDataEntrada = rs.Field("dataEntrada").DateValue
//Data Emissao
If not (myDataEmissao is Nil) Then
me.txtDataEmissao.Text = myDataEmissao.ShortDate
End if
//Data Entrada
If not (myDataEntrada is Nil) Then
me.txtDataEntrada.Text = myDataEntrada.ShortDate
End if
[/code]
Se não funcionar, poste novamente que tento te ajudar de outra forma…
Estou aprendendo xojo agora pelo que entendi dentro do report eu uso o componente visual report field que tem a propriedade datafield onde eu coloco a coluna resultado do recordset
ex:
datafield = nascimento
com eu escreveria quele cdigo todo ?
[quote=126278:@Cauby Osorio]Estou aprendendo xojo agora pelo que entendi dentro do report eu uso o componente visual report field que tem a propriedade datafield onde eu coloco a coluna resultado do recordset
ex:
datafield = nascimento
com eu escreveria quele código todo ?[/quote]
Olá Cauby,
Se o seu caso é formatar para passar para o campo do relatório, então você pode tentar a formatação direta na cláusula sql. Algo assim:
SELECT REPLACE(CONVERT(VARCHAR(11),GETDATE(),6), ' ','/');
isso resulta em: 20/Jun/13
SELECT REPLACE(CONVERT(VARCHAR(11),GETDATE(),106), ' ','/');
resulta em: 20/Jun/2013 (com o ano de 4 dígitos...)
Cada código no final (6 no primeiro, 106 no segundo…) dá um resultado diferente. Isso varia um pouco de banco de dados para banco de dados. Você precisa testar e ver o resultado.
Outra forma:
SELECT ProductName, Price, FORMAT(Now(),'DD-MM-YYYY') AS PerDate
FROM Products;
resulta em: 01-09-2014
Neste link você encontra bastante material e exemplos de sql com datas: http://passionforsql.com/2014/03/date-formats-in-sql.html
Achei a ideia tima de inverter no select a data s que fiz uns testes com seu exemplo e esta me retornando erro no convert.
Andei olhando o convert no Mysql parece que ele s tem dois parametros Convert(campo_da_tabela, tipo) o terceiro para metro 106 quando eu coloco da erro.
E continuo na mesma porque meu campo chamado nascimento na tabela o formato 1969-03-14
Se eu colocar assim:
sql = “SELECT idcli , nome , telefone, replace(convert(nascimento,date),’-’,’/’) AS nascimento FROM Clientes ORDER BY nome ;”
No da erro, mais minha data continua aparecendo invertida no report.
J tentei colocar no report datafield = nascimento.ShortDate
No d erro mais tambm no aparece as datas no report.
O format tambem no deu certo colquei assim:
sql = “SELECT idcli , nome , telefone, format(nascimento,‘DD-MM-YYYY’) AS nascimento FROM Clientes ORDER BY nome ;”
No me da erro mais a data vem com uns nmeros estranhos tipo 19,720,513
Desculpe sou novo tanto com o xojo como com o Mysql devo esta fazendo o monte de bobagem
Uma luz ao cego.
Obrigado amigo.
[quote=127044:@Cauby Osorio]Achei a ideia ótima de inverter no select a data só que fiz uns testes com seu exemplo e esta me retornando erro no convert.
Andei olhando o convert no Mysql parece que ele só tem dois parametros Convert(campo_da_tabela, tipo) o terceiro para metro 106 quando eu coloco da erro.
E continuo na mesma porque meu campo chamado nascimento na tabela o formato é 1969-03-14
Se eu colocar assim:
sql = “SELECT idcli , nome , telefone, replace(convert(nascimento,date),’-’,’/’) AS nascimento FROM Clientes ORDER BY nome ;”
Não da erro, mais minha data continua aparecendo invertida no report.
Já tentei colocar no report datafield = nascimento.ShortDate
Não dá erro mais também não aparece as datas no report.
O format tambem não deu certo colquei assim:
sql = “SELECT idcli , nome , telefone, format(nascimento,‘DD-MM-YYYY’) AS nascimento FROM Clientes ORDER BY nome ;”
Não me da erro mais a data vem com uns números estranhos tipo 19,720,513
Desculpe sou novo tanto com o xojo como com o Mysql devo esta fazendo o monte de bobagem
Uma luz ao cego.
Obrigado amigo.[/quote]
Cauby, veja a imagem deste link com um teste. Estou usando MySql…
https://www.dropbox.com/s/zio8p4l6q5ol0lo/Captura%20de%20tela%202014-09-04%2016.48.46.png?dl=0
A formatação para o MySql fica assim:
select id, campo1, campo2, DATE_FORMAT(campoData, '%d-%m-%y') as dataFormatada from tabela
esse DATE_FORMAT show, era isso mesmo que estava querendo
sql = “SELECT idcli , nome , telefone,DATE_FORMAT(nascimento,’%d/%m/%Y’) AS nascimento FROM Clientes ORDER BY nome ;”
Foi bom que j conheci o replace , convert e o format
Muito obrigado.
Estou encarregado de escolher uma nova linguagem para empresa estou testando o xojo e estou gostando, todos os testes que fiz at agora foi para desktop, agora vou fazer teste para web para ver se vamos partir para o xojo mesmo.
Devo pertubar muito voces ainda.
Muito obrigado novamente.
[quote=127070:@Cauby Osorio]esse DATE_FORMAT é show, era isso mesmo que estava querendo
sql = “SELECT idcli , nome , telefone,DATE_FORMAT(nascimento,’%d/%m/%Y’) AS nascimento FROM Clientes ORDER BY nome ;”
Foi bom que já conheci o replace , convert e o format
Muito obrigado.
Estou encarregado de escolher uma nova linguagem para empresa estou testando o xojo e estou gostando, todos os testes que fiz até agora foi para desktop, agora vou fazer teste para web para ver se vamos partir para o xojo mesmo.
Devo pertubar muito voces ainda.
Muito obrigado novamente.[/quote]
Fique a vontade em perguntar. Não sou nenhum expert em Xojo, mas só não respondo se realmente não souber… Sei que todo início é complicado, por mais experiência que se tenha em outras linguagens…