PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Delphi + IBO - ISC ERROR CODE 335544569 Table Unknown #519117

07/05/2015

0

Pessoal, felicidades para todos.

Cenário: [b]Delphi 2010 + IBO 4.9.14 53[/b]

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.

[u]Descrição do erro:[/u]

Mensagem: [b]ISC ERROR CODE 335544569[/b]

ISC ERROR MESSAGE:
[b]Dynamic SQL Error[/b]
SQL Error code = [b]-204[/b]
Table Unknown [b]PAR_GLOBAL[/b]
At line 3, column 1

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

[u][b]{ Fonte de P1 }[/b][/u]
{ 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;

[u][b]===> CHAMADA PARA O P2 <===[/b][/u]
ExeProg( AppExePath +'\'+ AppExeName, Exe_Par_Call+' '+
AppBDPATH+' '+AppBDNAME+' '+AppBDSERVER+' '+AppBDPROTOCOL+' '+AppBDUSER+' '+AppBDPASSWORD );

finally

IBDatabase.Connected:=False;
Application.Terminate;

end;
end.


[u][b]{ Fonte de P2 }[/b][/u]
{ Programa principal da Aplicação }
program TONYSOFT_SIGE;

uses
Forms,
UTTraducao in 'C:\Delphi2010\DetranLib\Utilitarios\UTTraducao.pas' ,
Un_Pass in 'C:\Delphi2010\DetranLib\Parametros\Un_Pass.pas' ,
DgFormulario in 'C:\Delphi2010\DetranLib\Dialogo\DgFormulario.pas' ,
DBConfigF in 'C:\Delphi2010\DetranLib\DataBase\DBConfigF.pas' ,
DGMenuPrincipal in 'C:\Delphi2010\DetranLib\Dialogo\DGMenuPrincipal.pas' {DGMenuPrincipalF: Delphi2010\DetranLib\Dialogo\DgFrmMasterDetail.pas' ,
DgFrmSimple in 'C:\Delphi2010\DetranLib\Dialogo\DgFrmSimple.pas' ,
DgFrmMasterDetail in 'C:\Delphi2010\DetranLib\Dialogo\DgFrmMasterDetail.pas' ,
DgFrmMDTriplo4Tabsheet in 'C:\Delphi2010\DetranLib\Dialogo\DgFrmMDTriplo4Tabsheet.pas' ,
PRSimple in 'C:\Delphi2010\DetranLib\Print\PRSimple.pas' ,
Un_MenuP in 'Un_MenuP.pas' ,
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

[u][b]===> 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) <===[/b][/u]
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;


[u][b]{ Fonte Rotina SQLSeek }{ Pesquisa de Dado cadastrado Atraves SQL }[/b][/u]
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;


[u][b]{ SQL da QUERY }[/b][/u]
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


[img]http://i.imgur.com/8uCZUt1.jpg[/img]
Tony

Tony

Responder

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

Aceitar