Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

TonyDmaZ

Delphi + IBO - ISC ERROR CODE 335544569 Table unknow

Recommended Posts

Pessoal, felicidades para todos.


Cenário: Delphi 2010 + IBO 4.9.14 53


Está ocorrendo um erro na execução de um SELECT em uma tabela (PAR_GLOBAL) que não faz muito sentido, pois esse ocorre apenas quando o programa (P2) é chamado por um outro (P1).


Explicação: O ERRO apenas acontece quando P1 chama P2. Se P2 for executado diretamente não ocorre. Antes que perguntem, preciso que P2 seja chamado por P1 por uma questão de necessidade aqui no órgão.


Descrição do erro:


Mensagem: ISC ERROR CODE 335544569


ISC ERROR MESSAGE:

Dynamic SQL Error

SQL Error code = -204

Table unknown PAR_GLOBAL

At line 3, column 1


Alguém já teve algum caso parecido e poderia ajudar?


{ Fonte de P1 }

{ Aplicativo chamador de Aplicativos }

program TONYSOFT_EXE;


uses

Forms, FunArquivo, IniFiles, SysUtils, Messages, Dialogs, IBODataset, VLRotinasGerais, DBDatabase;


var

IBDatabase: TIBODatabase;

Exe_Par_Call,

AppExeName,AppExePath,

AppBDNAME,AppBDPATH,AppBDPROTOCOL,AppBDSERVER,AppBDUSER,AppBDPASSWORD: String;


{$R *.res}


begin

Application.Initialize;

try

{ Tratamento do Arquivo INI }

if Not FileExists( GetNomeArquivoPadrao(True,True,'INI') ) then begin

{ Grava Dados Padrões (Modelo) no Arquivo INI }

IniArquivo('BDCONFIG','EXE_PAR_CALL','STRING','BDCONFIG.FDB',False,GetNomeArquivoPadrao(True,True));

IniArquivo('BDCONFIG','BDNAME' ,'STRING','BDCONFIG.FDB',False,GetNomeArquivoPadrao(True,True));

IniArquivo('BDCONFIG','BDPATH' ,'STRING',ExtractFilePath(Application.ExeName),False,GetNomeArquivoPadrao(True,True));

IniArquivo('BDCONFIG','BDSERVER' ,'STRING','LocalHost',False,GetNomeArquivoPadrao(True,True));

IniArquivo('BDCONFIG','BDPROTOCOL','STRING','cpTCP_IP',False,GetNomeArquivoPadrao(True,True));

IniArquivo('BDCONFIG','BDUSER' ,'STRING','SYSDBA',False,GetNomeArquivoPadrao(True,True));

IniArquivo('BDCONFIG','BDPASSWORD','STRING','clusterdet',False,GetNomeArquivoPadrao(True,True));

end else


Exe_Par_Call:=IniArquivo('BDCONFIG','EXE_PAR_CALL','STRING','BDCONFIG.FDB',True);


Try

{ Acessar o Banco para pegar o Executável - Parametrização do APLICATIVO }

IBDatabase:=TIBODatabase.Create(Application);

IBDatabase.CharSet :='WIN1252';

IBDatabase.Path :=IniArquivo('BDCONFIG','BDPATH' ,'STRING', '',True,GetNomeArquivoPadrao(True,True)) +'\'+

IniArquivo('BDCONFIG','BDNAME' ,'STRING', '',True,GetNomeArquivoPadrao(True,True));


except On Err:Exception do


Messagedlg('ERRO NA TENTATIVA DE ACESSO AO SGBD DE CONFIGURAÇÃO!' +#13 +

'Arquivo INI de Configuração..: '+GetNomeArquivoPadrao(True,True,'INI') +#13 +

'Esse Aplicativo Executável...: '+ParamStr(0) +#13 +

'Mensagem do erro.............: '+Err.message,mtError,[mbOk],0);

end;


{ Acessar a Chave Parameter(1) no BD de Configuração }

AppExePath:=SQLSeek(IBDatabase, 'PAR_GLOBAL', 'PAR_EXEPATH','PAR_CALL_EXE='+QuotedStr(Exe_Par_Call));


if AppExePath='' then begin // PAR_CALL_EXE NÃO EXISTE NO BANCO DE CONFIGURAÇÃO //

MessageDlg('PAR_CALL_EXE NÃO EXISTE NO BANCO DE CONFIGURAÇÃO!' +#13 +

'Arquivo INI de Configuração..: '+GetNomeArquivoPadrao(True,True,'INI') +#13 +

'Esse Aplicativo Executável...: '+ParamStr(0) +#13 +

'Parâmetro PAR_CALL_EXE ......: '+Exe_Par_Call, mtError, [mbOk],0);

Abort;

end;


{ Invoca o Aplicativo alvo conforme sigla de IDENTIFICAÇÃO no BDGERAL. Parâmetros passados:

(0) Path e o aplicativo executável respectivo;

(1) Valor que corresponde ao campo PAR_CALL_EXE;

(1) Parametros de Acesso ao Banco do Aplicativo Alvo (observar a sequencia); }


IBDatabase.Connected:=False;


===> CHAMADA PARA O P2 <===

ExeProg( AppExePath +'\'+ AppExeName, Exe_Par_Call+' '+

AppBDPATH+' '+AppBDNAME+' '+AppBDSERVER+' '+AppBDPROTOCOL+' '+AppBDUSER+' '+AppBDPASSWORD );


finally


IBDatabase.Connected:=False;

