Fórum Como saber a Tabela de um campo do Clientdataset? #388934
20/10/2010
0
já tentei utilizar o propriedade Origin, mas não funciona em todas as circunstâncias.
alguém tem alguma sugestão?
Rodrigo Albuquerque
Curtir tópico
+ 0Posts
20/10/2010
Deivison Melo
from all_cons_columns
where upper(column_name) like upper('%valor_a_ser_pesquisado%')
Qualquer coisa estou à disposição!! Emanoel Deivison
Gostei + 0
21/10/2010
Rodrigo Albuquerque
antes esta rotina funcionava normalmente porque era só eu utilizar a propriedade Origin. mas esta propriedade não funciona com qualquer componente. por exemplo, com o DBExpress (que é o que estou utilizando agora) raramente funciona.
preciso encontrar uma forma alternativa ao Origin para saber o nome da tabela e assim poder montar uma instrução SQL dinamicamente.
Gostei + 0
22/10/2010
Rodrigo Albuquerque
não posso fazer como vc sugeriu pois preciso desta informação (tabela ao qual o campo se refere) em tempo de execução, para poder passar como parâmetro para uma procedure e, ela sim montar uma instrução SQL.
se puder me indicar que propriedade consigo extrair esta informação (que não seja a Origin)...
Gostei + 0
23/10/2010
Carlos Júnior
begin
if dsTabelas.DataSet.Fields[i].DisplayLabel = CDSFiltroCampos.AsString then
if (dsTabelas.DataSet.Fields[i].ProviderFlags = [pfInUpdate,pfInWhere]) OR
(dsTabelas.DataSet.Fields[i].ProviderFlags = [pfInUpdate,pfInWhere,pfInKey]) then
Campo := nomeTabela + '.' +dsTabelas.DataSet.Fields[i].FieldName
else
Campo := dsTabelas.DataSet.Fields[i].Origin + '.' + dsTabelas.DataSet.Fields[i].FieldName; end; Vê se ajuda. Falous.
Gostei + 0
23/10/2010
Rodrigo Albuquerque
Gostei + 0
24/10/2010
Carlos Júnior
Gostei + 0
24/10/2010
Rafapasa
De onde tirou esse nome?
Gostei + 0
29/10/2010
Rodrigo Albuquerque
antes de eu utilizar o dbExpress e o SQLDataSet (antes utilizava a TQuery), aí funcionava perfeitamente. o delphi automaticamente preenchia a propriedade Origin quando colocava os campos.
Gostei + 0
09/09/2011
Carlos Bernardo
VAR s_Provider : STRING;
d_dataset : TSQLDataSet;
begin
d_Dataset := nil;
s_Provider := TClientDataSet(DS_Padrao.DataSet).ProviderName;
d_Dataset := StrProviderNameToSqlDataset(s_Provider);
if assigned(d_dataset) then
result := IProviderSupport(d_Dataset).PSGetTableName;
end; function TFModelo.StrProviderNameToSqlDataset(
sProviderName: string): TSqldataset;
var
i : Integer;
Begin
Result := Nil;
for i:=0 to Dm.ComponentCount-1 do
begin
if (Dm.Components[i] is TDataSetProvider) and (Dm.Components[i].Name = sProviderName) then
begin
Result := (TDataSetProvider(Dm.Components[i]).DataSet as TSQLDataSet);
Continue;
end;
end;
if not(Assigned(Result)) then
Abort;
end;
A unica coisa que ficou foi a dependencia do Datamodule ser DM, mas como meus componentes ficam la nem me importei... procedure TFModelo.Btn_TesteClick(Sender: TObject);
begin showmessage(Retorna_Nome_Tabela);
end;
Gostei + 0
16/01/2015
Glauber Silva
Gostei + 0
01/09/2015
Almir Gomes
Se quando o DataSetProvider estiver no ServerMethods (DataSnap). Como faço para pegar o nome da tabela.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)