jpfassis

Update_BD - Delphi

Nov 21st, 2020
812
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. unit UAtualiza_BD;
  2.  
  3. //Atualização do BD é chamado no Datamodule_Atualização
  4. //no evento oncreate
  5.  
  6. interface
  7.  
  8. uses
  9.   UUpdadeDataBase.Interfaces, SysUtils, Dialogs, Forms;
  10.  
  11. type
  12.   TUpdateDataBase = class(TInterfacedObject, iUpdateDataBase)
  13.     private
  14.       FVersaoBD : Integer;
  15.       procedure Update_0_To_1;
  16.       procedure Update_1_To_2;
  17.       procedure Update_2_To_3;
  18.       procedure MostrarVersaoBD;
  19.       procedure ExecutaSQL(aValue : String);
  20.       procedure ExecutaSQLDirect(aValue : String);
  21.       procedure ExecutaSQLAddColumn(aTable : String; aCampo : String; aTipoCampo : String);
  22.       procedure ExecutaSQLAlterType(aTable : String; aCampo : String; aTipoCampo : String);
  23.       procedure ExecutaSQLAlterColumn(aTable : String; aCampo : String; aToCampo : String);
  24.       procedure ExecutaSQLDropColumn(aTabela : String; aCampo : String);
  25.       procedure ExecutaSQLDropView(aView : String);
  26.       procedure ExecutaSQLDropTable(aTable : String);
  27.       procedure ExecutaSQLCreateView(aView : String; aSQL : String);
  28.       procedure ExecutaSQLCreateTable(aTable : String; aSQL : String);
  29.       procedure ExecutaSQLCreateGenerator(aGenerator : String);
  30.       procedure ExecutaSQLDropGenerator(aGenerator : String);
  31.       procedure ExecutaSQLCreateStoreProcedure(aProcedure : String; aSQL : String);
  32.       procedure ExecutaSQLDropStoreProcedure(aProcedure : String);
  33.       procedure ExecutaSQLDropIndex(aNameIndex : String);
  34.       procedure ExecutaSQLCreateIndex(aNameIndex : String; aTable : String; aCampo : String);
  35.  
  36.     public
  37.      constructor Create;
  38.      destructor Destroy; override;
  39.      function Versao(aValue : Integer) : iUpdateDataBase;
  40.      function UpdateBD : iUpdateDataBase;
  41.      class function New : iUpdateDataBase;
  42.   end;
  43.  
  44. implementation
  45.  
  46. uses
  47.   UDataModule_Atualizacao;
  48.  
  49. { TUpdateDataBase }
  50.  
  51. //Atualização do BD é chamado no Datamodule_Atualização
  52. //no evento oncreate
  53.  
  54. procedure TUpdateDataBase.Update_0_To_1;
  55. var
  56. SQL : string;
  57. begin
  58.     //01
  59.     //efetua atualizações no BD
  60.  
  61.     ExecutaSQLAddColumn('EMPRESAS', 'VERSAO_BD', 'Integer');
  62.  
  63.     ExecutaSQLAlterColumn('EMPRESAS', 'CST_PADRAO', 'CST_ICMS_PADRAO');
  64.     ExecutaSQLAddColumn('EMPRESAS', 'CST_PIS_PADRAO', 'Varchar(10)');
  65.     ExecutaSQLAddColumn('EMPRESAS', 'CST_COFINS_PADRAO', 'Varchar(10)');
  66.     ExecutaSQLAddColumn('PRODUTOS', 'Taxa_Comissao', 'Double Precision');
  67.     ExecutaSQLAddColumn('RESUMO_PEDIDOS', 'FORMA_PAGAMENTO', 'Varchar(50)');
  68.     ExecutaSQLAddColumn('HISTORICO', 'TIPO_Orc_Ped_NFE', 'Varchar(10)');
  69.     ExecutaSQLAlterType('PRODUTOS', 'COLECAO', 'Varchar(15)');
  70.     ExecutaSQLDropColumn('PRODUTOS', 'Abre_Cons_Prod');
  71.     ExecutaSQLAddColumn('EMPRESAS', 'Abre_Cons_Prod', 'Varchar(3)');
  72.     ExecutaSQLAddColumn('EMPRESAS', 'ID_UNID_MEDIDA_PADRAO', 'Integer');
  73.     ExecutaSQLDropColumn('EMPRESAS', 'ID_Forma_Pamento_Entrada_Padrao');
  74.     ExecutaSQLAddColumn('EMPRESAS', 'ID_Forma_Pagto_Entrada_Padrao', 'Integer');
  75.     ExecutaSQLAddColumn('USUARIOS', 'Valor_Comissao', 'Double Precision');
  76.     ExecutaSQLAddColumn('EMPRESAS', 'FORN_CONSULTA_POR', 'Varchar(25)');
  77.     ExecutaSQLAddColumn('CONDICOES_PAGAMENTO', 'Cartao_Debito_Credito', 'Varchar(8)');
  78.     ExecutaSQLAddColumn('PEDIDOS', 'STATUS_SAT', 'Varchar(10)');
  79.     ExecutaSQLAddColumn('CONFIGURA_SAT', 'VERSAO', 'Varchar(5)');
  80.     ExecutaSQLAddColumn('EMPRESAS', 'ESPACO_BORDA_IMAGE_PRINC', 'Integer');
  81.     ExecutaSQLAddColumn('PEDIDOS', 'SAT_ANO_MES', 'Varchar(7)');
  82.     ExecutaSQLAddColumn('PEDIDOS', 'SAT_NOME_ARQUIVO_EMITIDO', 'Varchar(60)');
  83.     ExecutaSQLAddColumn('PEDIDOS', 'SAT_NUMERO_ID', 'Varchar(15)');
  84.     ExecutaSQLAlterType('PEDIDOS', 'SAT_NOME_ARQUIVO_EMITIDO', 'Varchar(150)');
  85.     ExecutaSQLAlterType('CONFIGURA_SAT', 'ARQ_LOG', 'Varchar(200)');
  86.     ExecutaSQLAlterType('CONFIGURA_SAT', 'IDENTAR_XML', 'Varchar(5)');
  87.     ExecutaSQLAlterType('CONFIGURA_SAT', 'EH_UTF8', 'Varchar(5)');
  88.     ExecutaSQLAlterType('CONFIGURA_SAT', 'SALVAR_CFE', 'Varchar(5)');
  89.     ExecutaSQLAlterType('CONFIGURA_SAT', 'SALVAR_CFE_CANC', 'Varchar(5)');
  90.     ExecutaSQLAlterType('CONFIGURA_SAT', 'SALVAR_ENVIO', 'Varchar(5)');
  91.     ExecutaSQLAlterType('CONFIGURA_SAT', 'SEPARAR_CNPJ', 'Varchar(5)');
  92.     ExecutaSQLAlterType('CONFIGURA_SAT', 'SEPARAR_MES', 'Varchar(5)');
  93.     ExecutaSQLAlterType('CONFIGURA_SAT', 'MODELO', 'Varchar(200)');
  94.     ExecutaSQLAddColumn('PEDIDOS', 'SAT_XML_EMITIDO', 'BLOB SUB_TYPE TEXT SEGMENT SIZE 80');
  95.     ExecutaSQLAlterType('ITENS_PED', 'CSOSN', 'Varchar(10)');
  96.     ExecutaSQLAlterType('ITENS_PED', 'CFOP', 'Varchar(10)');
  97.     ExecutaSQLDropColumn('ITENS_PED', 'CST');
  98.     ExecutaSQLDropColumn('ITENS_PED', 'CRT_Padro');
  99.     ExecutaSQLDropColumn('ITENS_PED', 'CSOSN_Padrao');
  100.     ExecutaSQLDropColumn('ITENS_PED', 'CST_ICMS_Padrao');
  101.     ExecutaSQLDropColumn('ITENS_PED', 'CST_IPI_Padrao');
  102.     ExecutaSQLDropColumn('ITENS_PED', 'CST_PIS_Padrao');
  103.     ExecutaSQLDropColumn('ITENS_PED', 'CST_COFINS_Padrao');
  104.     ExecutaSQLDropColumn('ITENS_PED', 'CST_COFINS_Padrao');
  105.     ExecutaSQLDropColumn('ITENS_PED', 'CFOP_Padrao');
  106.     ExecutaSQLAddColumn('ITENS_PED', 'CRT', 'Varchar(10)');
  107.     ExecutaSQLAddColumn('ITENS_PED', 'CST_ICMS', 'Varchar(10)');
  108.     ExecutaSQLAddColumn('ITENS_PED', 'CST_IPI', 'Varchar(10)');
  109.     ExecutaSQLAddColumn('ITENS_PED', 'CST_PIS', 'Varchar(10)');
  110.     ExecutaSQLAddColumn('ITENS_PED', 'CST_COFINS', 'Varchar(10)');
  111.     ExecutaSQLAddColumn('ITENS_PED', 'ID_PEDIDO_DEVOLUCAO', 'Integer');
  112.     ExecutaSQLAddColumn('ITENS_PED', 'ID_CLIENTE_DEVOLUCAO', 'Integer');
  113.  
  114.     ExecutaSQLAddColumn('PEDIDOS', 'CPF_INFORMADO', 'Varchar(15)');
  115.     ExecutaSQLAddColumn('PEDIDOS', 'NUM_PESSOAS', 'Integer');
  116.     ExecutaSQLAddColumn('PEDIDOS', 'NUM_MESA', 'Integer');
  117.  
  118.     ExecutaSQLAddColumn('EMPRESAS', 'SSLLIB_NFE', 'Varchar(25)');
  119.     ExecutaSQLAddColumn('EMPRESAS', 'CRYPTLIB_NFE', 'Varchar(25)');
  120.     ExecutaSQLAddColumn('EMPRESAS', 'HTTPLIB_NFE', 'Varchar(25)');
  121.     ExecutaSQLAddColumn('EMPRESAS', 'XMLSIGNLIB_NFE', 'Varchar(25)');
  122.     ExecutaSQLAddColumn('EMPRESAS', 'TENTATIVAS_NFE', 'Integer');
  123.     ExecutaSQLAddColumn('EMPRESAS', 'TIMEOUT_NFE', 'Integer');
  124.     ExecutaSQLAddColumn('EMPRESAS', 'SSLTYPE_NFE', 'Varchar(15)');
  125.     ExecutaSQLAddColumn('EMPRESAS', 'CAMINHO_CERTIFICADO_PFX_NFE', 'Varchar(150)');
  126.     ExecutaSQLAddColumn('EMPRESAS', 'SENHA_CERTIFICADO_NFE', 'Varchar(150)');
  127.     ExecutaSQLAddColumn('EMPRESAS', 'VERSAO_WEBSERVICE_NFE', 'Varchar(15)');
  128.     ExecutaSQLAddColumn('EMPRESAS', 'CONTADOR_NOME', 'Varchar(60)');
  129.     ExecutaSQLAddColumn('EMPRESAS', 'CONTADOR_EMAIL', 'Varchar(60)');
  130.     ExecutaSQLAddColumn('EMPRESAS', 'CONTADOR_TELEFONE', 'Varchar(20)');
  131.     ExecutaSQLAddColumn('CONTAS_PAGAR', 'ID_GRUPO_CONTAS', 'Integer');
  132.     ExecutaSQLAddColumn('CONTAS_RECEBER', 'ID_GRUPO_CONTAS', 'Integer');
  133.     ExecutaSQLAlterType('EMPRESAS', 'AMBIENTE_NFE', 'Varchar(15)');
  134.     ExecutaSQLAddColumn('PRODUTOS', 'ID_ALMOXARIFADO', 'Integer');
  135.  
  136.     ExecutaSQLDropView('V_PARCELAMENTO');
  137.     SQL:='';
  138.     SQL:='CREATE VIEW V_PARCELAMENTO('+
  139.          'ID_PARCELAMENTO, VALOR, ID_FORMA_PAGAMENTO, DATA_VENCIMENTO, ID_ORC_PED_NFE, '+
  140.          ' TIPO_ORC_PED_NFE, NOME, ID_COND_PAGAMENTO '+
  141.          ') AS '+
  142.          ' SELECT P.ID_PARCELAMENTO, P.VALOR, P.ID_FORMA_PAGAMENTO, P.DATA_VENCIMENTO, P.ID_ORC_PED_NFE, '+
  143.          ' P.Tipo_Orc_Ped_NFE, CP.NOME, CP.ID_COND_PAGAMENTO'+
  144.          ' FROM PARCELAMENTO P'+
  145.          ' LEFT JOIN CONDICOES_PAGAMENTO CP ON (P.ID_FORMA_PAGAMENTO = CP.ID_COND_PAGAMENTO)';
  146.     ExecutaSQLCreateView('V_PARCELAMENTO', SQL);
  147.  
  148.  
  149.     ExecutaSQLDropTable('RESUMO_FINANC_RECEB_A_VISTA');
  150.     ExecutaSQLDropStoreProcedure('SP_GEN_RES_FIN_REC_A_VISTA_ID');
  151.     ExecutaSQLDropGenerator('GEN_RES_FIN_REC_A_VISTA');
  152.     SQL:='';
  153.     SQL:=' CREATE TABLE RESUMO_FINANC_RECEB_A_VISTA ( '+
  154.          ' ID_RESUMO Integer PRIMARY KEY, '+
  155.          ' VALOR_TOTAL Double Precision, '+
  156.          ' FORMA_PAGAMENTO Varchar(50) ); ';
  157.     ExecutaSQLCreateTable('RESUMO_FINANC_RECEB_A_VISTA', SQL);
  158.     ExecutaSQLCreateGenerator('GEN_RES_FIN_REC_A_VISTA');
  159.     SQL:='';
  160.     SQL:=' CREATE PROCEDURE SP_GEN_RES_FIN_REC_A_VISTA_ID '+
  161.          ' RETURNS (ID INTEGER) '+
  162.          ' AS '+
  163.          ' BEGIN '+
  164.          ' ID = GEN_ID(GEN_RES_FIN_REC_A_VISTA, 1); '+
  165.          ' SUSPEND; '+
  166.          ' END; ';
  167.     ExecutaSQLCreateStoreProcedure('SP_GEN_RES_FIN_REC_A_VISTA_ID', SQL);
  168.  
  169.     ExecutaSQL('UPDATE EMPRESAS SET VERSAO_BD = 1 WHERE ID_EMPRESA > 0');
  170.     ExecutaSQL('COMMIT WORK');
  171.     FVersaoBD := 1;
  172.  
  173.     MostrarVersaoBD;
  174.  
  175.  
  176. end;
  177.  
  178. procedure TUpdateDataBase.Update_1_To_2;
  179. var
  180. SQL : string;
  181. begin
  182.     //02
  183.     //efetua atualizações no BD
  184.     SQL:='';
  185.     SQL:=' CREATE TABLE GRUPOS_CONTAS ( '+
  186.          ' ID_Grupo_Contas integer PRIMARY KEY, '+
  187.          ' Nome Varchar(35), '+
  188.          ' Data_Cadastro Date, '+
  189.          ' Data_Alteracao Date); ';
  190.     ExecutaSQLCreateTable('GRUPOS_CONTAS', SQL);
  191.     ExecutaSQLCreateIndex('GRUPOS_CONTAS_ID_INDEX', 'GRUPOS_CONTAS', 'ID_Grupo_Contas');
  192.     ExecutaSQLCreateIndex('GRUPOS_CONTAS_NOME_INDEX', 'GRUPOS_CONTAS', 'Nome');
  193.     ExecutaSQLCreateGenerator('GEN_GRUPOS_CONTAS');
  194.     SQL:='';
  195.     SQL:=' CREATE PROCEDURE SP_GEN_GRUPOS_CONTAS_ID '+
  196.          ' RETURNS (ID INTEGER) '+
  197.          ' AS '+
  198.          ' BEGIN '+
  199.          ' ID = GEN_ID(GEN_GRUPOS_CONTAS, 1); '+
  200.          ' SUSPEND; '+
  201.          ' END; ';
  202.     ExecutaSQLCreateStoreProcedure('SP_GEN_GRUPOS_CONTAS_ID', SQL);
  203.  
  204.  
  205.     ExecutaSQLAddColumn('NFE', 'ID_FORNECEDOR', 'Integer');
  206.  
  207.     ExecutaSQL('UPDATE EMPRESAS SET VERSAO_BD = 2 WHERE ID_EMPRESA > 0');
  208.     ExecutaSQL('COMMIT WORK');
  209.     FVersaoBD := 2;
  210.  
  211.     MostrarVersaoBD;
  212.  
  213. end;
  214.  
  215. procedure TUpdateDataBase.Update_2_To_3;
  216. begin
  217.     //03
  218.     //efetua atualizações no BD
  219.  
  220.  
  221.     FVersaoBD := 3;
  222.  
  223.     MostrarVersaoBD;
  224.  
  225. end;
  226.  
  227. constructor TUpdateDataBase.Create;
  228. begin
  229.   FVersaoBD := 0;
  230.       Datamodule_Atualizacao.SDS_Confere.Close;
  231.       Datamodule_Atualizacao.SDS_Confere.Active:=FALSE;
  232.       Datamodule_Atualizacao.SDS_Confere.DataSet.Active:=FALSE;
  233.       Datamodule_Atualizacao.SDS_Confere.DataSet.CommandText:='';
  234.       Datamodule_Atualizacao.SDS_Confere.DataSet.CommandText:='SELECT * from EMPRESAS WHERE (ID_EMPRESA=1)';
  235.       Datamodule_Atualizacao.SDS_Confere.Connection:=DataModule_Atualizacao.SQLConnection1;
  236.       Datamodule_Atualizacao.SDS_Confere.DataSet.Active:=true;
  237.       Datamodule_Atualizacao.SDS_Confere.Active:=true;
  238.       Datamodule_Atualizacao.SDS_Confere.Open;
  239.   FVersaoBD := Datamodule_Atualizacao.SDS_Confere.FieldByName('VERSAO_BD').Value;
  240. end;
  241.  
  242. destructor TUpdateDataBase.Destroy;
  243. begin
  244.  
  245.   inherited;
  246. end;
  247.  
  248. procedure TUpdateDataBase.ExecutaSQL(aValue: String);
  249. begin
  250.   try
  251.     Datamodule_Atualizacao.SP_ID_QUERY.Close;
  252.     Datamodule_Atualizacao.SP_ID_QUERY.SQL.CommaText:='';
  253.     Datamodule_Atualizacao.SP_ID_QUERY.SQL.CommaText:=''+aValue;
  254.     Datamodule_Atualizacao.SP_ID_QUERY.ExecSQL;
  255.   except on E: Exception do
  256.     begin
  257.     Showmessage('Ocorreu um Erro ao Atualizar o Banco de Dados: '+E.ToString);
  258.     Showmessage('Comando SQL: '+aValue);
  259.     Application.Terminate;
  260.     end;
  261.   end;
  262. end;
  263.  
  264. procedure TUpdateDataBase.ExecutaSQLAddColumn(aTable, aCampo, aTipoCampo: String);
  265. begin
  266.    ExecutaSQL('EXECUTE block as BEGIN if (NOT EXISTS (Select rdb$relation_name, rdb$field_name from rdb$relation_fields where (rdb$relation_name = '+QuotedStr(UpperCase(aTable))+' AND rdb$field_name = '+QuotedStr(UpperCase(aCampo))+' and rdb$SYSTEM_FLAG = 0) ))'+' then execute statement '+'''ALTER TABLE '+aTable+' ADD '+aCampo+' '+aTipoCampo+''''+';'+' END');
  267.    ExecutaSQL('COMMIT WORK');
  268. end;
  269.  
  270. procedure TUpdateDataBase.ExecutaSQLAlterColumn(aTable, aCampo,
  271.   aToCampo: String);
  272. begin
  273.    ExecutaSQL('EXECUTE block as BEGIN if (EXISTS (Select rdb$relation_name, rdb$field_name from rdb$relation_fields where (rdb$relation_name = '+QuotedStr(UpperCase(aTable))+' AND rdb$field_name = '+QuotedStr(UpperCase(aCampo))+' and rdb$SYSTEM_FLAG = 0) ))'+' then execute statement '+'''ALTER TABLE '+aTable+' ALTER '+aCampo+' TO '+aToCampo+''''+';'+' END');
  274.    ExecutaSQL('COMMIT WORK');
  275. end;
  276.  
  277. procedure TUpdateDataBase.ExecutaSQLAlterType(aTable, aCampo, aTipoCampo: String);
  278. begin
  279.    ExecutaSQL('EXECUTE block as BEGIN if (EXISTS (Select rdb$relation_name, rdb$field_name from rdb$relation_fields where (rdb$relation_name = '+QuotedStr(UpperCase(aTable))+' AND rdb$field_name = '+QuotedStr(UpperCase(aCampo))+' and rdb$SYSTEM_FLAG = 0) ))'+' then execute statement '+'''ALTER TABLE '+aTable+' ALTER '+aCampo+' TYPE '+aTipoCampo+''''+';'+' END');
  280.    ExecutaSQL('COMMIT WORK');
  281. end;
  282.  
  283. procedure TUpdateDataBase.ExecutaSQLDropGenerator(aGenerator: String);
  284. begin
  285.     ExecutaSQLDirect('EXECUTE block as BEGIN if (EXISTS (Select rdb$generator_name from rdb$generators where (rdb$generator_name = '+QuotedStr(UpperCase(aGenerator))+') ))'+' then execute statement '+'''DROP GENERATOR '+aGenerator+''''+';'+' END');
  286.     ExecutaSQLDirect('COMMIT WORK');
  287. end;
  288.  
  289. procedure TUpdateDataBase.ExecutaSQLDropIndex(aNameIndex: String);
  290. begin
  291.     ExecutaSQLDirect('EXECUTE block as BEGIN if (EXISTS (Select rdb$index_name from rdb$indices where (rdb$index_name = '+QuotedStr(UpperCase(aNameIndex))+') ))'+' then execute statement '+'''DROP INDEX '+aNameIndex+''''+';'+' END');
  292.     ExecutaSQLDirect('COMMIT WORK');
  293. end;
  294.  
  295. procedure TUpdateDataBase.ExecutaSQLCreateIndex(aNameIndex, aTable: String;
  296.   aCampo : String);
  297. begin
  298.     ExecutaSQLDirect('EXECUTE block as BEGIN if (NOT EXISTS (Select rdb$index_name from rdb$indices where (rdb$index_name = '+QuotedStr(UpperCase(aNameIndex))+') ))'+' then execute statement '+'''CREATE INDEX '+UpperCase(aNameIndex)+' ON '+UpperCase(aTable)+'( '+UpperCase(aCampo)+' )'+''''+';'+' END');
  299.     ExecutaSQLDirect('COMMIT WORK');
  300. end;
  301.  
  302. procedure TUpdateDataBase.ExecutaSQLCreateGenerator(aGenerator: String);
  303. begin
  304.     ExecutaSQLDirect('EXECUTE block as BEGIN if (NOT EXISTS (Select rdb$generator_name from rdb$generators where (rdb$generator_name = '+QuotedStr(UpperCase(aGenerator))+') ))'+' then execute statement '+'''CREATE GENERATOR '+aGenerator+''''+';'+' END');
  305.     ExecutaSQLDirect('COMMIT WORK');
  306. end;
  307.  
  308. procedure TUpdateDataBase.ExecutaSQLDropStoreProcedure(aProcedure: String);
  309. begin
  310.     ExecutaSQLDirect('EXECUTE block as BEGIN if (EXISTS (Select rdb$procedure_name from rdb$procedures where (rdb$procedure_name = '+QuotedStr(UpperCase(aProcedure))+') ))'+' then execute statement '+'''DROP PROCEDURE '+aProcedure+''''+';'+' END');
  311.     ExecutaSQLDirect('COMMIT WORK');
  312. end;
  313.  
  314. procedure TUpdateDataBase.ExecutaSQLCreateStoreProcedure(aProcedure,
  315.   aSQL: String);
  316. begin
  317.     ExecutaSQLDirect('EXECUTE block as BEGIN if (NOT EXISTS (Select rdb$procedure_name from rdb$procedures where (rdb$procedure_name = '+QuotedStr(UpperCase(aProcedure))+') ))'+' then execute statement '+QuotedStr(aSQL)+';'+' END');
  318.     ExecutaSQLDirect('COMMIT WORK');
  319. end;
  320.  
  321. procedure TUpdateDataBase.ExecutaSQLCreateTable(aTable, aSQL: String);
  322. begin
  323.     ExecutaSQLDirect('EXECUTE block as BEGIN if (NOT EXISTS (Select rdb$relation_name from rdb$relations where (rdb$relation_name = '+QuotedStr(UpperCase(aTable))+' and rdb$SYSTEM_FLAG = 0) ))'+' then execute statement '+QuotedStr(aSQL)+';'+' END');
  324.     ExecutaSQLDirect('COMMIT WORK');
  325. end;
  326.  
  327. procedure TUpdateDataBase.ExecutaSQLCreateView(aView : String; aSQL : String);
  328. begin
  329.     ExecutaSQLDirect('EXECUTE block as BEGIN if (NOT EXISTS (Select rdb$relation_name from rdb$relations where (rdb$relation_name = '+QuotedStr(UpperCase(aView))+' and rdb$SYSTEM_FLAG = 0) ))'+' then execute statement '+QuotedStr(aSQL)+' ;'+' END');
  330.     ExecutaSQLDirect('COMMIT WORK');
  331. end;
  332.  
  333. procedure TUpdateDataBase.ExecutaSQLDirect(aValue: String);
  334. begin
  335.   try
  336.     Datamodule_Atualizacao.SQLConnection1.ExecuteDirect(aValue);
  337.   except on E: Exception do
  338.     begin
  339.     Showmessage('Ocorreu um Erro ao Atualizar o Banco de Dados: '+E.ToString);
  340.     Showmessage('Comando SQL: '+aValue);
  341.     Application.Terminate;
  342.     end;
  343.   end;
  344.  
  345. end;
  346.  
  347. procedure TUpdateDataBase.ExecutaSQLDropColumn(aTabela, aCampo: String);
  348. begin
  349.    ExecutaSQL('EXECUTE block as BEGIN if (EXISTS (Select rdb$relation_name, rdb$field_name from rdb$relation_fields where (rdb$relation_name = '+QuotedStr(UpperCase(aTabela))+' AND rdb$field_name = '+QuotedStr(UpperCase(aCampo))+' and rdb$SYSTEM_FLAG = 0) ))'+' then execute statement '+'''ALTER TABLE '+aTabela+' DROP '+aCampo+''''+';'+' END');
  350.    ExecutaSQL('COMMIT WORK');
  351. end;
  352.  
  353.  
  354. procedure TUpdateDataBase.ExecutaSQLDropTable(aTable: String);
  355. begin
  356.    ExecutaSQL('EXECUTE block as BEGIN if (EXISTS (Select rdb$relation_name from rdb$relations where (rdb$relation_name = '+QuotedStr(UpperCase(aTable))+' and rdb$SYSTEM_FLAG = 0) ))'+' then execute statement '+'''DROP TABLE '+aTable+''''+';'+' END');
  357.    ExecutaSQL('COMMIT WORK');
  358. end;
  359.  
  360. procedure TUpdateDataBase.ExecutaSQLDropView(aView: String);
  361. begin
  362.    ExecutaSQL('EXECUTE block as BEGIN if (EXISTS (Select rdb$relation_name from rdb$relations where (rdb$relation_name = '+QuotedStr(UpperCase(aView))+' and rdb$SYSTEM_FLAG = 0) ))'+' then execute statement '+'''DROP VIEW '+aView+''''+';'+' END');
  363.    ExecutaSQL('COMMIT WORK');
  364. end;
  365.  
  366. procedure TUpdateDataBase.MostrarVersaoBD;
  367. begin
  368.  
  369.   Showmessage('Atualização De Banco de Dados Efetuada - Versao: '+intToStr(Datamodule_Atualizacao.SDS_Confere.FieldByName('VERSAO_BD').Value) );
  370.  
  371. end;
  372.  
  373. class function TUpdateDataBase.New: iUpdateDataBase;
  374. begin
  375.   Result := Self.Create;
  376. end;
  377.  
  378. function TUpdateDataBase.UpdateBD: iUpdateDataBase;
  379. begin
  380.  
  381.   if FVersaoBD = 0 then
  382.   begin
  383.     Update_0_To_1;
  384.   end;
  385.  
  386.   if FVersaoBD = 1 then
  387.   begin
  388.     Update_1_To_2;
  389.   end;
  390.  
  391. end;
  392.  
  393. function TUpdateDataBase.Versao(aValue: Integer): iUpdateDataBase;
  394. begin
  395.   Result := Self;
  396.   FVersaoBD := aValue;
  397. end;
  398.  
  399. end.
RAW Paste Data