Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

lucas_rc

SQlDataSet

Recommended Posts

Bom dia pessoal... Pessoal seguinte tenho um sqldataset so que eu preciso pegar o nome da tabela que ele esta ligado a aprtir de alguma propriedade dele ou a partir do commandtext alguem ai tem alguma coisa que possa me ajudar.Desde já agradeço...

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que poderia fazer é ver primeiramente o CommandType que esta sendo usado, se for ctTable pega diretamente do CommandText a tabela, se for ctQuery, pega o SQL e busca o FROM e depois pega a tabela procurando dentro do texto...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu estou usando o ctQuery mas ta dificil de conseguir pegar o nome da tabela pq a tabela muda de acordo com o dataset, você tem mais alguma coisa que possa me ajudar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas a princípio teria que pegar o comando SQL e ir em busca do from, depois que encontra, o próximo item será a tabela... não uso o sqldataset, então, não sei de todas as possibilidades dele...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já conseguir pegaro sql até o exemplo abaixo, o dificil ta sendo pegar agora so o nome da tabela, o SQL que esta chegando para mim é este de baixo.tbPessoaJuridicaWHERE DfIdPe

Compartilhar este post


Link para o post
Compartilhar em outros sites

//Exemplo do sql da buscaSELECT DfIdMunicipio, DfNomeMunicipio, DfIdSiglaUf, DfCepPadrao, DfCodRais, DfCodMunAFFROM tbMunicipioWHERE (DfNomeMunicipio) LIKE :DESCRICAO //Armazenando o commandtext na variavel SQLCommand := (DataSet as TSQLDataSet).CommandText; i := length('FROM'); for n := 1 to length(SQLCommand) do begin if Copy(SQLCommand, n, i) = 'FROM' then SQLCommand := Copy(TRIM(SQLCommand), n + 5, 30); end; Tabela := COPY(SQLCommand, 1, POS(SQLCommand, 'WHERE'));Cara o muito obrigado pelo apoio.Ai vai o comando q estou usando

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alterei um pouco a sua função inicial, teste ela desta forma:

 

 

var	lista: TMemo;	x: integer;	tabela: string;begintabela:='';lista:=TMemo.Create(Application);lista.Parent:=Self;lista.ScrollBars:=ssBoth;lista.Visible:=False;lista.Lines.Text:=(DataSet as TSQLDataSet).CommandText;for x:=0 to lista.Lines.Count - 1 do	begin	if AnsiUpperCase(copy(lista.Lines.Strings[x],1,5)) = 'WHERE' then		begin		tabela:=lista.Lines.Strings[x - 1];		if AnsiUpperCase(copy(tabela,1,4)) = 'FROM' then			tabela:=Trim(copy(tabela,5,Length(tabela) - 4))		else			tabela:='';		Break;		end;	end;lista.Free;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.