Olá pessoal... Não intrepretem, por favor, como sendo um tópico exclusivamente para o Delphi (até poderia ser...)
Observei um problema em obter um resultado a partir de uma query usando BDE e ODBC MySQL.
No servidor, no banco MySQL 5.0.27, existe uma função que 'traduz' a situação de uma duplicata... A função recebe a data de vencimento da duplicata, a data da liquidação e a situação (liquidada ou não) e retorna:
- Se a duplicata não foi liquidada ainda, irá retornar
"vencida" se estiver atrasada,
"vence hoje" se estiver vencendo exatamente na data de hoje e
"a vencer" se vencerá de amanhã em diante...
- Se a duplicata foi liquidada, irá retornar, simplesmente, a data em que foi liquidada.
Então, é uma função que manipula datas e retorna sempre uma string (char)... A função é esta:
DROP FUNCTION IF EXISTS `MyDataPG`;
DELIMITER $$
CREATE DEFINER=`root`@`localhost` FUNCTION `MyDataPG`(in_vencimento date, in_data_pg date, in_pago tinyint) RETURNS varchar(10) CHARSET latin1
NO SQL
begin
declare resultado varchar(10) default '';
if in_pago=0 then
if in_vencimento<now() then
set resultado = 'vencida ';
else
if in_vencimento=now() then
set resultado = 'vence hoje';
else
set resultado = 'a vencer ';
end if;
end if;
else
set resultado = cast(in_data_pg as char(10));
set resultado = concat(substring(resultado, 9, 2), '/',
substring(resultado, 6, 2), '/',
substring(resultado, 1, 4));
end if;
return resultado;
end $$
DELIMITER;
Bom, tendo os campos vencimento e data_baixa como sendo do tipo Date e o campo pago sendo do tipo TinyInt,
a query a seguir:
select vencimento, data_baixa, pago, mydatapg(vencimento, data_baixa, pago) as situacao
from conta_ar
where mydatapg(vencimento, data_baixa, pago)="vencida"
union
select vencimento, data_baixa, pago, mydatapg(vencimento, data_baixa, pago) as situacao
from conta_ar
where mydatapg(vencimento, data_baixa, pago)="vence hoje"
union
select vencimento, data_baixa, pago, mydatapg(vencimento, data_baixa, pago) as situacao
from conta_ar
where mydatapg(vencimento, data_baixa, pago)="a vencer"
union
select vencimento, data_baixa, pago, mydatapg(vencimento, data_baixa, pago) as situacao
from conta_ar
where pago=1
and data_baixa between "2011/04/01" and "2011/04/05"
Esta query vem funcionando desde que existe a versão 5.0 do MySQL... (nem sei precisar desde quando)...
E sempre funcionou tanto via BDE/ODBC, localmente ou remotamente, e também pelo ZeosBDO, PHP, PHPMyAdmin,
MySQLNavigator... sem problemas...
Mas, desde terça feira, uma máquina, num universo de não sei tantas outras, passou a mostrar, no lugar da
coluna da situação, a palavra (MEMO) em troca do conteúdo correto... Assim...
Clicando-se no campo memo exibido, aparece o conteúdo correto... O problema acontece somente nas conexões
feitas através da dupla BDE/ODBC Conector... e desinstalar/reinstalar ambos não resolveu...
Pergunta
paulobergo
Olá pessoal... Não intrepretem, por favor, como sendo um tópico exclusivamente para o Delphi (até poderia ser...)
Observei um problema em obter um resultado a partir de uma query usando BDE e ODBC MySQL.
No servidor, no banco MySQL 5.0.27, existe uma função que 'traduz' a situação de uma duplicata... A função recebe a data de vencimento da duplicata, a data da liquidação e a situação (liquidada ou não) e retorna:
- Se a duplicata não foi liquidada ainda, irá retornar
"vencida" se estiver atrasada,
"vence hoje" se estiver vencendo exatamente na data de hoje e
"a vencer" se vencerá de amanhã em diante...
- Se a duplicata foi liquidada, irá retornar, simplesmente, a data em que foi liquidada.
Então, é uma função que manipula datas e retorna sempre uma string (char)... A função é esta:
Bom, tendo os campos vencimento e data_baixa como sendo do tipo Date e o campo pago sendo do tipo TinyInt, a query a seguir: Irá retornar: Esta query vem funcionando desde que existe a versão 5.0 do MySQL... (nem sei precisar desde quando)... E sempre funcionou tanto via BDE/ODBC, localmente ou remotamente, e também pelo ZeosBDO, PHP, PHPMyAdmin, MySQLNavigator... sem problemas... Mas, desde terça feira, uma máquina, num universo de não sei tantas outras, passou a mostrar, no lugar da coluna da situação, a palavra (MEMO) em troca do conteúdo correto... Assim...Clicando-se no campo memo exibido, aparece o conteúdo correto... O problema acontece somente nas conexões
feitas através da dupla BDE/ODBC Conector... e desinstalar/reinstalar ambos não resolveu...
Alguém já passou por isso ou viu algo similar?
Grato por qualquer colaboração...
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.