Nome Tabela Dentro Query

Delphi

24/06/2013

Caros amigos,
Teremos que alterar nome de alguma tabela no banco de dados, alguém sabe se exite alguma pesquisa no delphi para mostrar todas as query que usa tabelo que irei alterar ?
Adm Ltda

Adm Ltda

Curtidas 0

Respostas

Guilherme Wiethaus

Guilherme Wiethaus

24/06/2013

Use instrução SQL meu querido, junto com uma classe ou componente (IBExpress, ADO, UniDAC, etc...) que tratam e enviam tais instruções para o banco de dados. Agora a sua informação está pela metade. Qual banco de dados usa? Isto é necessário, pois as instruções SQL podem variar um pouco de acordo com o tipo de SGDB do fabricante. Por exemplo, SQL Server, Firebird, MySQL, Oracle, etc...
GOSTEI 0
Thiago Porto

Thiago Porto

24/06/2013

Que eu saiba não, vc terá que olhar uma por uma, por isso aconselho usar apenas um componente para operações com banco de dados, ou uso de classes. Agora se vc tem algum sql no código vc pode pesquisar usando Search -> Find in Files.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

24/06/2013

Até onde eu sei, não é possível. O que se tem são as seguintes opções:
1) Fazer uma busca em todos os arquivos pelo texto (nome da tabela).
2) Buscar no próprio Windows pelo texto dentro do diretório do projeto e identificar os arquivos que usam essa tabela.

Se tem algo para facilitar isso, confesso que não sei, mas quando precisei, utilizei essas duas técnicas.

Boa sorte.
GOSTEI 0
Eduardo Barbosa

Eduardo Barbosa

24/06/2013

Se você estiver usando Banco Firebird, você pode dar um select * from RDB$DB_Table.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

24/06/2013

Se você estiver usando Banco Firebird, você pode dar um select * from RDB$DB_Table.

Mas isso é no banco, não?
GOSTEI 0
Guilherme Wiethaus

Guilherme Wiethaus

24/06/2013

óbvio que não companheiro. Basta enviar o comando através de um componente dataset ou query, une então um datasource em um dbgrid, dá um open ou active e então será listado todas as tabelas. Simples não!?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

24/06/2013

óbvio que não companheiro. Basta enviar o comando através de um componente dataset ou query, une então um datasource em um dbgrid, dá um open ou active e então será listado todas as tabelas. Simples não!?

Não ficou claro como isso soluciona o problema do nosso amigo que abriu o tópico. Poderia explicar melhor, por favor?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

24/06/2013

Use instrução SQL meu querido, junto com uma classe ou componente (IBExpress, ADO, UniDAC, etc...) que tratam e enviam tais instruções para o banco de dados. Agora a sua informação está pela metade. Qual banco de dados usa? Isto é necessário, pois as instruções SQL podem variar um pouco de acordo com o tipo de SGDB do fabricante. Por exemplo, SQL Server, Firebird, MySQL, Oracle, etc...

Poderia dar um exemplo disso, Guilherme? Uma instrução SQL que liste quais datasets estão utilizando uma tabela no Delphi? Se é que é realmente possível.
GOSTEI 0
Guilherme Wiethaus

Guilherme Wiethaus

24/06/2013

Deixa eu verificar se entendi:

Se deseja alterar uma tabela no banco utilize um instrução SQL do banco para pesquisar e depois achando, alterar. Executar esta instrução utiliza-se um DataSet ou Query, passando o comando para ele.

Agora se deseja saber qual dos DataSet e Query está o nome da Tabela na isntrução SQL, ai é outra história. Não é impossível, mas bem trabalhosa.

Primeiramente, num datamodule, como um objeto pai, procurar todos os filhos da Classe TDataSet. Achando a classe pegar a propriedade SQL e passar para uma variável. Ai a segunda etapa, na variável procurar pela cláusula FROM, INNER, OUTER, LEFT RIGHT JOIN e o que achar depois é o nome da tabela (precisa realizar um parser). Este processo de procura deve permanecer num loop até achar todos os DataSets e Query.

(Uso esta técnica de procurar as classes de um DataSet no Datamodule, a qual possui o objeto Connection e que irei fechar os datasets que estão ligados a um Connection antes de fechar a conexão).

Pode ainda fazer que no loop, a cada Dataset ou Query Filhos achados, insira num TList para ficar fácil depois de varrer novamente através de um loop.

Para tanto terá que informar ao menos um objeto Pai para inicio da busca.

Outra coisa que deve levar em consideração. Ao realizar esta mudança no banco de dados do nome da tabela, como vai ficar o nome das tabelas na suas sql dos componentes DataSet e Query? Heim? Nem preciso responder por esta não?!...rsrsrs.

Abraços
GOSTEI 0
POSTAR