GARANTIR DESCONTO

Fórum Erro em UDF #49257

09/02/2005

0

Pessoal estou fazendo uma stored que gere um pedido, entao vai ter varios ´inserts´ em varias tabelas, ate ai tudo bem, so que passado a DATA DE PAGAMENTO, esta sera incrementada cada parcela em 1 mes.. entao ficaria

Pagamento dia 09/02/2005 em 3x ai sera gerado


09/02/2005
09/03/2005
09/04/2005

Gerar a tabela e as parcelas to conseguindo, porem incrementar a data nao achei nada no firebird que poderia fazer isso por mim, entao resolvi fazer uma UDF so que esta dando o seguinte problema ao tentar utiliza-la.

Invalid token.
invalid request BLR at offset 1108.
function IncMes is not defined.
module name or entrypoint could not be found.

Verifiquei na declaracao da udf e fui seguindo o exemplo que tem no proprio firebird e na declaracao ficou assim

DECLARE EXTERNAL FUNCTION ´IncMes´
DATE
RETURNS DATE BY VALUE
ENTRY_POINT ´ServidorFB_IncMes´ MODULE_NAME ´ServidorFB´


Onde IncMes é o nome da function da dll
ServidorFB é a dll colocada na pasta UDF do firebird
A function recebe uma data de parametro, incrementa e devolve uma outra Data

Nao to conseguindo achar o erro, embora nao mexer muito com udf... Aproveitando ja a duvida, o que seria os parametros que na declaracao da udf pede para mim, o que seria entry_point e os demais que é pedido, faco meio que seguindo exemplos, e no meu codigo para incrementar data no firebird a melhor forma seria mesmo utilizando udf? Espero que fui claro, Fico no aguardo de ajuda... Valeu

Renato/SP


Renato_sp

Renato_sp

Responder

Posts

11/02/2005

Renato_sp

Sobe


Responder

Gostei + 0

11/02/2005

Renato_sp

Pessoal devido esta duvida o sistema que estou montando esta parado, pois esta bem no modulo principal do sistema, pois todos os outros depende da geracao de pedidos para ser montado como o entrada/saida, pagamentos em atraso, pagamentos do dia, etc etc, entao mexendo no sistema agora de manha, consegui fazer a udf funcionar sem acusar mais o problema

Invalid token.
invalid request BLR at offset 1108.
function IncMes is not defined.
module name or entrypoint could not be found.

Embora ao rodar o select ou a stored nao to tendo o resultado esperado, veja como esta saindo o resultado

Select datavenda, incmes(datavenda) from vendacliente

Data Venda - Data Incrementada
10/02/2005 - 21/12/1858

e o que eu esperava seria

Data Venda - Data Incrementada
10/02/2005 - 10/03/2005

Embora saber mais ou menos as causas deste erro, pois datas em sql utiliza o formato mm-dd-yyyy, e o delphi usa o formato dd-mm-yyyy e pode ser que isso teja fazendo o incremento errado, pois nao tratei formato de dados nem no delphi e nem no firebird.

Se alguem ja trabalhou com udf com data, ou tem uma dica se seria melhor tratar o formato de data no delphi, ou usar no proprio servidor, ou ate mesmo se o erro nao for este, estarei por aqui, e com ideias fica mais facil de obter um resultado satisfatorio


Valeu...
Renato/SP


Responder

Gostei + 0

11/02/2005

Gandalf.nho

Experimente usar a biblioteca UDF [url=http://rfunc.sourceforge.net/]RFunc[/url], já usei ela com datas tanto no Interbase como no Firebird e funciona legal.


Responder

Gostei + 0

11/02/2005

Renato_sp

Eu dei uma olhada la na udf porem ja tem algumas function que fiz e queria fazer em apenas uma dll, e é bom para aprender a utilizar data em udf, nao sei pq mas a que to fazendo nao ta incrementando o mes e sim vindo uma data doida, fiz o teste pelo delphi e retorna normalmente com a data certinha


10/02/2005 >> 10/03/2005


Ja refiz umas 500x alem de testar de varios modos, nossa ta dificil utilizar data em udf... :D, sera que alguem ja teve este problema em gerar parcela , com cada parcela com a data um mes acima da ultima

Renato/SP


Responder

Gostei + 0

12/02/2005

Gandalf.nho

Como você criou essa UDF? Não esqueça que datas são tratadas de maneira especial numa UDF criada com o Delphi. Essa data estranha que está sendo retornada aparentemente indica uma data inválida.


Responder

Gostei + 0

14/02/2005

Renato_sp

gandalf.nho obrigado pela ajudas, eu ainda nao consegui resolver mas com nossa conversa deste topico estou tentando acertar.
Estou tentando de varias maneiras ate acertar, tentando tratar o formato da data na dll, etc etc, em outras aplicacoes delphi, a dll esta funcionando corretamente, mas como nunca precisei fazer uma stored com data ainda to apanhando um pouco, mas to fazendo umas pesquisas atras de algo que resolve... mas muito obrigado mesmo pelas ajudas.

Renato / SP


Responder

Gostei + 0

14/02/2005

Gandalf.nho

Como você declarou os parâmetros data em sua DLL? No IB/FB as datas são declaradas conforme o padrão usado pela linguagem C, que é diferente do TDateTime do Delphi. É necessário tratar os valores passados pelo banco de dados antes de trabalhar em cima deles. Dê uma olhada nesse link, há alguns artigos (em inglês) sobre criação de UDFs [url]http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_research_examples[/url]

Existem tb 2 números antigos da ClubeDelphi sobre UDFs


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar