ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

UDFs do Interbase

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
caiorafaelmatias
Novato
Novato


Registrado: Sexta-Feira, 23 de Fevereiro de 2007
Mensagens: 19

MensagemEnviada: Sex Fev 23, 2007 6:06 pm    Assunto: UDFs do Interbase Responder com Citação

Olá pessoal estou com problemas para utilizar as UDF's no Interbase e gostaria de saber se alguém pode me ajudar. O problema é o seguinte ao executar o comando a seguir no IBConsole ocorre o erro também a seguir.
Tanto a dll "FreeUDFLib.dll" quanto a dll "ib_udf.dll" estão colocadas em C:\Arquivos de Programas\Borland\Interbase\UDF. Sendo assim não sei como faço para resolver este problema. Alguém sabe?

Comando:
"SET TERM ^ ;
CREATE TRIGGER TGMAI FOR TT_MAI
BEFORE INSERT AS
DECLARE VARIABLE cFilial CHAR(3);
BEGIN
IF (new.CODFIL IS NULL) THEN BEGIN
SELECT CODLOJ FROM TT_IDF INTO cFilial;
new.CODFIL = cFilial;
END
IF (new.SEQUEN IS NULL) THEN BEGIN
new.SEQUEN = LPAD(RTRIM(CAST(GEN_ID(SQMAI, 1) AS CHAR(10))),10,' ');
END
END ^
SET TERM ;"

Erro:
"Invalid request BLR at offset 90
function LPAD is not defined
module name or entrypoint could not be found
Statement: CREATE TRIGGER TGMAI FOR TT_MAI
BEFORE INSERT AS
DECLARE VARIABLE cFilial CHAR(3);
BEGIN
IF (new.CODFIL IS NULL) THEN BEGIN
SELECT CODLOJ FROM TT_IDF INTO cFilial;
new.CODFIL = cFilial;
END
IF (new.SEQUEN IS NULL) THEN BEGIN
new.SEQUEN = LPAD(RTRIM(CAST(GEN_ID(SQMAI, 1) AS CHAR(10))),10,' ');
END
END"
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
thomazs
Moderador
Moderador


Registrado: Segunda-Feira, 1 de Março de 2004
Mensagens: 2835

MensagemEnviada: Sáb Fev 24, 2007 5:14 pm    Assunto: Responder com Citação

Amigo, você registrou as UDF's para seu banco?

Se não, existe um Script para os arquivos que você disse (FreeUDFLib.dll e ib_udf.dll) que fazem esse registro. Basta executar esse script (arquivo com extensão sql).
_________________
Suporte e Consultoria em Desenvolvimento de Sistemas
Bacharel em Sistemas de Informação
Especialista em Bancos de Dados
Desenvolvimento: Clipper, Delphi, PHP, Python/Django
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
caiorafaelmatias
Novato
Novato


Registrado: Sexta-Feira, 23 de Fevereiro de 2007
Mensagens: 19

MensagemEnviada: Seg Fev 26, 2007 9:14 am    Assunto: UDFs do Interbase Responder com Citação

Como assim registrar vc diz criar elas no banco ?! Sim esão lá como funções externas já criadas no Banco tanto o RTRIM como o LPAD. Será que falta fazer mais algo !?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
gustavocco
Administrador
Administrador


Registrado: Sexta-Feira, 6 de Fevereiro de 2004
Mensagens: 4253
Localização: Chapecó - SC

MensagemEnviada: Seg Fev 26, 2007 9:49 am    Assunto: Responder com Citação

Você fez a declaração das funções externas no banco de dados em questão??
Ex.:
DECLARE EXTERNAL FUNCTION SUBSTR
CSTRING(80),
SMALLINT,
SMALLINT
RETURNS CSTRING(80) FREE_IT
ENTRY_POINT 'IB_UDF_SUBSTR' MODULE_NAME 'ib_udf'

.....

Como vc declarou?

Flw.
_________________
Top System - www.topsystem.com.br
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
caiorafaelmatias
Novato
Novato


Registrado: Sexta-Feira, 23 de Fevereiro de 2007
Mensagens: 19

MensagemEnviada: Seg Fev 26, 2007 9:54 am    Assunto: UDFs do Interbase Responder com Citação

DECLARE EXTERNAL FUNCTION rtrim
CSTRING(80)
RETURNS CSTRING(80) FREE_IT
ENTRY_POINT 'IB_UDF_rtrim' MODULE_NAME 'ib_udf';

DECLARE EXTERNAL FUNCTION lpad
CSTRING(80), INTEGER, CSTRING(1)
RETURNS CSTRING(80) FREE_IT
ENTRY_POINT 'IB_UDF_lpad' MODULE_NAME 'ib_udf';

Uma dúvida, estas funções devem obrigatoriamente estar implementadas no arquivo ib_udf.dll ?! Este arquivo é um arquivo padrão do Interbase ou é um arquivo onde eu deveria ter implementado tudo do zero ?!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB