Ir para conteúdo

POWERED BY:

Arquivado

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

LHR

DBGrid Multiselect + Query

Recommended Posts

Olá pessoal,Mais uma vez recorro ao forum iMaster, pra solucionar meu problema!Estou tentando fazer o seguinte:Existe um DBGrid Multiselect com dados de uma query.Eu escolherei varios itens nessa DBGrid, então clicarei num botão, que montará uma Query para mim que tenha apenas esses registros que selecionei na Dbgrid.Pois meu objetivo, é depois fazer um relatório de etiquetas com código de barras. Então a pessoa escolhe no DBGrid quais produtos gostaria que fizessem as etiquetas, e assim imprimi-las. Estou muito confuso em relação a esse código.Alguem poderia me dar alguma luz, dica, link, qualquer coisa?Obrigado desde já.Té mais!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde ...kra uma idéia, é fazer um laço while pegando os registros selecionados, e preencher com os mesmos um Qry Shape, ou Tabela temporaria ou ainda um ClientDataSet ....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz um While, grava os codigos em uma variável e ai você filtra a query apos isso...

 

ai você decide como quer essa variável...

 

você pode fazer assim:

 

 

var sql: string;While Not Qry1.Eof doBegin   if Qry1.BOF then   Begin	 sql = 'Where (codigo = '+ IntToStr(codigo)+')';   End   Else   Begin	 sql = ' , And (codigo = '+ IntToStr(codigo)+')';   End;End;Qry1.Sql.Clear;Qry1.Sql.Add('Select * from clientes');Qry1.Sql.Add(sql);Qry1.Open;

 

Algo desse tipo... esse é só um exemplinho pra você se basear se quiser...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, entendi.Vocês já me deram uma grande ajuda.Mas eu ainda tenho um grande problema com o Dbgrid em multiselect, pois nunca utilizei-o nessa opção.Como faço para saber qual linha do DBGrid está selecionada, e então pegar o valor do "CODIGO", nela?Ae então eu jogaria o valor pra uma variavel, e faria a query, como você disse Hugo Slepicka.Obrigado, novamente.E, té mais!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode fazer assim:

 

var  i: shortint;  Lst: TStrings;begin  Lst:= TStringList.Create;  for i:= 0 to DBGrid1.SelectedRows.Count -1 do  begin	qry.GotoBookmark(Pointer(DBGrid1.SelectedRows.Items[i]));	Lst.Add(qryID_ENTIDADE.Text);  end;  ShowMessage(Lst.Text);  Lst.Free;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eita...nem sei como agradecer xD

Assim que eu cheguei aqui no trabalho, eu postei minha duvida.

E depois disso fui tentando, tentando e consegui. (Demorei 1h)

Ae eu atualizo a pagina, e tá esse monte de exemplo! :blink:

Vou tentar agora fazer desse outro método que vocês colocaram, porque o meu ficou meio "porquinho" :unsure:

Olhem só:

 

var ii, i: Integer; sql: string;begin   If DBGrid1.SelectedRows.Count > 0 then	 For i := 0 to Pred(DBGrid1.SelectedRows.Count) do	 Begin   ii:=Pred(DBGrid1.SelectedRows.Count);   If i = ii then begin	   DataSource1.Dataset.Bookmark := DBGrid1.SelectedRows[i];	   sql := sql + '(COD = '+inttostr(IBQuery1COD.AsInteger)+')';	 end   Else begin	   DataSource1.Dataset.Bookmark := DBGrid1.SelectedRows[i];	   sql := sql + ' (COD = '+inttostr(IBQuery1COD.AsInteger)+') OR '; end;end;IBQuery2.Sql.Clear;IBQuery2.Sql.Add('SELECT * FROM Trocas WHERE');IBQuery2.Sql.Add(sql);IBQuery2.Open;

Bom, vlwzão pela ajuda ae pessoal!

Vou tentar esses outros métodos tambem. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

Té mais! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

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.