LHR 0 Denunciar post Postado Julho 3, 2007 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
Rodrigo Miss 1 Denunciar post Postado Julho 3, 2007 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
Hugo Slepicka 0 Denunciar post Postado Julho 3, 2007 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
LHR 0 Denunciar post Postado Julho 4, 2007 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
Rodrigo Miss 1 Denunciar post Postado Julho 4, 2007 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
Hugo Slepicka 0 Denunciar post Postado Julho 4, 2007 Caramba, que legal esse exemplo ai Rodrigo... Curti essa ai!!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Rodrigo Miss 1 Denunciar post Postado Julho 4, 2007 hehe vlw Hugo ... é bem interessante o GotoBookmark ... Compartilhar este post Link para o post Compartilhar em outros sites
Hugo Slepicka 0 Denunciar post Postado Julho 4, 2007 Achei interessante essa declaração de ponteiro... Pointer(DBGrid1.SelectedRows.Items) o GotoBookmark eu já conhecia... :P rsrs... mas ta muito bom o seu exemplo!!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Julho 4, 2007 Acho que conheço este exemplo... :DE funciona, uso desta forma aqui tb... Compartilhar este post Link para o post Compartilhar em outros sites
LHR 0 Denunciar post Postado Julho 4, 2007 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
marcio.theis 3 Denunciar post Postado Julho 4, 2007 Isso ai, beleza... o mais interessante foi que você encontrou uma maneira, assim aprendeu muito mais...Qualquer coisa... estamos aqui... :D Compartilhar este post Link para o post Compartilhar em outros sites
Hugo Slepicka 0 Denunciar post Postado Julho 4, 2007 Isso ai, beleza... o mais interessante foi que você encontrou uma maneira, assim aprendeu muito mais...Qualquer coisa... estamos aqui... :DFaço minhas as palavras do Márcio... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites