GARANTIR DESCONTO

Fórum Testar se Campo,Tabela,Generator e etc existem. #41593

16/01/2004

0

Galera,

Existe uma unit no meu programa que atualiza a base quando necessário, mas olha que coisa de índio.
A pessoa que programou fez assim:

procedure TfrmAtualizaBase.Atu3240;
begin
with DmDados.QryGenerica do
begin
Close;
Sql.Clear;
Sql.Add(´ALTER TABLE BANCO ´);
Sql.Add(´ ADD CODINSTR1 VARCHAR(2),´);
Sql.Add(´ ADD CODINSTR2 VARCHAR(2)´);
[b:445863b7db] Try
ExecSql;
Except
end;[/b:445863b7db] Close;
Sql.Clear;
end;
end;

Notem o Try..Except..End;

Isso é feito porque se os campos CODINTRS1 E CODINSTR2 já existirem um erro será gerado, mas como
o Except está vazio não é mostrado o erro.

Bom, eu quero fazer diferente, aliás o correto. Algo como

Se CampoX não existir então
Cria;

Se TabelaX não existir então
Cria;

Se GeneratorX não existir então
Cria;

etc.

Existe isso no IB ???

Meu IB é o 6.0

Obrigado.


Adriano Santos

Adriano Santos

Responder

Posts

16/01/2004

Midas

select rdb$field_name from rdb$relation_fields
where rdb$relation_name= (nomedocampo)


Responder

Gostei + 0

16/01/2004

Midas

completando
tabelas
select rdb$relation_name from rdb$relations where rdb$system_flag= 0
and rdb$relation_name = nomedatabela

generators
select rdb$generator_name from rdb$generatorS
where rdb$generator_name = nomedogenerator

obs. lembre-se que tem estar em maiusculo o nomes.


Responder

Gostei + 0

16/01/2004

Adriano Santos

Cara com tabelas eu consegui fazer e entender, mas com campos e generators nao deu certo o teste. Olha.

SELECT RDB$GENERATOR_NAME FROM RDE$GENERATORS
WHERE RDB$GENERATOR_NAME FROM ´PARCE_ALUNOS_GEN´


[b:534aee5590]erro[/b:534aee5590]


SELECT RDB$GENERATOR_NAME FROM RDE$GENERATORS
WHERE RDB$GENERATOR_NAME FROM ´PARCE_ALUNOS_GEN´


SELECT RDB$FIELD_NAME AS EXISTE FROM RDB$RELATION_FIELDS
WHERE RDB$RELATION_NAME = (BOLETO)

/* Tenho o campo boleto nas tabelas Parce_Alunos e Banco. Como que ele sabe que o campo que eu procuro é da tabela Parce_Alunos ? */

[b:534aee5590]Erro[/b:534aee5590]

Column does not belong to referenced table.
Dynamic SQL Error.
SQL error code = -206.
Column unknown.
BOLETO.


colquei também entre strings o nome do campo e do generator e nao entendi pq nao funcionou.

obrigado


Responder

Gostei + 0

16/01/2004

Midas

Irmão eu fiz aqui e deu certo !
Generators.....
select rdb$generator_name from rdb$generators
where rdb$generator_name = ´GE_IDCLIENTE´
ai depois vc testa ela
if not query.isempty then
showmessage(´Gerador de codigo existe!´);


Responder

Gostei + 0

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

Aceitar