Application.Terminate;


end;

end.



{ Fonte de P2 }

{ Programa principal da Aplicação }

program TONYSOFT_SIGE;


uses

Forms,

UTTraducao in 'C:\Delphi2010\DetranLib\Utilitarios\UTTraducao.pas' {Tradutor},

Un_Pass in 'C:\Delphi2010\DetranLib\Parametros\Un_Pass.pas' {FrSplash},

DgFormulario in 'C:\Delphi2010\DetranLib\Dialogo\DgFormulario.pas' {DGFormularioF},

DBConfigF in 'C:\Delphi2010\DetranLib\DataBase\DBConfigF.pas' {FrDBConfig},

DGMenuPrincipal in 'C:\Delphi2010\DetranLib\Dialogo\DGMenuPrincipal.pas' {DGMenuPrincipalF: Delphi2010\DetranLib\Dialogo\DgFrmMasterDetail.pas' {DGFrmMasterDetailF},

DgFrmSimple in 'C:\Delphi2010\DetranLib\Dialogo\DgFrmSimple.pas' {DGFrmSimpleF},

DgFrmMasterDetail in 'C:\Delphi2010\DetranLib\Dialogo\DgFrmMasterDetail.pas' {DgFrmMasterDetailF},

DgFrmMDTriplo4Tabsheet in 'C:\Delphi2010\DetranLib\Dialogo\DgFrmMDTriplo4Tabsheet.pas' {DgFrmMDTriplo4TabsheetF},

PRSimple in 'C:\Delphi2010\DetranLib\Print\PRSimple.pas' {FrRelSimple},

Un_MenuP in 'Un_MenuP.pas' {FrMenuP},

DM_Datamodule in 'DM_Datamodule.pas' {DM_FrDataModule: TDataModule};


{$R *.res}


begin

Application.Initialize;

Application.MainFormOnTaskbar := True;


{ Criação do Menu Principal //}

Application.Title := 'TonySoft SIGE - Sistema Integrado de Gestão Empresarial';

Application.CreateForm(TFrMenuP, FrMenuP);


Try Try


===> CHAMADA PARA o DATAMODULE onde dá o ERRO </b> Execução da Linha abaixo DÁ O ERRO (apenas qdo chamado por P1. Esse é o detalhe intrigante) <===

AppBDNAME :=SQLSeek(BDConfig, 'PAR_GLOBAL', 'PAR_BDNAME','PAR_CALL_EXE='+QuotedStr(pPAR_CALL_EXE));



{ Tratamento Genérico }

except on Err:Exception do begin

Messagedlg('CONFIGURAÇÃO INCORRETA DO SISTEMA (no EXE ou SGBD) NO SGBD DE CONFIGURAÇÃO: '+#13+

'Esse Aplicativo : '+ParamStr(0) +#13+

'Parâmetro Chave.: '+pPAR_CALL_EXE+#13+

'Path do banco...: '+AppBDPATH +'\'+AppBDNAME+#13 +

'Protocolo.......: '+AppBDPROTOCOL +#13 +

'Servidor........: '+AppBDSERVER +#13 +

'Usuário.........: '+AppBDUSER +#13 +

'Password Master.: Verifique no SGBD de configuração'+#13 +

'Nome da Rotina..........: TDM_FrDataModule.DataModuleCreate' +#13+

'Mensagem do erro........: '+Err.message,mtError,[mbOk],0); end;

end;


Finally


if (BDConfig.Connected and IBPrincipal.Connected) then begin


Initializacao;


end else begin

FreeAndNil(DM_FrDataModule);

ExitProcess(0);

Application.Terminate;

end;


Screen.Cursor := crDefault;

End;

end;



{ Fonte Rotina SQLSeek }{ Pesquisa de Dado cadastrado Atraves SQL }

Function SQLSeek(bd:TIBODatabase; sTable:String; sField:String; sWhere:String=''; sOrder:String=''):Variant;

var

SeekStrQuery: TIBOQUery;

begin


SeekStrQuery:=TIBOQuery.Create(Nil);


with SeekStrQuery do begin

IB_Connection:=bd;

KeyLinksAutoDefine:=False;

Sql.Add('Select '+sField);

Sql.Add('From '+sTable);

if sWhere<>'' then

Sql.Add('Where '+sWhere);

if sOrder<>'' then

Sql.Add('Order by '+sOrder);

if (not prepared) then prepare;

Open;


if Not FieldByName(sField).IsNull then begin

if Pos('.',sField)=0 then

Result:=FieldByName(sField).AsVariant else

Result:=FieldByName(Copy(sField,Pos('.',sField)+1,length(sField))).AsVariant;

end else begin

case FieldByName(sField).DataType of

ftString: Result:='';

ftDateTime, ftDate: Result:=StrToDateTime(' / / ');

ftFloat: Result:=-0;

ftInteger,ftSmallInt,ftWord: Result:=-0;

end;

end;

Close;

end;


SeekStrQuery.Free;

end;



{ SQL da QUERY }

SELECT ID_PAR_GLOBAL

, PAR_CALL_EXE

, SETOR_ID

, PAR_EXENAME

, PAR_EXEPATH

, PAR_BDNAME

, PAR_BDPATH

, PAR_BDPROTOCOL

, PAR_BDSERVER

, PAR_BDUSER

, PAR_BDPASSWORD

, PAR_APPSETOR

, PAR_APPTITULO

FROM PAR_GLOBAL



8uCZUt1.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.