Fórum incluir, excluir e pesquisar em delphi #454385
06/09/2013
0
eu queria criar um programa sem banco de dados de outra tabela, dessa forma
incluir
excluir
pesquisar (mostrar dados no dbgrid)
pode ser qualquer coisa, como por exemplo, digito 'teste' no edit e depois clico em incluir
ai clico em pesquisar e mostra a palavra 'teste' no dbgrid
Eros Cardoso
Curtir tópico
+ 0Posts
06/09/2013
Marcos Oliveira
Gostei + 0
06/09/2013
Wilton Júnior
Da um procurada no google que tem milhares de artigos de como manipular o clientdatase.
Veja:
ClientDataset.append; é para inserir
ClientDataset.edidt é alterar.
ampos no final vc coloca clientdataset.post para confirmar a operação
clientdataset.locate('campo',edit1.text,[]); é para localiza
e finalmente clientdataset.delete para exclusão.
Espero ter ajudado
"Deus Abençoes"
Gostei + 0
06/09/2013
Eros Cardoso
vou ver aqui como funciona o ClientDataSet
obrigado
Gostei + 0
06/09/2013
Eros Cardoso
Da um procurada no google que tem milhares de artigos de como manipular o clientdatase.
Veja:
ClientDataset.append; é para inserir
ClientDataset.edidt é alterar.
ampos no final vc coloca clientdataset.post para confirmar a operação
clientdataset.locate('campo',edit1.text,[]); é para localiza
e finalmente clientdataset.delete para exclusão.
Espero ter ajudado
"Deus Abençoes"
Wilton, eu pesquisei aqui sobre o clientdataset
coloquei o xmltransformerprovider, clientdataset e datasource ambos da paleta (data access) e o dbgrid (data controls)
ai criei os botoes de adicionar, alterar, delete e pesquisa (delete e pesquisa nao funcionaram)
os botoes de adicionar e alterar so funcionam no momento que abre o executavel, quando fecho o executavel e abro novamente o codigo, nome e tel nao estao mais la
//cadastrar
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientDataSet1.Append;
ClientDataSet1.FieldByName('codigo').Value:=(Edit1.Text);
ClientDataSet1.FieldByName('nome').Value:=(Edit2.Text);
ClientDataSet1.FieldByName('telefone').Value:=(Edit3.Text);
ClientDataSet1.Post;
end;
//alterar
procedure TForm1.Button2Click(Sender: TObject);
begin
ClientDataSet1.edit;
ClientDataSet1.FieldByName('codigo').Value:=(Edit1.Text);
ClientDataSet1.FieldByName('nome').Value:=(Edit2.Text);
ClientDataSet1.FieldByName('telefone').Value:=(Edit3.Text);
ClientDataSet1.Post;
end;
//deleta
procedure TForm1.Button3Click(Sender: TObject);
begin
ClientDataSet1.Delete;
ClientDataSet1.FieldByName('codigo').Value:=(Edit1.Text);
ClientDataSet1.FieldByName('nome').Value:=(Edit2.Text);
ClientDataSet1.FieldByName('telefone').Value:=(Edit3.Text);
ClientDataSet1.Post;
end;
//pesquisa
procedure TForm1.Button4Click(Sender: TObject);
begin
ClientDataSet1.locate('codigo',edit1.text,[]);
ClientDataSet1.locate('nome',edit2.text,[]);
ClientDataSet1.locate('telefone',edit3.text,[]);
ClientDataSet1.FieldByName('codigo').Value:=(Edit1.Text);
ClientDataSet1.FieldByName('nome').Value:=(Edit2.Text);
ClientDataSet1.FieldByName('telefone').Value:=(Edit3.Text);
ClientDataSet1.Post;
end;
no arquivo xml deixei da seguinte forma
<clientes>
<cliente>
<codigo>1</codigo>
<nome>joao</nome>
<telefone>3222-2222</telefone>
</cliente>
</clientes>
esse do xml esta sempre mostrando, sempre quando abro o executavel mostra o cod; 1 / nome; joao e tel; 3222-2222
veja na imagem como ta o programa
http://img27.imageshack.us/img27/6272/97sf.jpg
Gostei + 0
06/09/2013
Marcos Oliveira
Ao deletar, você simplesmente dê o comando ClientDataSet1.Delete.
Ao Pesquisar, você deve informar somente o comando ClientDataSet1.locate, com os parâmetros que você quiser.
Os comandos ClientDataSet1.FieldByName(....), e o Post só deve ser colocados quando for adicionar ou alterar algum registro.
Do jeito que você informou no pesquisar, ele vai executar 3 pesquisas, uma por código, outra por nome, e a última por telefone, sendo que a que vai prevalecer será a última.
Se quiser fazer uma pesquisa, por nome, você deve usar somente o comando ClientDataSet1.locate('codigo',edit1.text,[]);
Quanto ao XML, não entendi direito. Quando você cadastra, mostra na tela, mas quando você fecha e abre o programa, só mostra o código 1?
Att,
Marcos
Gostei + 0
06/09/2013
Eros Cardoso
Ao deletar, você simplesmente dê o comando ClientDataSet1.Delete.
Ao Pesquisar, você deve informar somente o comando ClientDataSet1.locate, com os parâmetros que você quiser.
Os comandos ClientDataSet1.FieldByName(....), e o Post só deve ser colocados quando for adicionar ou alterar algum registro.
Do jeito que você informou no pesquisar, ele vai executar 3 pesquisas, uma por código, outra por nome, e a última por telefone, sendo que a que vai prevalecer será a última.
Se quiser fazer uma pesquisa, por nome, você deve usar somente o comando ClientDataSet1.locate('codigo',edit1.text,[]);
Quanto ao XML, não entendi direito. Quando você cadastra, mostra na tela, mas quando você fecha e abre o programa, só mostra o código 1?
Att,
Marcos
Marcos obrigado, do jeito que vc disse eu consegui consertar o delete e o pesquisar
so que quando eu fecho o programa e abro novamente e tento pesquisar nao aparece nada (eu gostaria que os cadastros ficassem)
Quanto ao XML, não entendi direito. Quando você cadastra, mostra na tela, mas quando você fecha e abre o programa, só mostra o código 1?
eu cadastro e aparece na tela, so que quando fecho e abro novamente o programa os cadastros nao ficam, nao mostra nenhum, gostaria de saber se tem um codigo (botao) para visualizar os cadastros
obrigado
Gostei + 0
06/09/2013
Eros Cardoso
http://vimeo.com/45411385
so que nele o cara usa o navigator e o meu no caso seria botoes
Gostei + 0
07/09/2013
Marcos Oliveira
Att,
Marcos
Gostei + 0
09/09/2013
Eros Cardoso
Att,
Marcos
Marcos, estou com um problema aqui, o pesquisar nao esta funcionando (parece que falta parametros)
e gostaria que pesquisasse somente o que eu colocasse no codigo (por exemplo; digito 1 no codigo e mostrasse na tela somente os codigos com 1)
o deletar, cadastrar e alterar estao funcionando
Gostei + 0
09/09/2013
Wilton Júnior
//pesquisa
procedure TForm1.Button4Click(Sender: TObject);
begin
ClientDataSet1.locate('codigo;nome;telefone',VarArrayOf([edit1.text,edit2.text,edit3.text])[]);
end;
nao precisa por o post para esse caso.
Gostei + 0
09/09/2013
Eros Cardoso
//pesquisa
procedure TForm1.Button4Click(Sender: TObject);
begin
ClientDataSet1.locate('codigo;nome;telefone',VarArrayOf([edit1.text,edit2.text,edit3.text])[]);
end;
nao precisa por o post para esse caso.
wilton obrigado ai pela resposta, o pesquisar eu que tava errando aqui um detalhe, agora ta certo
queria saber como mostrar apenas o que foi pesquisado (eu clico em pesquisar e mostra tudo, eu queria que nao mostrasse os outros itens)
e outra coisa queria que desse um clear (apagar o que ta escrito) cada vez que abrisse o programa (nao deixar gravado o que digitou)
obrigado ae
Gostei + 0
09/09/2013
Wilton Júnior
https://www.devmedia.com.br/trabalhando-a-propriedade-filter-do-clientdataset-parte-2/13575
cdsInscricoes.Filtered := false;
cdsInscricoes.Filter := Edit1.Text;
cdsInscricoes.Filtered := true;
Acho que é isso que deseja
Os dois link acima pode te ajudar entender melhor.
Gostei + 0
09/09/2013
Eros Cardoso
https://www.devmedia.com.br/trabalhando-a-propriedade-filter-do-clientdataset-parte-2/13575
cdsInscricoes.Filtered := false;
cdsInscricoes.Filter := Edit1.Text;
cdsInscricoes.Filtered := true;
Acho que é isso que deseja
Os dois link acima pode te ajudar entender melhor.
wilson, tentei colocar esse e nao deu certo aqui, ai pensei de outra forma
um botao pra limpar (clear no dbgrid)
ai coloquei assim
edit1.text:='';
edit2.text:='';
edit3.text:='';
so que isso so limpa o que ta no edit, eu queria um assim...
dbgrid1:='';
nesse modelo, nao apagar o que esta na tabela, apenas limpar
obrigado
Gostei + 0
10/09/2013
Marcos Oliveira
ClientDataSet1.Filtered := False; ClientDataSet1.Filter:='codigo= '+QuotedStr(Edit1.Text); ClientDataSet1.Filtered:=True;
Quanto a limpar o DBGrid sem apagar os registros, não sei se isso é possível.
O que você pode fazer é uma "gambiarra", fazendo um filtro com um valor que nunca vá existir... Aí sim ele não irá retornar nada.
Att,
Marcos
Gostei + 0
10/09/2013
Eros Cardoso
ClientDataSet1.Filtered := False; ClientDataSet1.Filter:='codigo= '+QuotedStr(Edit1.Text); ClientDataSet1.Filtered:=True;
Quanto a limpar o DBGrid sem apagar os registros, não sei se isso é possível.
O que você pode fazer é uma "gambiarra", fazendo um filtro com um valor que nunca vá existir... Aí sim ele não irá retornar nada.
Att,
Marcos
marcos, agora sim deu certo o codigo de apagar, so que o pesquisar ainda nao esta dando certo
por ex; eu cadastro um nome la, dpois digito o nome cadastrado e clico em pesquisar e nao aparece nada (deveria aparecer os dados do nome que foi cadastrado), poderia me ajudar
obrigado mais uma vez
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)