|
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Dom Nov 22, 2009 11:09 pm Assunto: Erro no script simples trigger? *** Resolvido *** |
|
|
Estou tendo um erro e não quer gerar um simples script desta trigger
Código: | create or alter trigger trg_associados for associados
active before insert or update position 0
as
begin
if (new.idassoc is null) then
new.idassoc = gen_id(gen_associados_id,1);
end |
Erro:
SLQ error code = - 104 unexpected end of command -line 6 column 50 _________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Editado pela última vez por adriano_servitec em Qua Nov 25, 2009 3:36 pm, num total de 1 vez |
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
|
afarias Aprendiz
Registrado: Domingo, 25 de Outubro de 2009 Mensagens: 197 Localização: Recife, PE
|
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Seg Nov 23, 2009 11:06 pm Assunto: |
|
|
afarias escreveu: | o 'terminador' deve ser mudado. para Triggers e Procedures vc não pode usar ';' -- mude para qualquer outra coisa, ex: '^' usando SER TERM:
SET TERM ^;
Note que apenas componentes de script vão conseguir executar isto. Componentes simples de Query provavelmente não suportam.
T+ | Poderia me dar um exemplo?
Assim não funciona também
Código: | SET TERM ^ ;
CREATE OR ALTER TRIGGER TRG_ASSOCIADOS FOR ASSOCIADOS
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
as begin
if (new.idassoc is null) then
new.idassoc = gen_id(gen_associados,1)
end
^
SET TERM ; ^ |
_________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree |
|
Voltar ao Topo |
|
|
afarias Aprendiz
Registrado: Domingo, 25 de Outubro de 2009 Mensagens: 197 Localização: Recife, PE
|
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
|
aeciovc Colaborador
Registrado: Terça-Feira, 18 de Dezembro de 2007 Mensagens: 1042 Localização: Recife
|
Enviada: Qua Nov 25, 2009 2:03 pm Assunto: |
|
|
qual banco vc tá usando? |
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
|
thomazs Moderador
Registrado: Segunda-Feira, 1 de Março de 2004 Mensagens: 2835
|
Enviada: Qua Nov 25, 2009 3:17 pm Assunto: |
|
|
O problema pode ser o componente. Muitas vezes esses componentes não reconhecem comandos como o SET TERM. Quando precisei fazer algo do tipo, usava IBX e o componente IBScript serviu. Tem similares a esse componenteno IBO e MDO. Ao usar um ZSQLProcessor, acho que você tem que alterar a propriedade "delimiter" dele, ao invés de usar o comando SET TERM.
Se não funcionar, tente usar um ZConnection.ExecuteDirect, com o comando SET TERM. _________________ 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 |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Qua Nov 25, 2009 3:34 pm Assunto: |
|
|
thomazs escreveu: | O problema pode ser o componente. Muitas vezes esses componentes não reconhecem comandos como o SET TERM. Quando precisei fazer algo do tipo, usava IBX e o componente IBScript serviu. Tem similares a esse componenteno IBO e MDO. Ao usar um ZSQLProcessor, acho que você tem que alterar a propriedade "delimiter" dele, ao invés de usar o comando SET TERM.
Se não funcionar, tente usar um ZConnection.ExecuteDirect, com o comando SET TERM. | Matou Thomaz
A propriedade é DelimiterType dtSetTerm
Ai sim roda o SET TERM _________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree |
|
Voltar ao Topo |
|
|
hjmarcon Aprendiz
Registrado: Segunda-Feira, 16 de Julho de 2007 Mensagens: 112
|
Enviada: Ter Set 19, 2017 10:56 am Assunto: |
|
|
Adriano, me baseei no seu exemplo de programa para criação de triggers, ficando a rotina dessa forma:
Código: |
try
_GeraScript.DelimiterType := dtSetTerm; // ZScriptParser
_GeraScript.CleanupStatements := true; // Remove todos os comentários
_GeraScript.Delimiter := '^';
_GeraScript.ParamCheck := false;
_GeraScript.Script := Comando;
_GeraScript.Execute; //Executa o script
ZConnection1.Commit;
//ShowMessage('Script gerado com sucesso.');
except
on e:exception do
begin
ZConnection1.Rollback;
result := 'Não foi possivel gerar o script: '+e.Message;
end;
end; |
porém, ainda me retorna o erro:
Código: |
'SQL Error: Dynamic SQL Error SQL error code = -104 Token unknown - line 1, column 5 TERM. Error Code: -104.
|
Estou usando DelphiXe2, baixei a última versão do Zeos, banco Firebird 3.0 (Consegui com o IBScript no Firebird 2.5).
Já tentei diversas configurações, mas nenhuma está resolvendo.
Poderia me ajudar nessa situação?
Já tentei diversas configurações |
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Ter Set 19, 2017 11:10 am Assunto: |
|
|
hjmarcon escreveu: | Adriano, me baseei no seu exemplo de programa para criação de triggers, ficando a rotina dessa forma:
Código: |
try
_GeraScript.DelimiterType := dtSetTerm; // ZScriptParser
_GeraScript.CleanupStatements := true; // Remove todos os comentários
_GeraScript.Delimiter := '^';
_GeraScript.ParamCheck := false;
_GeraScript.Script := Comando;
_GeraScript.Execute; //Executa o script
ZConnection1.Commit;
//ShowMessage('Script gerado com sucesso.');
except
on e:exception do
begin
ZConnection1.Rollback;
result := 'Não foi possivel gerar o script: '+e.Message;
end;
end; |
porém, ainda me retorna o erro:
Código: |
'SQL Error: Dynamic SQL Error SQL error code = -104 Token unknown - line 1, column 5 TERM. Error Code: -104.
|
Estou usando DelphiXe2, baixei a última versão do Zeos, banco Firebird 3.0 (Consegui com o IBScript no Firebird 2.5).
Já tentei diversas configurações, mas nenhuma está resolvendo.
Poderia me ajudar nessa situação?
Já tentei diversas configurações |
Olá eu não uso zeos a muito tempo, parei na versão 6.6.6 com firebird 2.0
Nem lembro mais como fiz isso, tenho aqui uma classe que montei na época para esta finalidade, vou postar ela toda, se te ajudar, tem aqui toda estrutura de tabelas, triggers e sp que usei neste projeto quando fiz.
Veja se te serve amigo.
[code:1:6a7f91de6f]//****************************************************************************//
// Unit criada para manter e fazer a manutenção das tabelas, trigger SP, etc //
// Serve tambpem para fazer a conexão do banco de dados com o zeos 6.6.5 //
// Nesta unit são criada as tabelas em tempo de projeto //
//****************************************************************************//
{$A+,B-,C-,D+,E-,F-,G+,H+,I+,J+,K-,L+,M-,N+,O+,P+,Q-,R-,S-,T-,U-,V+,W-,X+,Y-,Z1}
{$MINSTACKSIZE $00004000}
{$MAXSTACKSIZE $00100000}
{$IMAGEBASE $00400000}
{$APPTYPE GUI}
unit utabelas;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ToolWin, Grids, DBGrids, Provider, DB, DBClient, ComCtrls,
StdCtrls, Mask, Buttons, ExtCtrls, ZDataset, ZConnection, DBCtrls,
StdActns, ActnList, ImgList, Ufuncoes, ZSqlProcessor;
{Declaro as procedures e funções aqui}
procedure CreateDatabase(DBName, User, Pswd, CharSet: String; Dialect: Word);
procedure zconn(pzConn: TZConnection);
procedure CreateTable(pCon: TZConnection; pQuery: TZQuery);
//procedure mostracampos(pQuery: TZQuery; ListarCampos: String);
function TemTabela(Query: TZQuery; Tabela, Campo: String): Boolean;
function TemIndice(Query: TZQuery; Indice: String): Boolean;
function TemGenerator(Query: TZQuery; Generator: String): Boolean;
function TemTrigger(Query: TZQuery; Trigger: String): Boolean;
function TemProcedure(Query: TZQuery; sProcedure: String): Boolean;
//Autor: Adriano
//Data: 04/03/2011
//Novas funcoes e procedures para o controle de campos novos
//que são incluido nas tabelas
function ControleVersaoDB(Query: TZQuery): Integer;
function ComparaVersoesDB(iControleAplication: Integer): Boolean;
procedure AlterTable(pCon: TZConnection; pQuery: TZQuery);
//var
// resultcampos : string;
implementation
uses udm, usplash, ZAbstractRODataset, DateUtils;
//************criar o database, tabelas, triggers, generators, index, stored procedure ******
// CRIAÇÃO DO BANCO DE DADOS
function isc_dsql_execute_immediate(PStatus: PLongint; var db_Handle: PLongint;
var trans_Handle: PLongint; Length: Word; SQL: PChar; Dialect: Word;
PxSqlDa: Pointer): LongInt; stdcall; external 'FBCLIENT.DLL';
function isc_detach_database(PStatus: PLongint; var db_handle: PLongint):
LongInt; stdcall; external 'FBCLIENT.DLL';
function isc_sqlcode(PStatus: PLongint): LongInt; stdcall; external 'FBCLIENT.DLL';
function isc_sql_interprete(Code: LongInt; Buffer: PChar; Size: Integer):
LongInt; stdcall; external 'FBCLIENT.DLL';
function DisplayError(SqlRslt: LongInt; Vector: PLongInt): String;
const
MAX_MSG = 500;
var
SqlMsg: String;
begin
SqlRslt := isc_sqlcode(Vector);
SetLength(SqlMsg, MAX_MSG);
isc_sql_interprete(SqlRslt, PChar(SqlMsg), MAX_MSG);
Setlength(SqlMsg, StrLen(PChar(SqlMsg)));
Result := 'SQL-Code: ' + IntToStr(SqlRslt) + ', Mensagem: ' + SqlMsg;
end;
// MODO DE CRIAÇÃO DB
procedure CreateDataBase(DBName, User, Pswd, CharSet: String; Dialect: Word);
var
Status: Array[1..19] of LongInt;
db, tran: PLongInt;
Rslt: LongInt;
BaseSQL: String;
begin
db := nil;
tran := nil;
BaseSQL := 'CREATE DATABASE "' + DBName +
'" USER "' + User +
'" PASSWORD ' + '"' + Pswd + '" ' + CharSet;
Rslt:= isc_dsql_execute_immediate(@status, db, tran, 0, PChar(BaseSQL), Dialect, Nil);
if Rslt <> 0 then
raise EDatabaseError.Create('Deu erro' +
#10#13 + 'ISC-Nr.: ' + IntToStr(Rslt) +
#10#13 + DisplayError(Rslt, @Status));
Rslt := isc_detach_database(@Status, db);
if Rslt <> 0 then
raise EDatabaseError.Create('Deu erro' +
#10#13 + 'ISC-Nr.: ' + IntToStr(Rslt) +
#10#13 + DisplayError(Rslt, @status));
end;
// CONEXÃO DO O ZCONNECTION
procedure zconn(pzConn: TZConnection); //Para criar o USER e SENHA no zconnection.
var
meuip, caminhodb : string;
begin
//captura ip do componente
{meuip := dm.IdIPWatch1.LocalIP;
caminhodb := meuip+':C:\Aldac\Motoboy\MOTOBOY.fdb';
pzConn.Database := caminhodb;// Caminho onde se encontra o seu banco de dados
//pzConn.HostName := meuip; //'localhost'; //melhor deixar como o ip no lugar do localhost
pzConn.Password := 'masterkey'; // Senha usado para autenticação no banco
pzConn.Protocol := 'firebird-2.0';
pzConn.User := 'SYSDBA'; // Usuário usado para autenticação no banco}
end;
//VERIFICA SE TEM TABELAS, INDICES, GENERATORS
function TemTabela(Query: TZQuery; Tabela, Campo: string): Boolean;
begin
Tabela:= UpperCase (Tabela);
if (Campo <> EmptyStr) then
Campo:= UpperCase (Campo);
Query.Close;
Query.SQL.Clear;
Query.SQL.Add ('SELECT rdb$relation_name FROM rdb$relation_fields ');
Query.SQL.Add ('WHERE rdb$relation_name = ' + QuotedStr(UpperCase(Tabela)));
if (Campo <> EmptyStr) then
Query.SQL.Add ('AND rdb$field_name = ' + QuotedStr(Campo));
Query.Open;
Result := (not Query.IsEmpty);
end;
function TemIndice(Query: TZQuery; Indice: String): Boolean;
var
sSQL: String;
begin
sSQL := 'SELECT rdb$index_name FROM rdb$indices WHERE rdb$index_name = ' + QuotedStr(UpperCase(Indice));
Query.Close;
Query.SQL.Clear;
Query.SQL.Add (sSQL);
Query.Open;
Result := (not Query.IsEmpty);
end;
function TemGenerator (Query: TZQuery; Generator: String): Boolean;
begin
Query.Close;
Query.SQL.Clear;
Query.SQL.Add ('SELECT rdb$generator_name FROM rdb$generators WHERE rdb$generator_name = ' + QuotedStr(UpperCase(Generator)));
Query.Open;
Result := (not Query.IsEmpty);
end;
function TemTrigger (Query: TZQuery; Trigger: String): Boolean;
begin
Query.Close;
Query.SQL.Clear;
Query.SQL.Add('SELECT rdb$trigger_name FROM rdb$triggers WHERE rdb$trigger_name = ' + QuotedStr(UpperCase(Trigger)));
Query.Open;
Result := (not Query.IsEmpty);
end;
function TemProcedure(Query: TZQuery; sProcedure: String): Boolean;
var
sSQL: String;
begin
sSQL := 'SELECT * FROM rdb$procedures WHERE rdb$procedure_name = ' + QuotedStr(UpperCase(sProcedure));
Query.Close;
Query.SQL.Clear;
Query.SQL.Text := sSQL;
query.open;
Result := (not Query.IsEmpty);
end;
function ControleVersaoDB(Query: TZQuery): Integer;
var
sSQL: String;
begin
sSQL := ' SELECT controle FROM versaodb ';
with Query do
begin
Close;
SQL.Clear;
SQL.Text := sSQL;
Open;
if not IsEmpty then
Result := FieldByName('controle').AsInteger
else
Result := 0;
end;
end;
function ComparaVersoesDB(iControleAplication: Integer): Boolean;
var
i, iControleBanco: Integer;
begin
i := iControleAplication;
//Se existir algum campo novo na tabela então o result é true
iControleBanco := ControleVersaoDB(dm.ControleVersaoDB);
if i > iControleBanco then
Result := True
else
Result := False;
end;
{}
//COMPARA TABELAS
{procedure mostracampos(pQuery: TZQuery; ListarCampos: String);
begin
//Cria a tabela em modo string
with pQuery do
begin
close; //mostra todos os campos criados
SQL.Close;
SQL.Add (' select (rdb$field_name)as Campo from ');
SQL.Add (' rdb$relation_fields ');
SQL.Add (' where rdb$relation_name = ''VERSOES'' ');
SQL.Add (' order by rdb$field_position ');
open;
ListarCampos :=(pQuery.fields[0].AsString);
resultcampos := ListarCampos;
end;
end;
}
//-----------------------------------------------------------------------------
//
// ALTERAÇÃO DAS TABELAS
// Autor: Adriano
// Para alterar os campos das tabelas utilize este espaço
//
//------------------------------------------------------------------------------
procedure AlterTable(pCon: TZConnection; pQuery: TZQuery);
//Procedure para atualizar a versão no banco cfe alteraões
procedure AtualizaVersaoDB(iVarControl: Integer);
begin
with pQuery do
begin
Close;
SQL.Clear;
SQL.Text := ' UPDATE versaodb SET controle = :iControle ';
ParamByName('iControle').AsInteger := iVarControl;
ExecSQL;
DM.connection.Commit;
end;
end;
begin
try
with pQuery do
begin
//Nova atualização
//Data: 04/03/2011
//Cada atualização de campos deve ser incluido uma nova versão
//Passando para versão 1
//Tabela PARAMETROS recebeu novo campo
if TemTabela(pQuery, 'PARAMETROS', EmptyStr) then
begin
{Verifica o controle da ultima versão do banco de dados
se a versão do banco foi inferior a versão passada no parametro então o resultado
é verdadeiro e deve alterar a tabela cfe os novos campos.
OBS: Sempre seguir a sequencia do ID da nova versão}
if ComparaVersoesDB(1) then
begin
Application.ProcessMessages;
try
Close;
SQL.Clear;
SQL.Add (' ALTER TABLE PARAMETROS ');
SQL.Add (' ADD AT_MAIMIN CHAR(1) ');
ExecSQL;
except
//Se der erro dispara um execpt silencioso
end;
//Depois de incluir novos campos na tabela, altera a tabela versaodb
AtualizaVersaoDB(1); // <== MUDA AQUI passando a ID da versão para atualizar a tabela
//
end;
end;
//
//Nova atualização
//Data: 05/03/2011
//Cada atualização de campos deve ser incluido uma nova versão
//Passando para versão 2
//Tabela PARAMETROS recebeu novo campo
if TemTabela(pQuery, 'PARAMETROS', EmptyStr) then
begin
{Verifica o controle da ultima versão do banco de dados
se a versão do banco foi inferior a versão passada no parametro então o resultado
é verdadeiro e deve alterar a tabela cfe os novos campos.
OBS: Sempre seguir a sequencia do ID da nova versão}
if ComparaVersoesDB(2) then // <=== MUDA AQUI
begin
Application.ProcessMessages;
try
Close;
SQL.Clear;
SQL.Add (' ALTER TABLE PARAMETROS ');
SQL.Add (' ADD AT_VALIDCPF CHAR(1), ');
SQL.Add (' ADD AT_VALIDCNPJ CHAR(1), ');
SQL.Add (' ADD AT_VALIDCEI CHAR(1) ');
ExecSQL;
except
//Se der erro dispara um execpt silencioso
end;
//Depois de incluir novos campos na tabela, altera a tabela versaodb
AtualizaVersaoDB(2); // <== MUDA AQUI passando a ID da versão para atualizar a tabela
//
end;
end;
//
//Nova atualização
//Data: 05/03/2011 - 23:00hs
//Cada atualização de campos deve ser incluido uma nova versão
//Passando para versão 3
//Tabela PARAMETROS recebeu novo campo
if TemTabela(pQuery, 'PARAMETROS', EmptyStr) then
begin
{Verifica o controle da ultima versão do banco de dados
se a versão do banco foi inferior a versão passada no parametro então o resultado
é verdadeiro e deve alterar a tabela cfe os novos campos.
OBS: Sempre seguir a sequencia do ID da nova versão}
if ComparaVersoesDB(3) then // <=== MUDA AQUI
begin
Application.ProcessMessages;
try
Close;
SQL.Clear;
SQL.Add (' ALTER TABLE PARAMETROS ');
SQL.Add (' ADD AT_TABLEOPEN CHAR(1) ');
ExecSQL;
except
//Se der erro dispara um execpt silencioso
end;
//Depois de incluir novos campos na tabela, altera a tabela versaodb
AtualizaVersaoDB(3); // <== MUDA AQUI passando a ID da versão para atualizar a tabela
//
end;
end;
//
//
//Nova atualização
//Data: 06/03/2011 - 03:00hs
//Cada atualização de campos deve ser incluido uma nova versão
//Passando para versão 4
//Tabela PARAMETROS recebeu novo campo
if TemTabela(pQuery, 'PARAMETROS', EmptyStr) then
begin
{Verifica o controle da ultima versão do banco de dados
se a versão do banco foi inferior a versão passada no parametro então o resultado
é verdadeiro e deve alterar a tabela cfe os novos campos.
OBS: Sempre seguir a sequencia do ID da nova versão}
if ComparaVersoesDB(4) then // <=== MUDA AQUI
begin
Application.ProcessMessages;
try
Close;
SQL.Clear;
SQL.Add (' ALTER TABLE PARAMETROS ');
SQL.Add (' ADD AT_THEME CHAR(1) ');
ExecSQL;
except
//Se der erro dispara um execpt silencioso
end;
//Depois de incluir novos campos na tabela, altera a tabela versaodb
AtualizaVersaoDB(4); // <== MUDA AQUI passando a ID da versão para atualizar a tabela
//
end;
end;
//
//Nova atualização
//Data: 06/03/2011 - 03:30hs
//Cada atualização de campos deve ser incluido uma nova versão
//Passando para versão 5
//Tabela PARAMETROS recebeu novo campo
if TemTabela(pQuery, 'PARAMETROS', EmptyStr) then
begin
{Verifica o controle da ultima versão do banco de dados
se a versão do banco foi inferior a versão passada no parametro então o resultado
é verdadeiro e deve alterar a tabela cfe os novos campos.
OBS: Sempre seguir a sequencia do ID da nova versão}
if ComparaVersoesDB(5) then // <=== MUDA AQUI
begin
Application.ProcessMessages;
try
Close;
SQL.Clear;
SQL.Add (' ALTER TABLE PARAMETROS ');
SQL.Add (' ADD AT_ABAPAGINA CHAR(1) ');
ExecSQL;
except
//Se der erro dispara um execpt silencioso
end;
//Depois de incluir novos campos na tabela, altera a tabela versaodb
AtualizaVersaoDB(5); // <== MUDA AQUI passando a ID da versão para atualizar a tabela
//
end;
end;
//
//Nova atualização
//Data: 06/03/2011 - 14:00hs
//Cada atualização de campos deve ser incluido uma nova versão
//Passando para versão 6
//PT: 1000 solicitações de novos campos na tabela Orderserv para um
//cliente que tem um trabalho diferenciado com o banco HSBC
//Tabela PARAMETROS recebeu novo campo
if TemTabela(pQuery, 'ORDEMSERV', EmptyStr) then // <== INCLUI O NOME DA TABELA QUE TERÁ NOVOS CAMPOS
begin
{Verifica o controle da ultima versão do banco de dados
se a versão do banco foi inferior a versão passada no parametro então o resultado
é verdadeiro e deve alterar a tabela cfe os novos campos.
OBS: Sempre seguir a sequencia do ID da nova versão}
if ComparaVersoesDB(6) then // <=== MUDA A VERSÃO AQUI
begin
Application.ProcessMessages;
try
Close;
SQL.Clear;
//Aqui é incluido os novos campos cfe script SQL
SQL.Add (' ALTER TABLE ORDEMSERV ');
SQL.Add (' ADD MATRICULAHSBC INTEGER ');
ExecSQL;
except
//Se der erro dispara um execpt silencioso
end;
//Depois de incluir novos campos na tabela, altera a tabela versaodb
AtualizaVersaoDB(6); // <== MUDA AQUI passando a ID da versão para atualizar a tabela
//
end;
end;
//
//Nova atualização
//Data: 13/03/2011 - 11:30hs
//Cada atualização de campos deve ser incluido uma nova versão
//Passando para versão 7
//PT: 1000 solicitações de novos campos na tabela Orderserv para um
//cliente que tem um trabalho diferenciado com o banco HSBC
//Tabela REGISTRO recebeu novos campos
if TemTabela(pQuery, 'REGISTRO', EmptyStr) then // <== INCLUI O NOME DA TABELA QUE TERÁ NOVOS CAMPOS
begin
{Verifica o controle da ultima versão do banco de dados
se a versão do banco foi inferior a versão passada no parametro então o resultado
é verdadeiro e deve alterar a tabela cfe os novos campos.
OBS: Sempre seguir a sequencia do ID da nova versão}
if ComparaVersoesDB(7) then // <=== MUDA A VERSÃO AQUI
begin
Application.ProcessMessages;
try
Close;
SQL.Clear;
//Aqui é incluido os novos campos cfe script SQL
SQL.Add (' ALTER TABLE REGISTRO ');
SQL.Add (' ADD CBIE VARCHAR(2), ');
SQL.Add (' ADD IE VARCHAR(20), ');
SQL.Add (' ADD CEP VARCHAR(15), ');
SQL.Add (' ADD NUMERO VARCHAR(10)');
ExecSQL;
except
//Se der erro dispara um execpt silencioso
end;
//Depois de incluir novos campos na tabela, altera a tabela versaodb
AtualizaVersaoDB(7); // <== MUDA AQUI passando a ID da versão para atualizar a tabela
//
end;
end;
//
//Nova atualização
//Data: 25/03/2011
//Cada atualização de campos deve ser incluido uma nova versão
//Passando para versão 8
//Tabela PARAMETROS recebeu novo campo
if TemTabela(pQuery, 'PARAMETROS', EmptyStr) then
begin
{Verifica o controle da ultima versão do banco de dados
se a versão do banco foi inferior a versão passada no parametro então o resultado
é verdadeiro e deve alterar a tabela cfe os novos campos.
OBS: Sempre seguir a sequencia do ID da nova versão}
if ComparaVersoesDB(8) then
begin
Application.ProcessMessages;
try
Close;
SQL.Clear;
SQL.Add (' ALTER TABLE PARAMETROS ');
SQL.Add (' ADD AT_BUTTONPROCESSAR CHAR(1) ');
ExecSQL;
except
//Se der erro dispara um execpt silencioso
end;
//Depois de incluir novos campos na tabela, altera a tabela versaodb
AtualizaVersaoDB(8); // <== MUDA AQUI passando a ID da versão para atualizar a tabela
end;
end;
//
//Nova atualização
//Data: 27/03/2011
//Cada atualização de campos deve ser incluido uma nova versão
//Passando para versão 9
//Tabela GRUPOUSUARIOS recebeu novo campo
if TemTabela(pQuery, 'GRUPOUSUARIOS', EmptyStr) then
begin
{Verifica o controle da ultima versão do banco de dados
se a versão do banco foi inferior a versão passada no parametro então o resultado
é verdadeiro e deve alterar a tabela cfe os novos campos.
OBS: Sempre seguir a sequencia do ID da nova versão}
if ComparaVersoesDB(9) then
begin
Application.ProcessMessages;
try
Close;
SQL.Clear;
SQL.Add (' ALTER TABLE GRUPOUSUARIOS ');
SQL.Add (' ADD IDEMPRESAS integer ');
ExecSQL;
except
//Se der erro dispara um execpt silencioso
end;
//Depois de incluir novos campos na tabela, altera a tabela versaodb
AtualizaVersaoDB(9); // <== MUDA AQUI passando a ID da versão para atualizar a tabela
//
end;
end;
//
//
//Nova atualização
//Data: 01/04/2011
//Cada atualização de campos deve ser incluido uma nova versão
//Passando para versão 10
//Tabela PERFIL_CONF recebeu novo campo
if TemTabela(pQuery, 'PERFIL_CONF', EmptyStr) then
begin
{Verifica o controle da ultima versão do banco de dados
se a versão do banco foi inferior a versão passada no parametro então o resultado
é verdadeiro e deve alterar a tabela cfe os novos campos.
OBS: Sempre seguir a sequencia do ID da nova versão}
if ComparaVersoesDB(10) then
begin
Application.ProcessMessages;
try
Close;
SQL.Clear;
SQL.Text:= ' ALTER TABLE PERFIL_CONF ADD CONSTRAINT FK_PERFIL_CONF_1'+
' FOREIGN KEY (RELACION_ID) REFERENCES USUARIOS (ID_USUARIO) '+
' ON DELETE CASCADE ON UPDATE CASCADE';
ExecSQL;
except
//Se der erro dispara um execpt silencioso
end;
//Depois de incluir novos campos na tabela, altera a tabela versaodb
AtualizaVersaoDB(10); // <== MUDA AQUI passando a ID da versão para atualizar a tabela
//
end;
end;
//Nova atualização
//Data: 07/09/2011
//Cada atualização de campos deve ser incluido uma nova versão
//Passando para versão 11
//Tabela PARAMETROS recebeu novo campo
if TemTabela(pQuery, 'PARAMETROS', EmptyStr) then
begin
{Verifica o controle da ultima versão do banco de dados
se a versão do banco foi inferior a versão passada no parametro então o resultado
é verdadeiro e deve alterar a tabela cfe os novos campos.
OBS: Sempre seguir a sequencia do ID da nova versão}
if ComparaVersoesDB(11) then
begin
Application.ProcessMessages;
try
Close;
SQL.Clear;
SQL.Text:= ' ALTER TABLE PARAMETROS '+
' ADD AT_BLOQUEAR_SETAS CHAR(1) ';
ExecSQL;
except
//Se der erro dispara um execpt silencioso
end;
//Depois de incluir novos campos na tabela, altera a tabela versaodb
AtualizaVersaoDB(11); // <== MUDA AQUI passando a ID da versão para atualizar a tabela
//
end;
end;
//Nova atualização
//Data: 22/11/2011
//Cada atualização de campos deve ser incluido uma nova versão
//Passando para versão 12
//Tabela PARAMETROS recebeu novo campo
if TemTabela(pQuery, 'PARAMETROS', EmptyStr) then
begin
{Verifica o controle da ultima versão do banco de dados
se a versão do banco foi inferior a versão passada no parametro então o resultado
é verdadeiro e deve alterar a tabela cfe os novos campos.
OBS: Sempre seguir a sequencia do ID da nova versão}
if ComparaVersoesDB(12) then
begin
Application.ProcessMessages;
try
Close;
SQL.Clear;
SQL.Text:= ' ALTER TABLE PARAMETROS '+
' ADD AT_UTILIZAFRACAO_HORA CHAR(1) ';
ExecSQL;
except
//Se der erro dispara um execpt silencioso
end;
//Depois de incluir novos campos na tabela, altera a tabela versaodb
AtualizaVersaoDB(12); // <== MUDA AQUI passando a ID da versão para atualizar a tabela
//
end;
end;
//Nova atualização
//Data: 22/11/2011
//Cada atualização de campos deve ser incluido uma nova versão
//Passando para versão 13
//Tabela PARAMETROS recebeu novo campo
if TemTabela(pQuery, 'PRECO', EmptyStr) then
begin
{Verifica o controle da ultima versão do banco de dados
se a versão do banco foi inferior a versão passada no parametro então o resultado
é verdadeiro e deve alterar a tabela cfe os novos campos.
OBS: Sempre seguir a sequencia do ID da nova versão}
if ComparaVersoesDB(13) then
begin
Application.ProcessMessages;
try
Close;
SQL.Clear;
SQL.Text:= ' ALTER TABLE PRECO '+
' ADD HORA_MEDIA VARCHAR(3), '+
' ADD MEDIA_HORA TIME ';
ExecSQL;
except
//Se der erro dispara um execpt silencioso
end;
//Depois de incluir novos campos na tabela, altera a tabela versaodb
AtualizaVersaoDB(13); // <== MUDA AQUI passando a ID da versão para atualizar a tabela
//
end;
end;
//Nova atualização
//Data: 22/10/2011
//Cada atualização de campos deve ser incluido uma nova versão
//Passando para versão 14
//Tabela PARAMETROS recebeu novo campo
if TemTabela(pQuery, 'PRESERV', EmptyStr) then
begin
{Verifica o controle da ultima versão do banco de dados
se a versão do banco foi inferior a versão passada no parametro então o resultado
é verdadeiro e deve alterar a tabela cfe os novos campos.
OBS: Sempre seguir a sequencia do ID da nova versão}
if ComparaVersoesDB(14) then
begin
Application.ProcessMessages;
try
Close;
SQL.Clear;
SQL.Text:= ' ALTER TABLE PRESERV '+
' ADD HORA_MEDIA VARCHAR(3), '+
' ADD MEDIA_HORA TIME ';
ExecSQL;
except
//Se der erro dispara um execpt silencioso
end;
//Depois de incluir novos campos na tabela, altera a tabela versaodb
AtualizaVersaoDB(14); // <== MUDA AQUI passando a ID da versão para atualizar a tabela
//
end;
end;
//Nova atualização
//Data: 15/11/2011
//Cada atualização de campos deve ser incluido uma nova versão
//Passando para versão 15
//Tabela CONTAS_RECEBER recebeu novo campo
if TemTabela(pQuery, 'CONTAS_RECEBER', EmptyStr) then
begin
{Verifica o controle da ultima versão do banco de dados
se a versão do banco foi inferior a versão passada no parametro então o resultado
é verdadeiro e deve alterar a tabela cfe os novos campos.
OBS: Sempre seguir a sequencia do ID da nova versão}
if ComparaVersoesDB(15) then
begin
Application.ProcessMessages;
try
Close;
SQL.Clear;
SQL.Text:= ' ALTER TABLE CONTAS_RECEBER '+
' ADD FORMAPGTO VARCHAR(30) ';
ExecSQL;
except
//Se der erro dispara um execpt silencioso
end;
//Depois de incluir novos campos na tabela, altera a tabela versaodb
AtualizaVersaoDB(15); // <== MUDA AQUI passando a ID da versão para atualizar a tabela
//
end;
end;
//Nova atualização
//Data: 15/11/2011
//Cada atualização de campos deve ser incluido uma nova versão
//Passando para versão 15
//Tabela FORMAPGTO recebeu novo campo
if TemTabela(pQuery, 'FORMAPGTO', EmptyStr) then
begin
{Verifica o controle da ultima versão do banco de dados
se a versão do banco foi inferior a versão passada no parametro então o resultado
é verdadeiro e deve alterar a tabela cfe os novos campos.
OBS: Sempre seguir a sequencia do ID da nova versão}
if ComparaVersoesDB(16) then
begin
Application.ProcessMessages;
try
Close;
SQL.Clear;
SQL.Text:= ' ALTER TABLE FORMAPGTO '+
' ADD UTILIZAR_EM CHAR(1) ';
ExecSQL;
except
//Se der erro dispara um execpt silencioso
end;
//Depois de incluir novos campos na tabela, altera a tabela versaodb
AtualizaVersaoDB(16); // <== MUDA AQUI passando a ID da versão para atualizar a tabela
//
end;
end;
//Nova atualização
//Data: 25/11/2011
//Cada atualização de campos deve ser incluido uma nova versão
//Passando para versão 17
//Tabela FORMAPGTO recebeu novo campo
if TemTabela(pQuery, 'CONTAS_RECEBER', EmptyStr) then
begin
{Verifica o controle da ultima versão do banco de dados
se a versão do banco foi inferior a versão passada no parametro então o resultado
é verdadeiro e deve alterar a tabela cfe os novos campos.
OBS: Sempre seguir a sequencia do ID da nova versão}
if ComparaVersoesDB(17) then
begin
Application.ProcessMessages;
try
Close;
SQL.Clear;
SQL.Text:= ' ALTER TABLE CONTAS_RECEBER '+
' ADD TIPORECEBIMENTO VARCHAR(50) ';
ExecSQL;
except
//Se der erro dispara um execpt silencioso
end;
//Depois de incluir novos campos na tabela, altera a tabela versaodb
AtualizaVersaoDB(17); // <== MUDA AQUI passando a ID da versão para atualizar a tabela
//
end;
end;
//Nova atualização
//Data: 25/01/2012
//criado uma novo campo
//Passando para versão 18
if TemTabela(pQuery, 'CLIENTES', EmptyStr) then
begin
{Verifica o controle da ultima versão do banco de dados
se a versão do banco foi inferior a versão passada no parametro então o resultado
é verdadeiro e deve alterar a tabela cfe os novos campos.
OBS: Sempre seguir a sequencia do ID da nova versão}
if ComparaVersoesDB(18) then
begin
Application.ProcessMessages;
try
Close;
SQL.Clear;
SQL.Text:= ' ALTER TABLE CLIENTES '+
' ADD FLAG_CEF_TRANSMIT CHAR(1) ';
ExecSQL;
except
//Se der erro dispara um execpt silencioso
end;
//Depois de incluir novos campos na tabela, altera a tabela versaodb
AtualizaVersaoDB(18); // <== MUDA AQUI passando a ID da versão para atualizar a tabela
//
end;
end;
//Nova atualização
//Data: 20/03/2012
//criado uma novo campo
//Passando para versão 19
if TemTabela(pQuery, 'CONTAS_PAGAR', EmptyStr) then
begin
{Verifica o controle da ultima versão do banco de dados
se a versão do banco foi inferior a versão passada no parametro então o resultado
é verdadeiro e deve alterar a tabela cfe os novos campos.
OBS: Sempre seguir a sequencia do ID da nova versão}
if ComparaVersoesDB(19) then
begin
Application.ProcessMessages;
try
Close;
SQL.Clear;
SQL.Text:= ' ALTER TABLE CONTAS_PAGAR '+
' ADD FORMAPGTO VARCHAR(30), '+
' ADD TIPORECEBIMENTO VARCHAR(50) COLLATE WIN_PTBR, '+
' ADD HISTORICO_RECEBIMENTO VARCHAR(255) COLLATE WIN_PTBR, '+
' ADD MOTIVORECEB VARCHAR(20) ';
ExecSQL;
except
//Se der erro dispara um execpt silencioso
end;
//Depois de incluir novos campos na tabela, altera a tabela versaodb
AtualizaVersaoDB(19); // <== MUDA AQUI passando a ID da versão para atualizar a tabela
//
end;
end;
//Nova atualização
//Data: 01/05/2012
//criado uma novo campo
//Passando para versão 20
if TemTabela(pQuery, 'ORDEMSERV', EmptyStr) then
begin
{Verifica o controle da ultima versão do banco de dados
se a versão do banco foi inferior a versão passada no parametro então o resultado
é verdadeiro e deve alterar a tabela cfe os novos campos.
OBS: Sempre seguir a sequencia do ID da nova versão}
if ComparaVersoesDB(20) then
begin
Application.ProcessMessages;
try
Close;
SQL.Clear;
SQL.Text:= ' ALTER TABLE ORDEMSERV '+
' ADD CONTA_CONTABIL VARCHAR(15) ';
ExecSQL;
except
//Se der erro dispara um execpt silencioso
end;
//Depois de incluir novos campos na tabela, altera a tabela versaodb
AtualizaVersaoDB(20); // <== MUDA AQUI passando a ID da versão para atualizar a tabela
//
end;
end;
//Nova atualização
//Data: 27/07/2012
//criado novo parametro na tabela paramentros
if TemTabela(pQuery, 'PARAMETROS', EmptyStr) then
begin
{Verifica o controle da ultima versão do banco de dados
se a versão do banco foi inferior a versão passada no parametro então o resultado
é verdadeiro e deve alterar a tabela cfe os novos campos.
OBS: Sempre seguir a sequencia do ID da nova versão}
if ComparaVersoesDB(21) then
begin
Application.ProcessMessages;
try
Close;
SQL.Clear;
SQL.Text:= ' ALTER TABLE PARAMETROS '+
' ADD AT_GRAVAOSSEMVALOR CHAR(1) ';
ExecSQL;
except
//Se der erro dispara um execpt silencioso
end;
//Depois de incluir novos campos na tabela, altera a tabela versaodb
AtualizaVersaoDB(21); // <== MUDA AQUI passando a ID da versão para atualizar a tabela
//
end;
end;
//Nova atualização
//Data: 20/03/2013
//criado campo na tabela cliente
if TemTabela(pQuery, 'CLIENTES', EmptyStr) then
begin
{Verifica o controle da ultima versão do banco de dados
se a versão do banco foi inferior a versão passada no parametro então o resultado
é verdadeiro e deve alterar a tabela cfe os novos campos.
OBS: Sempre seguir a sequencia do ID da nova versão}
if ComparaVersoesDB(22) then
begin
Application.ProcessMessages;
try
Close;
SQL.Clear;
SQL.Text:= ' ALTER TABLE CLIENTES '+
' ADD FLAG_NFE_EXXMAIS CHAR(3) ';
ExecSQL;
except
//Se der erro dispara um execpt silencioso
end;
//Depois de incluir novos campos na tabela, altera a tabela versaodb
AtualizaVersaoDB(22); // <== MUDA AQUI passando a ID da versão para atualizar a tabela
//
end;
end;
//Nova atualização
//Data: 28/11/2013
//criado campo na tabela cliente
if TemTabela(pQuery, 'CLIENTES', EmptyStr) then
begin
{Verifica o controle da ultima versão do banco de dados
se a versão do banco foi inferior a versão passada no parametro então o resultado
é verdadeiro e deve alterar a tabela cfe os novos campos.
OBS: Sempre seguir a sequencia do ID da nova versão}
if ComparaVersoesDB(23) then
begin
Application.ProcessMessages;
try
Close;
SQL.Clear;
SQL.Text:= ' ALTER TABLE CLIENTES '+
' ALTER EMAILRESP TYPE VARCHAR(255) CHARACTER SET WIN1252 ';
ExecSQL;
except
//Se der erro dispara um execpt silencioso
end;
//Depois de incluir novos campos na tabela, altera a tabela versaodb
AtualizaVersaoDB(23); // <== MUDA AQUI passando a ID da versão para atualizar a tabela
//
end;
end;
//Nova atualização
//Data: 28/11/2013
//criado campo na tabela cliente
if TemTabela(pQuery, 'CLIENTES', EmptyStr) then
begin
{Verifica o controle da ultima versão do banco de dados
se a versão do banco foi inferior a versão passada no parametro então o resultado
é verdadeiro e deve alterar a tabela cfe os novos campos.
OBS: Sempre seguir a sequencia do ID da nova versão}
if ComparaVersoesDB(24) then
begin
Application.ProcessMessages;
try
Close;
SQL.Clear;
SQL.Text:= ' ALTER TABLE CLIENTES '+
' ALTER EMAILCLIE TYPE VARCHAR(255) CHARACTER SET WIN1252 ';
ExecSQL;
except
//Se der erro dispara um execpt silencioso
end;
//Depois de incluir novos campos na tabela, altera a tabela versaodb
AtualizaVersaoDB(24); // <== MUDA AQUI passando a ID da versão para atualizar a tabela
//
end;
end;
//Nova atualização
//Data: 28/11/2013
//criado campo na tabela cliente
if TemTabela(pQuery, 'EMPRESA', EmptyStr) then
begin
{Verifica o controle da ultima versão do banco de dados
se a versão do banco foi inferior a versão passada no parametro então o resultado
é verdadeiro e deve alterar a tabela cfe os novos campos.
OBS: Sempre seguir a sequencia do ID da nova versão}
if ComparaVersoesDB(25) then
begin
Application.ProcessMessages;
try
Close;
SQL.Clear;
SQL.Text:= ' ALTER TABLE EMPRESA '+
' ALTER EMAILEMP TYPE VARCHAR(255) CHARACTER SET WIN1252 ';
ExecSQL;
except
//Se der erro dispara um execpt silencioso
end;
//Depois de incluir novos campos na tabela, altera a tabela versaodb
AtualizaVersaoDB(25); // <== MUDA AQUI passando a ID da versão para atualizar a tabela
//
end;
end;
//Nova atualização
//Data: 28/11/2013
//criado campo na tabela cliente
if TemTabela(pQuery, 'EMPRESA', EmptyStr) then
begin
{Verifica o controle da ultima versão do banco de dados
se a versão do banco foi inferior a versão passada no parametro então o resultado
é verdadeiro e deve alterar a tabela cfe os novos campos.
OBS: Sempre seguir a sequencia do ID da nova versão}
if ComparaVersoesDB(26) then
begin
Application.ProcessMessages;
try
Close;
SQL.Clear;
SQL.Text:= ' ALTER TABLE EMPRESA '+
' ALTER EMAILCOB TYPE VARCHAR(255) CHARACTER SET WIN1252 ';
ExecSQL;
except
//Se der erro dispara um execpt silencioso
end;
//Depois de incluir novos campos na tabela, altera a tabela versaodb
AtualizaVersaoDB(26); // <== MUDA AQUI passando a ID da versão para atualizar a tabela
//
end;
end;
//Nova atualização
//Data: 28/11/2013
//criado campo na tabela cliente
if TemTabela(pQuery, 'MOTOBOY', EmptyStr) then
begin
{Verifica o controle da ultima versão do banco de dados
se a versão do banco foi inferior a versão passada no parametro então o resultado
é verdadeiro e deve alterar a tabela cfe os novos campos.
OBS: Sempre seguir a sequencia do ID da nova versão}
if ComparaVersoesDB(27) then
begin
Application.ProcessMessages;
try
Close;
SQL.Clear;
SQL.Text:= ' ALTER TABLE MOTOBOY '+
' ALTER EMAIL TYPE VARCHAR(255) CHARACTER SET WIN1252 ';
ExecSQL;
except
//Se der erro dispara um execpt silencioso
end;
//Depois de incluir novos campos na tabela, altera a tabela versaodb
AtualizaVersaoDB(27); // <== MUDA AQUI passando a ID da versão para atualizar a tabela
//
end;
end;
//
//----------------------------------------------------
end; //Final do with
except
on E: Exception do
begin
pt_messagedlg ('Ocorreu um erro ao criar a Tabela. ' +#13#13 +'Erro gerado: '+#13+
E.Message + #13#13 + 'Todo o processo foi abortado!', mtError, [mbOk],0);
pcon.Rollback; //referente ao ZConnetcion
Abort;
end;
end;
end;
//-----------------------------------------------------------------------------
//
// CRIAÇÃO DAS TABELAS
// Autor: Adriano
// Para incluir novas tabelas utilize este espaço
//
//------------------------------------------------------------------------------
procedure CreateTable(pCon: TZConnection; pQuery: TZQuery);
var
seExiste, i : integer;
ListaCampos : TStringList;
Lista, resultcampos, camposarmazenado, extraicampos : string;
sqlcriartable, ListarTabela: string;
vTerceira, xmc, xtz : String;
begin
try
{ bloco que reune todos as criações das tabelas }
with pQuery do
begin
//aqui vou criar as tabelas em scripts usando uma variavel string
// e usar o zporcessor para criar no banco
//Trigger Altera cadastro clientes ordemserv
//trigger DELCONDUTORCASCATA
if (not TemTrigger (pQuery, 'UPD_CADLCLIE_ORDEM')) then
begin
//frmsplash.lblaguarde.caption:= 'Criando Trigger cascata';
Application.ProcessMessages;
Close;
SQL.Text := ' CREATE OR ALTER TRIGGER UPD_CADLCLIE_ORDEM FOR CLIENTES '+
' ACTIVE BEFORE UPDATE POSITION 0 '+
' AS '+
' BEGIN '+
' UPDATE ORDEMSERV SET '+
' IDCLIENTES = NEW.IDCLIENTES, '+
' NOMECLIE = NEW.NOMECLIE, '+
' ENDERCLIE = NEW.ENDERCLIE, '+
' TELCLIE = NEW.TELCLIE1, '+
' BAIRROCLIE = NEW.BAIRROCLIE, '+
' CIDADECLIE = NEW.CIDADECLIE, '+
' UFCLIE = NEW.UFCLIE '+
' WHERE IDCLIENTES = NEW.IDCLIENTES; '+
' END ';
ExecSQL;
end;
//trigger DELCONDUTORCASCATA
if (not TemTrigger (pQuery, 'DELCONDUTORCASCATA')) then
begin
//frmsplash.lblaguarde.caption:= 'Criando Trigger cascata';
Application.ProcessMessages;
Close;
SQL.Text := ' CREATE OR ALTER TRIGGER DELCONDUTORCASCATA FOR MOTOBOY '+
' ACTIVE BEFORE DELETE POSITION 0 '+
' AS '+
' begin '+
' DELETE FROM vale '+
' WHERE (IDFUNCIONA = OLD.IDMOTOBOY); '+
' end ';
ExecSQL;
end;
if (not temtabela (pQuery, 'PERIODO_RELATORIO', '')) then
begin
//frmsplash.lblaguarde.caption:= 'Criando Tabela MULTI-EMPRESAS';
application.processmessages;
// Tabela PERIODO_RELATORIO
Close;
SQL.Clear;
SQL.Text := ' CREATE TABLE PERIODO_RELATORIO( '+
' DATAINICIAL DATE, DATAFINAL DATE ) ';
ExecSQL;
end;
//MONTAGEM DA TABELA MULTI-EMPRESAS
if (not temtabela (pQuery, 'MULTEMPR', '')) then
begin
//frmsplash.lblaguarde.caption:= 'Criando Tabela MULTI-EMPRESAS';
application.processmessages;
// Tabela Associados
Close;
SQL.Clear;
SQL.Add (' CREATE TABLE multempr( ');
SQL.Add (' id integer, ');
SQL.Add (' idempresas integer, ');
SQL.Add (' cnpjempresa varchar(18), ');
SQL.Add (' nmempresa varchar(50) ');
SQL.Add (' CHARACTER SET WIN1252 COLLATE WIN_PTBR ');
SQL.Add (' ) ');
execsql;
end;
//indices MULTIEMPRESAS
if (not temindice(pQuery, 'IDXMULTEMPR')) then
begin
//frmsplash.lblaguarde.caption:= 'Criando Indices MULTI-EMPRESAS';
application.processmessages;
Close;
SQL.Clear;
SQL.Add (' CREATE INDEX idxMULTEMPR on MULTEMPR (id, idempresas) ');
execsql;
end;
// GENERATORS MULTEMPRESAS
if (not temgenerator (pQuery, 'GEN_MULTEMPR_ID')) then
begin
//frmsplash.lblaguarde.caption:= 'Criando GENERATORS MULTI-EMPRESAS';
application.processmessages;
Close;
SQL.Clear;
SQL.Add (' CREATE GENERATOR GEN_MULTEMPR_ID ');
execsql;
end;
//trigger MULTEMPRESAS
if (not temtrigger (pQuery, 'MULTEMPR_BI')) then
begin
//frmsplash.lblaguarde.caption:= 'Criando Trigger MULTI-EMPRESAS';
application.processmessages;
Close;
SQL.Clear;
SQL.Add (' CREATE or alter trigger MULTEMPR_BI FOR MULTEMPR ');
SQL.Add (' active before insert or update position 0 ');
SQL.Add (' as begin ');
SQL.Add (' if (new.id is null) then ');
SQL.Add (' new.id = gen_id(GEN_MULTEMPR_ID,1); ');
SQL.Add (' end ');
execsql;
end;
//Autor: Adriano
//Data: 10/05/2011
{AT0099_0905211 - No formulário “Cadastro de Cliente” criar uma aba com
o nome “Solicitante”, está aba deve ter o mesmo processo da aba “Centro
Custo”. Para que o usuário cadastre todas as pessoas autorizadas a
solicitar serviço. }
//MONTAGEM DA TABELA SOLICITANTE
if (not TemTabela(pQuery, 'SOLICITANTEIND', '')) then
begin
//frmsplash.lblaguarde.caption:= 'Criando Tabela SOLICITANTEIND';
application.processmessages;
// Tabela Associados
Close;
SQL.Clear;
SQL.Add (' CREATE TABLE SOLICITANTEIND ( ');
SQL.Add (' IDSOLICITANTEIND INTEGER,, ');
SQL.Add (' IDCLIENTES INTEGER, ');
SQL.Add (' IDEMPRESAS INTEGER, ');
SQL.Add (' CDSOLICITANTEIND VARCHAR(8), ');
SQL.Add (' NOMESOLICITANTEIND VARCHAR(50) COLLATE WIN_PTBR, ');
SQL.Add (' ACESSO CHAR(1), ');
SQL.Add (' USUARIO VARCHAR(50), ');
SQL.Add (' DATAACESSO TIMESTAMP ');
SQL.Add (' ) ');
ExecSQL;
end;
//indices SOLICITANTEIND
if (not TemIndice(pQuery, 'IDXSOLICITANTEIND')) then
begin
//frmsplash.lblaguarde.caption:= 'Criando Indices SOLICITANTEIND';
application.processmessages;
Close;
SQL.Clear;
SQL.Add (' CREATE INDEX idxSOLICITANTEIND on SOLICITANTEIND (IDSOLICITANTEIND) ');
ExecSQL;
end;
// GENERATORS IDSOLICITANTEIND
if (not TemGenerator(pQuery, 'GEN_SOLICITANTEIND_ID')) then
begin
//frmsplash.lblaguarde.caption:= 'Criando GENERATORS IDSOLICITANTEIND';
application.processmessages;
Close;
SQL.Clear;
SQL.Add (' CREATE GENERATOR GEN_SOLICITANTEIND_ID ');
ExecSQL;
end;
//trigger IDSOLICITANTEIND
if (not temtrigger (pQuery, 'SOLICITANTEIND_BI')) then
begin
//frmsplash.lblaguarde.caption:= 'Criando Trigger IDSOLICITANTEIND';
application.processmessages;
Close;
SQL.Clear;
SQL.Add (' CREATE or alter trigger SOLICITANTEIND_BI FOR SOLICITANTEIND ');
SQL.Add (' active before insert or update position 0 ');
SQL.Add (' as begin ');
SQL.Add (' if (NEW.IDSOLICITANTEIND is null) then ');
SQL.Add (' NEW.IDSOLICITANTEIND = gen_id(GEN_SOLICITANTEIND_ID,1); ');
SQL.Add (' end ');
ExecSQL;
end;
//Autor: Adriano
//Data: 26/03/2011
//MONTAGEM DA TABELA GRUPO DE USUARIOS
if (not temtabela (pQuery, 'GRUPOUSUARIOS', '')) then
begin
//frmsplash.lblaguarde.caption:= 'Criando Tabela GRUPOUSUARIOS';
application.processmessages;
// Tabela Associados
Close;
SQL.Clear;
SQL.Add (' CREATE TABLE grupousuarios( ');
SQL.Add (' id integer not null PRIMARY KEY, ');
SQL.Add (' grupo varchar(50) ');
SQL.Add (' CHARACTER SET WIN1252 COLLATE WIN_PTBR,');
SQL.Add (' nivel integer, ');
SQL.Add (' mesmogrupo char(1), ');
SQL.Add (' criasubgrupo char(1), ');
SQL.Add (' subgrupo varchar(50) ');
SQL.Add (' CHARACTER SET WIN1252 COLLATE WIN_PTBR ');
SQL.Add (' ) ');
execsql;
end;
//indices GRUPO DE USUARIOS
if (not temindice(pQuery, 'IDXGRUPOUSUARIOS')) then
begin
//frmsplash.lblaguarde.caption:= 'Criando Indices GRUPOUSUARIOS';
application.processmessages;
Close;
SQL.Clear;
SQL.Add (' CREATE INDEX idxGRUPOUSUARIOS on GRUPOUSUARIOS (id) ');
execsql;
end;
// GENERATORS GRUPOUSUARIOS
if (not temgenerator (pQuery, 'GEN_GRUPOUSUARIOS_ID')) then
begin
//frmsplash.lblaguarde.caption:= 'Criando GENERATORS GRUPOUSUARIOS';
application.processmessages;
Close;
SQL.Clear;
SQL.Add (' CREATE GENERATOR GEN_GRUPOUSUARIOS_ID ');
execsql;
end;
//trigger GRUPOSUSUARIOS
if (not temtrigger (pQuery, 'GRUPOUSUARIOS_BI')) then
begin
//frmsplash.lblaguarde.caption:= 'Criando Trigger GRUPOUSUARIOS';
application.processmessages;
Close;
SQL.Clear;
SQL.Add (' CREATE or alter trigger GRUPOUSUARIOS_BI FOR GRUPOUSUARIOS ');
SQL.Add (' active before insert or update position 0 ');
SQL.Add (' as begin ');
SQL.Add (' if (new.id is null) then ');
SQL.Add (' new.id = gen_id(GEN_GRUPOUSUARIOS_ID,1); ');
SQL.Add (' end ');
execsql;
end;
//Autor: Adriano
//Data: 04/03/2011
//Tabela para controle de versoes
//MONTAGEM DA TABELA VERSAODB
if (not TemTabela(pQuery, 'VERSAODB', EmptyStr)) then
begin
////frmsplash.lblaguarde.caption:= 'Criando Tabela VERSAODB';
Application.ProcessMessages;
Close;
SQL.Clear;
SQL.Add (' CREATE TABLE versaodb( ');
SQL.Add (' controle integer ');
SQL.Add (' ) ');
ExecSQL;
end;
//indices VERSAODB
if (not TemIndice(pQuery, 'IDXVERSAODB')) then
begin
////frmsplash.lblaguarde.caption:= 'Criando Indices VERSAODB';
Application.Processmessages;
Close;
SQL.Clear;
SQL.Add (' CREATE INDEX idxVERSAODB on VERSAODB(controle) ');
ExecSQL;
end;
//Autor: Adriano
//Data: 04/03/2011
//Novas tabelas
//MONTAGEM DA TABELA PARAMETROS
if (not temtabela (pQuery, 'PARAMETROS', EmptyStr)) then
begin
////frmsplash.lblaguarde.caption:= 'Criando Tabela PARAMETROS';
Application.ProcessMessages;
Close;
SQL.Clear;
SQL.Add (' CREATE TABLE parametros( ');
SQL.Add (' id integer, ');
SQL.Add (' at_buscacep char(1), ');
SQL.Add (' at_validarcnh char(1), ');
SQL.Add (' at_utilizarcampostatusOS char(1), ');
SQL.Add (' at_visiblematriculaOS char(1) ');
SQL.Add (' CHARACTER SET WIN1252 COLLATE WIN_PTBR ');
SQL.Add (' ) ');
ExecSQL;
end;
//indices PARAMETROS
if (not temindice (pQuery, 'IDXPARAMETROS')) then
begin
////frmsplash.lblaguarde.caption:= 'Criando Indices PARAMETROS';
application.processmessages;
Close;
SQL.Clear;
SQL.Add (' CREATE INDEX idxPARAMETROS on PARAMETROS (id) ');
ExecSQL;
end;
// GENERATORS PARAMETROS
if (not temgenerator (pQuery, 'GEN_PARAMETROS_ID')) then
begin
////frmsplash.lblaguarde.caption:= 'Criando GENERATORS PARAMETROS';
application.processmessages;
close;
SQL.Clear;
SQL.Add (' CREATE GENERATOR GEN_PARAMETROS_ID ');
execsql;
end;
//trigger PARAMETROS
if (not temtrigger (pQuery, 'PARAMETROS_BI')) then
begin
////frmsplash.lblaguarde.caption:= 'Criando Trigger PARAMETROS';
application.processmessages;
close;
SQL.Clear;
SQL.Add (' CREATE or alter trigger PARAMETROS_BI FOR PARAMETROS ');
SQL.Add (' active before insert or update position 0 ');
SQL.Add (' as begin ');
SQL.Add (' if (new.id is null) then ');
SQL.Add (' new.id = gen_id(GEN_PARAMETROS_ID,1); ');
SQL.Add (' end ');
execsql;
end;
//Autor: Adriano
//Data: 01/04/2011
//Novas tabelas
//MONTAGEM DA TABELA perfil_conf
if (not temtabela (pQuery, 'PERFIL_CONF', EmptyStr)) then
begin
////frmsplash.lblaguarde.caption:= 'Criando Tabela PERFIL_CONF';
Application.ProcessMessages;
Close;
SQL.Clear;
SQL.Text := ' CREATE TABLE PERFIL_CONF ( '+
' NAME VARCHAR(75) NOT NULL,'+
' CAPTION VARCHAR(75),'+
' PERMISSAO CHAR(1),'+
' PERFILID INTEGER NOT NULL PRIMARY KEY,'+
' RELACION_ID INTEGER NOT NULL,'+
' MENUVISIBLE CHAR(1) )';
ExecSQL;
end;
//indices PERFIL_CONF
if (not temindice (pQuery, 'IDXPERFIL_CONF')) then
begin
////frmsplash.lblaguarde.caption:= 'Criando Indices PERFIL_CONF';
application.processmessages;
Close;
SQL.Clear;
SQL.Add (' CREATE INDEX idxPERFIL_CONF on PERFIL_CONF (PERFILID) ');
ExecSQL;
end;
// GENERATORS PERFIL_CONF
if (not temgenerator (pQuery, 'GEN_PERFIL_CONF_ID')) then
begin
////frmsplash.lblaguarde.caption:= 'Criando GENERATORS PERFIL_CONF';
application.processmessages;
close;
SQL.Clear;
SQL.Add (' CREATE GENERATOR GEN_PERFIL_CONF_ID ');
execsql;
end;
//trigger PERFIL_CONF
if (not temtrigger (pQuery, 'PERFIL_CONF_BI')) then
begin
////frmsplash.lblaguarde.caption:= 'Criando Trigger PERFIL_CONF';
application.processmessages;
close;
SQL.Clear;
SQL.Text := 'CREATE OR ALTER TRIGGER PERFIL_CONF_BI FOR PERFIL_CONF '+
' ACTIVE BEFORE INSERT OR UPDATE POSITION 0'+
' AS'+
' BEGIN'+
' IF (NEW.PERFILID IS NULL) THEN'+
' NEW.PERFILID = GEN_ID(GEN_PERFIL_CONF_ID,1);'+
' END';
ExecSQL;
end;
//**************************************************************
//MOTAGEM DA TABELA CLIENTE
if (not temtabela (pQuery, 'CLIENTES', '')) then
begin
////frmsplash.lblaguarde.caption:= 'Criando Tabela CLIENTES';
application.processmessages;
// Tabela Associados
close;
SQL.Clear;
SQL.Add (' CREATE TABLE clientes ( ');
SQL.Add (' idclientes integer, ');
SQL.Add (' idempresas integer, '); //referencia para multempresa
SQL.Add (' datacad date, ');
SQL.Add (' situacaoclie varchar(20), ');
SQL.Add (' nomeclie varchar(50) ');
SQL.Add (' CHARACTER SET WIN1252 COLLATE WIN_PTBR, ');
SQL.Add (' tipocnpj varchar(4), ');
SQL.Add (' cnpjclie varchar(18), ');
SQL.Add (' ufie varchar(2), ');
SQL.Add (' ieclie varchar(20), ');
SQL.Add (' rg varchar(20), ');
SQL.Add (' enderclie varchar(50) ');
SQL.Add (' CHARACTER SET WIN1252 COLLATE WIN_PTBR, ');
SQL.Add (' numclie varchar(10), ');
SQL.Add (' bairroclie varchar(50), ');
SQL.Add (' complclie varchar(50), ');
SQL.Add (' cidadeclie varchar(50) ');
SQL.Add (' CHARACTER SET WIN1252 COLLATE WIN_PTBR, ');
SQL.Add (' ufclie varchar(2), ');
SQL.Add (' telclie1 varchar(14), ');
SQL.Add (' telclie2 varchar(14), ');
SQL.Add (' faxclie varchar(14), ');
SQL.Add (' celularclie varchar(14), ');
SQL.Add (' emailclie varchar(50), ');
SQL.Add (' siteclie varchar(50), ');
SQL.Add (' fantasiaclie varchar(30), ');
SQL.Add (' cepclie varchar(10), ');
SQL.Add (' obs blob sub_type 1 segment size 80, ');
SQL.Add (' endcob varchar(50), ');
SQL.Add (' numcob varchar(10), ');
SQL.Add (' baircob varchar(50), _________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree |
|
Voltar ao Topo |
|
|
hjmarcon Aprendiz
Registrado: Segunda-Feira, 16 de Julho de 2007 Mensagens: 112
|
Enviada: Ter Set 19, 2017 11:37 am Assunto: |
|
|
Adriano, muito obrigado por sua prontidão, como sempre, em responder e ajudar.
Olhando seu código, vi que não usa o SET TERM na criação das triggers e resolvi testar sem esse termo.
E FUNCIONOU!
A minha rotina ficou exatamente igual, a única alteração foi remover os SET TERM.
Mais uma vez, muito obrigado. Sucesso! |
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
|
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|