Testar se Campo,Tabela,Generator e etc existem.
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.
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
Curtidas 0
Respostas
Midas
16/01/2004
select rdb$field_name from rdb$relation_fields
where rdb$relation_name= (nomedocampo)
where rdb$relation_name= (nomedocampo)
GOSTEI 0
Midas
16/01/2004
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.
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.
GOSTEI 0
Adriano Santos
16/01/2004
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
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
GOSTEI 0
Midas
16/01/2004
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!´);
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!´);
GOSTEI 0