Mulit select no db grid...
Acho que ví neste fórum más não encontrei..Tenho um contas a receber e nele gostaria de selecionar vários registros e quita-los...gostária se possível uma idéia de como funcionaria...tipo se prescisaria de um novo form para os cáuculos ou na medida que ira selecionando os ítens já iria fazendo os cáuculos ...etc..Flw...
Gigatel
Curtidas 0
Respostas
Gigatel
16/08/2005
Conseguí um código que deleta tudo...
só que é um processo que deleta os selecionados...só que eu presciso que os registros deletados vão para o arquivo morto...no me caso o meu Arquivo morto funciona assim..
e gostaria que no select chamasse um form onde teria os dados selecionados, para realizar os calculos..Será que tem jeito ?
var i : integer ; begin if DBGrid1.SelectedRows.Count > 0 then with BD_CONT_REC do for i:= 0 to DBGrid1.SelectedRows.Count - 1 do begin GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i])); BD_CONT_REC.delete; end;
só que é um processo que deleta os selecionados...só que eu presciso que os registros deletados vão para o arquivo morto...no me caso o meu Arquivo morto funciona assim..
procedure T_FormCRReceb.Quitar(Sender: TObject); begin BD_ARQUIVO_MORTO_FIN.Close; BD_ARQUIVO_MORTO_FIN.Open; BD_ARQUIVO_MORTO_FIN.Insert; BD_ARQUIVO_MORTO_FINGS_ARF_DESCRICAO.Value := BD_CONT_RECGS_COR_DESCRICAO.Value; BD_ARQUIVO_MORTO_FINGS_ARF_NOME.Value := BD_CONT_RECGS_COR_NOME.Value; BD_ARQUIVO_MORTO_FINGS_ARF_CPF_CNPJ.Value := BD_CONT_RECGS_COR_CPF_CNPJ.Value; BD_ARQUIVO_MORTO_FINGS_ARF_CODPROD.Value := BD_CONT_RECGS_COR_CODPROD.Value; BD_ARQUIVO_MORTO_FINGS_ARF_N_PARCELAS.Value := BD_CONT_RECGS_COR_N_PARCELAS.Value; BD_ARQUIVO_MORTO_FINGS_ARF_DATA_VENC.Value := BD_CONT_RECGS_COR_DATA_VENC.Value; BD_ARQUIVO_MORTO_FINGS_ARF_DATA_CAD.Value := BD_CONT_RECGS_COR_DATA_CAD.Value; BD_ARQUIVO_MORTO_FINGS_ARF_CODACES.Value := BD_CONT_RECGS_COR_CODACESPAR.Value; BD_ARQUIVO_MORTO_FINGS_ARF_DATA_BAX.Value := FormatDateTime(´dd/mm/yyyy´,Date); BD_ARQUIVO_MORTO_FINGS_ARF_VALOR_TOTAL.Value := BD_CONT_RECGS_COR_VALOR_TOTAL.Value; BD_ARQUIVO_MORTO_FINGS_ARF_VALOR_PARCELA.Value := BD_CONT_RECGS_COR_VALOR_PARCELA.Value; BD_ARQUIVO_MORTO_FINGS_ARF_VALOR_ENT.Value := BD_CONT_RECGS_COR_VALOR_ENT.Value; BD_ARQUIVO_MORTO_FINGS_ARF_VALOR_PAGO.Value := Edit2.Text; BD_ARQUIVO_MORTO_FINGS_ARF_VENDEDOR.Value := BD_CONT_RECGS_COR_VENDEDOR.Value; BD_ARQUIVO_MORTO_FIN.Post; BD_ARQUIVO_MORTO_FIN.Delete; end;
e gostaria que no select chamasse um form onde teria os dados selecionados, para realizar os calculos..Será que tem jeito ?
GOSTEI 0
Rjun
16/08/2005
Acho que você poderia colocar essa movimentação no evento BeforeDelete da sua TQuery ou TTable.
GOSTEI 0
Gigatel
16/08/2005
Blz.. O programa está funcionando a dica do Rjun deu certo..más tenho uma dúvida e tenho um componete chamado Infopowern onde nele tem um DBDrid e nele tem uma opção de transformar um campo em um checkbox, pois consegui em grid normal fazer um Select e deletar os selecionados, com o infopower eu não consigo fazer o select, será que alguma solução com o DBGrid ( checkbox ) ou no DBGridi do infopower ( multiselect ), analizem para usar o BDGride nativo do Delphi eu tenho que usar o control para selecionar, no infopower eu poderia criar um campo temporário( não sei como se cha este procedimento ) e defini-lo como checkbox ou seja...até uma pessoa mais leiga saberia usar o programa, que sera clicar nos chekbox em questão e dar baixa....o código que uso para o select funcionar..
No infopower não possui esta função ...SelectedRows.....más uma alternativa viavé sera legal..Valew...t+
var i : integer ; begin if DBGrid1.SelectedRows.Count > 0 then with BD_CONT_REC do for i:= 0 to DBGrid1.SelectedRows.Count - 1 do begin GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i])); BD_CONT_REC.delete; end;
No infopower não possui esta função ...SelectedRows.....más uma alternativa viavé sera legal..Valew...t+
GOSTEI 0
Gigatel
16/08/2005
aparentimente só o DBgrid fás a função de multselect...estou com uma dúvida..eu uso o multselect para dar baixas em várias notas, seleciono os registros vou em quitar aparece um2 form onde nele deve conter um grid com as informações selecionadas ...más o problema e que até agora eu só consegui jogar isto em um MEMO e mesmo assim no mesmo form..quando ele joga para um outro form ele só manda uma informção..más isto no memo, más aí tem uma outra deficiencia o memo só aceita um campo da tabela, estava pensando se num existiria um meio de colocar um grid ou Dbgrid ( talvez nessessite de uma tabela aó para isto...Veja o código do que já esta pronto..
Usado para transferir pra o memo..
e como ficaria em um grid ou num dbgrid ...levando em consideração que o campo acima é somente do cliente.
BD_CONT_RECGS_COR_NOME
más presciso que estas tbm entrem no código...
BD_CONT_RECGS_COR_VALOR
BD_CONT_RECGS_COR_DATA_ENT
BD_CONT_RECGS_COR_DATA_VENC
Parece meio complicado...
espero que alguém tenha alguma idéia...Faleu...
Usado para transferir pra o memo..
//var // i: Integer; begin Memo1.Clear; With DBGrid1 do Begin if SelectedRows.Count > 0 then for i := 0 to Pred(SelectedRows.Count) do Begin posiciona nos registros selecionados do DBGrid IBUP_CONT_REC.Dataset.Bookmark := SelectedRows[i]; Memo1.Lines.Add(´Selecionado: ´+BD_CONT_RECGS_COR_NOME.AsString); end; end; end;
e como ficaria em um grid ou num dbgrid ...levando em consideração que o campo acima é somente do cliente.
BD_CONT_RECGS_COR_NOME
más presciso que estas tbm entrem no código...
BD_CONT_RECGS_COR_VALOR
BD_CONT_RECGS_COR_DATA_ENT
BD_CONT_RECGS_COR_DATA_VENC
Parece meio complicado...
espero que alguém tenha alguma idéia...Faleu...
GOSTEI 0
Gigatel
16/08/2005
Aki segue uma figura do que estou prescisando...Pergunta..
1) tem como fazer akelas opções de marcar ?
2) tem como criar um segundo form para poder isolar os ítens selecionados ?
3) o eu prescisaria para jogar os ítens selecionados para o segundo form..acho que a figura aí deve eclarecer + ou - do que eu presciso ..Acho que esta dúvida serial útil para muita gente aki no fórum...e tem 3 dias que estou nisto e achando bug atras de bug...e gostaria se alguém tivessem um idéia para sulucionar isto...desculpe a chatisse más isto é de grande importancia no projeto...Vlw... t+
1) tem como fazer akelas opções de marcar ?
2) tem como criar um segundo form para poder isolar os ítens selecionados ?
3) o eu prescisaria para jogar os ítens selecionados para o segundo form..acho que a figura aí deve eclarecer + ou - do que eu presciso ..Acho que esta dúvida serial útil para muita gente aki no fórum...e tem 3 dias que estou nisto e achando bug atras de bug...e gostaria se alguém tivessem um idéia para sulucionar isto...desculpe a chatisse más isto é de grande importancia no projeto...Vlw... t+
GOSTEI 0
Marco Salles
16/08/2005
Eu faria isto :
a) Criaria na Tabela um Campo Boolean
b) Criaria o evento OnClick Na Grid.. Talves seje necessário.. Ao clicar , marcaria este item , ou desmarcaria este item
Utilizaria um TStringGrid e o carregaria com os Items selecionados.. Para isto usaria uma Query que retornaria os items marcados
Isto é o primeiro passo...
1) tem como fazer akelas opções de marcar ?
a) Criaria na Tabela um Campo Boolean
b) Criaria o evento OnClick Na Grid.. Talves seje necessário.. Ao clicar , marcaria este item , ou desmarcaria este item
2) tem como criar um segundo form para poder isolar os ítens selecionados ?
3) o eu prescisaria para jogar os ítens selecionados para o segundo form..acho que a figura aí deve eclarecer + ou - do que eu presciso
Utilizaria um TStringGrid e o carregaria com os Items selecionados.. Para isto usaria uma Query que retornaria os items marcados
Isto é o primeiro passo...
GOSTEI 0
Gigatel
16/08/2005
[quote:0d5b4fa223=´Marco Salles´]Eu faria isto :
a) Criaria na Tabela um Campo Boolean
b) Criaria o evento OnClick Na Grid.. Talves seje necessário.. Ao clicar , marcaria este item , ou desmarcaria este item
Utilizaria um TStringGrid e o carregaria com os Items selecionados.. Para isto usaria uma Query que retornaria os items marcados
Isto é o primeiro passo...[/quote:0d5b4fa223]
MInhas tabelas são em interbase...num sei se tem estes campos no IB más simceramente já estou meio de saco cheio disto...de ficar tentando fazer uma coisa estética, porqie este negócio do cara ter que segurar o control e selecionar com o mouse,tá por fora...até achei um componete se cha infopower e tem uma opção de check box...más tudo que pesquizei referente a este gride é incompativel....más vamos ver o que dá..agora estou mais preocupado é com o lance do segundo form pois o cliente tem que ver o que está dando baixa...pois o mesmo pode estar apagando algo que sem querer selecionou...más o lance do segundo form vc acha que eu deveria criar uma tabela só para esta função ? más ainda ficaria o lance de como eu faria para atribuir valores de uma tabela para outra...estou na luta...valeu.....
1) tem como fazer akelas opções de marcar ?
a) Criaria na Tabela um Campo Boolean
b) Criaria o evento OnClick Na Grid.. Talves seje necessário.. Ao clicar , marcaria este item , ou desmarcaria este item
2) tem como criar um segundo form para poder isolar os ítens selecionados ?
3) o eu prescisaria para jogar os ítens selecionados para o segundo form..acho que a figura aí deve eclarecer + ou - do que eu presciso
Utilizaria um TStringGrid e o carregaria com os Items selecionados.. Para isto usaria uma Query que retornaria os items marcados
Isto é o primeiro passo...[/quote:0d5b4fa223]
MInhas tabelas são em interbase...num sei se tem estes campos no IB más simceramente já estou meio de saco cheio disto...de ficar tentando fazer uma coisa estética, porqie este negócio do cara ter que segurar o control e selecionar com o mouse,tá por fora...até achei um componete se cha infopower e tem uma opção de check box...más tudo que pesquizei referente a este gride é incompativel....más vamos ver o que dá..agora estou mais preocupado é com o lance do segundo form pois o cliente tem que ver o que está dando baixa...pois o mesmo pode estar apagando algo que sem querer selecionou...más o lance do segundo form vc acha que eu deveria criar uma tabela só para esta função ? más ainda ficaria o lance de como eu faria para atribuir valores de uma tabela para outra...estou na luta...valeu.....
GOSTEI 0
Marco Salles
16/08/2005
MInhas tabelas são em interbase...num sei se tem estes campos no IB
No Ib Nun tem.. Mas isto não é problema
agora estou mais preocupado é com o lance do segundo form
más o lance do segundo form vc acha que eu deveria criar uma tabela só para esta função ?
Mas Qual o Problema de carregar o TStringList com os valores marcados do Grid Do Form Principal :?: :?: :?: :?:
GOSTEI 0
Gigatel
16/08/2005
[quote:adfa6e74a9=´Marco Salles´]
No Ib Nun tem.. Mas isto não é problema
Mas Qual o Problema de carregar o TStringList com os valores marcados do Grid Do Form Principal :?: :?: :?: :?:[/quote:adfa6e74a9]
MInhas tabelas são em interbase...num sei se tem estes campos no IB
No Ib Nun tem.. Mas isto não é problema
agora estou mais preocupado é com o lance do segundo form
más o lance do segundo form vc acha que eu deveria criar uma tabela só para esta função ?
Mas Qual o Problema de carregar o TStringList com os valores marcados do Grid Do Form Principal :?: :?: :?: :?:[/quote:adfa6e74a9]
Mas Qual o Problema de carregar o TStringList com os valores marcados do Grid Do Form Principal :?: :?: :?: :?:
Cara sinceramente nem faço idéia de como seria o código para isto..
eu tentei isto em um listbox, más num é a mesma coisa..pois aki se trata de algo temporário..veja..
var ix : integer; begin if DBGrid1.SelectedRows.Count > 0 then begin for ix := 0 to DBGrid1.SelectedRows.Count - 1 do begin //???????? BD_CONT_REC.GotoBookmark(pointer(DBGrid1.SelectedRows.Items[ix])); ListBox1.Items.Add(BD_CONT_REC.FieldByName(´GS_COR_NOME´).AsString); end; end;
e neste caso se trata somente de um campo da tabela, eu prescisaria para estestcampos tbm...
GS_COR_DATA_VENC GS_COR_VALOR_PARCELA GS_COR_DESCRICAO GS_COR_DATA_CAD
talves se fosse somente um campo seria mais fácil..más a pessoa que está manipulando o programa tem a nescessidade de visualizar estas informações...
vlw..
GOSTEI 0
Marco Salles
16/08/2005
Eu lhe sugeri criar um campo que simularia o campo boolena no Interbase... Isto é so a titulo de visualização , pois poderia marca-lo numa caixa de seleção ou desmarca-lo
Mas se voce não fizer , ou não necessitar que se tenha esta caixa , o mesmo pode ser feito com a opção dgMultiSelcted em True...
em vez de carregar nun ListBox , a idéia e carregar no StringList...
Mas isto são apenas detalhes... O Que esta faltando talves seje a utilização da Propriedade DbGrid1.SelectedRows..
Veja o código abaixo implementado para um Table e um listBox , que pode ser facilemnte estendido para qualquer situação
Deu para fluir alguma coisa ou tem dúvida de algo....
Mas se voce não fizer , ou não necessitar que se tenha esta caixa , o mesmo pode ser feito com a opção dgMultiSelcted em True...
Cara sinceramente nem faço idéia de como seria o código para isto..
em vez de carregar nun ListBox , a idéia e carregar no StringList...
Mas isto são apenas detalhes... O Que esta faltando talves seje a utilização da Propriedade DbGrid1.SelectedRows..
Veja o código abaixo implementado para um Table e um listBox , que pode ser facilemnte estendido para qualquer situação
procedure TForm1.Button1Click(Sender: TObject); var ix : integer; BookMarkList:TBookMarkList; BookMark:TBookmarkstr; begin BookMark:=TAble1.bookmark; BookMarkList:=DbGrid1.SelectedRows; table1.disablecontrols; if DBGrid1.SelectedRows.Count > 0 then for ix := 0 to DBGrid1.SelectedRows.Count - 1 do begin Table1.booKmark:=BookMarkList[ix]; ListBox1.Items.Add(Table1.fieldByName(´Codigo_Funcionario´).AsString); end; TAble1.bookmark:=BookMark; Table1.enablecontrols; end;
Deu para fluir alguma coisa ou tem dúvida de algo....
GOSTEI 0
Gigatel
16/08/2005
Gostaria de agradecer aos colegas que contribuiram...más já ví que este é uma canoa furada....vou simplicar o form e deixar o projeto de lado...e vou terminar outros setores do programa que ainda faltam..vlw pela tentativa e desculpe o transtorno ...Vwl...t+
GOSTEI 0
Marco Salles
16/08/2005
...más já ví que este é uma canoa furada....
é tranquilo...
GOSTEI 0