[firebase-br] RES: Executar Script Inteiro, mesmo com erros

Jeferson Oliveira jeferson em mvtec.com.br
Seg Fev 20 13:25:37 -03 2006


Certo Denis.
Poderia ser utilizada com qualquer TStringList se fizesse algumas adaptações 
que já estão implementadas no TIBScript.
A principal delas é o controle do caracter de terminação (propriedade 
Terminator) que é automaticamente atualizado quando executa uma query que 
utiliza o comando SET TERM, que é muito comum em sentenças DDL.

Quanto à função RetornaCampo, seu resultado é o "Campo" de um "Registro" que 
esteja entre o caracter delimitador especificado, na ordem especificada. 
Segue o código:

function RetornaCampo(Registro, Delimitador: String; OrdemCampo: Integer): 
String;
var
  i, Posicao: Integer;
begin
  Result := '';
  Registro := Delimitador + Registro + Delimitador;
  for i := 1 to OrdemCampo do
  begin
    Posicao := Pos(Delimitador, Registro);
    Registro := Copy(Registro, Posicao + Length(Delimitador), 
Length(Registro));
  end;
  Posicao := Pos(Delimitador, Registro);
  Result := Copy(Registro, 1, Posicao - 1);
end;

Um abraço!

Jeferson Oliveira


"Denis da Silva Guerra" 
<ministeriokairos em yahoo.com.br> escreveu na 
mensagem news:30510.8907902197$1140452115 em news.gmane.org...

Oi, Jeferson
Muito obrigado pela ajuda!

Só que dessa forma vc executa cada sentença SQL individualmente, né?
Assim não precisava nem usar o componente TIBScript.
Daria até para executar cada sentença com um simples TIBQuery, certo?

Imaginei que poderia existir um componente que executasse todo um script
ignorando os erros...
Mas se não existe, vou usar a tua solução.

Ah! O que faz a função RetornaCampo?  Vc tem o código dela?



[ ]'s

~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^
Denis da Silva Guerra
denisdsguerra em gmail.com
São José do Vale do Rio Preto - RJ
~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^ .

-----Mensagem original-----
De: lista-bounces em firebase.com.br 
[mailto:lista-bounces em firebase.com.br] Em
nome de Jeferson Oliveira
Enviada em: segunda-feira, 20 de fevereiro de 2006 09:41
Para: lista em firebase.com.br
Assunto: Re: [firebase-br] Executar Script Inteiro, mesmo com erros

Olá Denis!

Os erros durante a execução do script devem ser tratados por sua aplicação.
Abaixo um exemplo em Delphi utilizando IBScript que pode ser facilmente
adpatado para uso com qualquer outro componente:

procedure ExecutaSentencasScript(ibsExecutar: TIBScript);
var
  TextoScript, SentencaSQL: String;
begin
  TextoScript := Trim(ibsExecutar.Script.Text);
  while TextoScript <> '' do
  begin
    SentencaSQL := RetornaCampo(TextoScript, ibsExecutar.Terminator, 1);
    ibsExecutar.Script.Text := SentencaSQL;
    TextoScript := Copy(TextoScript, Pos(SentencaSQL, TextoScript) +
Length(SentencaSQL) + 1, Length(TextoScript));
    try
      ibsExecutar.ExecuteScript;
    except
      on E: Exception do
      begin
        Continue;
      end;
    end;
  end;
end;


Atenciosamente,

Jeferson Oliveira
Analista de Sistemas
MV Tecnologia Ltda - Belo Horizonte (matriz)


"Denis da Silva Guerra"
<ministeriokairos em yahoo.com.br> escreveu na
mensagem 
news:10482.9214433723$1140266542 em news.gmane.org...

Pessoal,
Existe algum componente que execute um Script inteiro, mesmo se no meio dele
alguma instrução apresente algum erro?

Por Exemplo:

CREATE GENERATOR GENERATOR_01;
CREATE GENERATOR GENERATOR_02;
CREATE GENERATOR GENERATOR_03;
CREATE GENERATOR GENERATOR_04;
CREATE GENERATOR GENERATOR_05;

Vamos supor que o GENERATOR_03 já exista.
Quando a execução do Script chegar em "CREATE GENERATOR GENERATOR_03;" vai
dar erro.
Meu objetivo é continuar a executar o Script e, assim mesmo, criar o
GENERATOR_04 e o GENERATOR_05.
O IBExpert faz isso na boa para execução dos Scripts...

O IBO faz isso?
Ou preciso de um componente especial para isso?

Obs: Uso Firebird 1.5


[ ]'s

~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^
Denis da Silva Guerra
denisdsguerra em gmail.com
São José do Vale do Rio Preto - RJ
~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^ .


-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.375 / Virus Database: 267.15.7/259 - Release Date: 13/02/2006







_______________________________________________________
Yahoo! doce lar. Faça do Yahoo! sua homepage.
http://br.yahoo.com/homepageset.html



______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa





-- 
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.1.375 / Virus Database: 267.15.7/259 - Release Date: 13/02/2006



-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.375 / Virus Database: 267.15.7/259 - Release Date: 13/02/2006




_______________________________________________________
Yahoo! Acesso Grátis - Internet rápida e grátis. Instale o discador agora!
http://br.acesso.yahoo.com


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço 
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa







Mais detalhes sobre a lista de discussão lista