Nome Tabela Dentro Query
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 ?
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
Curtidas 0
Respostas
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
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
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.
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
24/06/2013
Se você estiver usando Banco Firebird, você pode dar um select * from RDB$DB_Table.
GOSTEI 0
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
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
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
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
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
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