Fórum Nome Tabela Dentro Query #446447

24/06/2013

0

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

Responder

Posts

24/06/2013

Guilherme Wiethaus

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...
Responder

Gostei + 0

24/06/2013

Thiago Porto

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.
Responder

Gostei + 0

24/06/2013

Joel Rodrigues

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.
Responder

Gostei + 0

24/06/2013

Eduardo Barbosa

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

Gostei + 0

24/06/2013

Joel Rodrigues

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

Mas isso é no banco, não?
Responder

Gostei + 0

24/06/2013

Guilherme Wiethaus

ó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!?
Responder

Gostei + 0

24/06/2013

Joel Rodrigues

ó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?
Responder

Gostei + 0

24/06/2013

Joel Rodrigues

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.
Responder

Gostei + 0

24/06/2013

Guilherme Wiethaus

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
Responder

Gostei + 0

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

Aceitar