Fórum incluir, excluir e pesquisar em delphi #454385

06/09/2013

0

ola amigos gostaria de saber como faço para incluir, excluir e pesquisar dados em um dbgrid
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

Eros Cardoso

Responder

Posts

06/09/2013

Marcos Oliveira

Eros, vamos por parte. Não entendi direito quando você quis dizer "criar um programa sem banco de dados de outra tabela". Se você quer incluir alguma coisa para aparecer no DBGrid, você terá que ter pelo menos uma tabela, nem que seja em memória, utilizando o ClientDataSet, por exemplo. O DBGrid apenas mostra os dados na tela, que são gravados em alguma tabela. Não tem como inserir dados diretamente nele.
Responder

Gostei + 0

06/09/2013

Wilton Júnior

Eros se eu entendi bem vc vai ter que usar o clientdataset para realizar o trabalho que vc quer fazer.
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"
Responder

Gostei + 0

06/09/2013

Eros Cardoso

é isso ai, vou pesquisar aqui, valeu ai marcos e wilton
vou ver aqui como funciona o ClientDataSet
obrigado
Responder

Gostei + 0

06/09/2013

Eros Cardoso

Eros se eu entendi bem vc vai ter que usar o clientdataset para realizar o trabalho que vc quer fazer.
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
Responder

Gostei + 0

06/09/2013

Marcos Oliveira

Eros, Vamos lá:

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
Responder

Gostei + 0

06/09/2013

Eros Cardoso

Eros, Vamos lá:

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
Responder

Gostei + 0

06/09/2013

Eros Cardoso

olha so esse video
http://vimeo.com/45411385
so que nele o cara usa o navigator e o meu no caso seria botoes
Responder

Gostei + 0

07/09/2013

Marcos Oliveira

Eros, agora entendi... Tem uma propriedade no ClientDataSet que chama "FileName". Você deve informar um nome de arquivo, mesmo que ele não exista, para que o ClientDataSet salve os seus registros. O arquivo é um XML. Informe, por exemplo, "C:\BANCO.XML", que dessa forma o ClientDataSet vai armazenar seus registros nesse arquivo XML. Como te falei, o arquivo não precisa existir. O ClientDataset cria automaticamente.

Att,

Marcos
Responder

Gostei + 0

09/09/2013

Eros Cardoso

Eros, agora entendi... Tem uma propriedade no ClientDataSet que chama "FileName". Você deve informar um nome de arquivo, mesmo que ele não exista, para que o ClientDataSet salve os seus registros. O arquivo é um XML. Informe, por exemplo, "C:\BANCO.XML", que dessa forma o ClientDataSet vai armazenar seus registros nesse arquivo XML. Como te falei, o arquivo não precisa existir. O ClientDataset cria automaticamente.

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
Responder

Gostei + 0

09/09/2013

Wilton Júnior

olha esse link para vc entender como se faz https://www.devmedia.com.br/quick-tips-locate-no-clientdataset/15708

//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.
Responder

Gostei + 0

09/09/2013

Eros Cardoso

olha esse link para vc entender como se faz https://www.devmedia.com.br/quick-tips-locate-no-clientdataset/15708

//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
Responder

Gostei + 0

09/09/2013

Wilton Júnior

https://www.devmedia.com.br/trabalhando-a-propriedade-filter-do-clientdataset-parte-1/13571
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.


Responder

Gostei + 0

09/09/2013

Eros Cardoso

https://www.devmedia.com.br/trabalhando-a-propriedade-filter-do-clientdataset-parte-1/13571
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
Responder

Gostei + 0

10/09/2013

Marcos Oliveira

Eros, creio que tenha um erro na linha do Filtro. Tente o código abaixo:

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
Responder

Gostei + 0

10/09/2013

Eros Cardoso

Eros, creio que tenha um erro na linha do Filtro. Tente o código abaixo:

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
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar