Gerar tabelas em tempo de execução

Delphi

12/12/2006

Olá para todos,

Estou tentando gerar tabelas em tempo de execução, o sistema informa
que a tabela foi gerada, mas ao consultar o banco de dados ela não
consta.
Estou utilizando componentes da paleta Interbase como
IBQuery,IBDatabase e IBTransaction.
O SQL para gerar a tabela é o seguinte:

CREATE TABLE ´CORREIO´
(
´CODITEM´ INTEGER NOT NULL,
´CORREIO´ VARCHAR(100),
´ASSUNTO´ VARCHAR(80),
´CODANEXO´ SMALLINT,
´MENSAGEM´ blob sub_type 1 segment size 80,
´DATA´ DATE,
´HORA´ TIME,
´CODUSU´ SMALLINT,

CONSTRAINT ´PK_CODITEM´ PRIMARY KEY (´CODITEM´)
);

Após carregar o arquivo tabela.sql no IBQuery, dou um ExecSQL e um
commit no IBTransaction.
Não sei se está correto, pois é a primeira vez que estou fazendo
isto.

DmConfigSis.QyManBancoDados.Close;
DmConfigSis.QyManBancoDados.SQL.Clear;
DmConfigSis.QyManBancoDados.SQL.LoadFromFile(´C:\CORREIO.SQL´);
DmConfigSis.QyManBancoDados.ExecSQL;
DmConfigSis.DbExce.Open;
DmConfigSis.TrExce.Active := True;
DmConfigSis.TrExce.Commit;
DmConfigSis.TrExce.Active := False;

Utilizando o IBExpert a tabela é gerada normalmente.

Grato à todos,

José Luiz


Zize

Zize

Curtidas 0

Respostas

Gandalf.nho

Gandalf.nho

12/12/2006

Use o IBScript para executar o código, ao invés do IBQuery.


GOSTEI 0
Zize

Zize

12/12/2006

Olá,



Mesmo com o IBScript continua com o problema, grato da mesma forma.


José Luiz


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

12/12/2006

não sei como se comportam os componentes IBX, mas você está abrindo a transação depois de executar a instrução. deveria ser antes.
with DmConfigSis, DmConfigSis.QyManBancoDados do
begin
  Close;
  SQL.Clear;
  SQL.LoadFromFile(´C:\CORREIO.SQL´);

  DbExce.Open;
  TrExce.Active := True;
  ExecSQL;
  TrExce.Commit;
  TrExce.Active := False;
end;



GOSTEI 0
Zize

Zize

12/12/2006

Obrigado a todos pelas dicas.


Luiz


GOSTEI 0
Zize

Zize

12/12/2006

A tabela estava sendo gerada no segundo banco de dados, assim dentro do possível é melhor trabalhar com apenas um banco de dados no sistema.


Luiz


GOSTEI 0
POSTAR