GARANTIR DESCONTO

Fórum Atualizar o dado no dbgrid #305

04/11/2008

0

boa noite   Tenho um projetinho aqui feito em delphi 2007 , banco sqlserver 2005 onde preciso atualizar o numero do entregador no dbgrid   os dados vem de uma view atualizavel no banco mais nao consigo atualizar ele no delphi     eu recebo o pedido e gravo sem o numero do entregador assim que tem um disponivel eu gostaria de ir la no dbgrid de simplemente escrever 5100 ex e q esse dado fosse atualizado     2º duvida eu tenho um form de login dei um close nele caso o usario esteja correta e show no formprincipal, porem esse form de login nao ta sumindo ele fica na memoria      
Carlos Faria

Carlos Faria

Responder

Posts

04/11/2008

Silvio Paganini

Bom dia! Você está usando store procedure? Estou te passando uma video aula que explica passo a passo como atualizar(inserir)dados no grid do Delphi 2007 com Sql Server usando dbgo. Sobre a segunda dúvida, eu não entendi o que você quis dizer, por favor, explique novamente. Att, Fabio Correa

[#VIDEO-11#]
Responder

Gostei + 0

05/11/2008

Guinther Pauli

ola Carlos td bom?A resposta do Fabio foi suficiente? Vc ainda precisa de mais algum esclarecimento? Conseguiu resolver seu problema?  Estamos a disposicao!abs
Responder

Gostei + 0

05/11/2008

Carlos Faria

boa noite   Eu nao consegui pois estou utilizando o famoso trio de componentes da paleta dbexpress e nao gostaria de mudar para nao ficar muito baguncado   ve se tem como fazer isso pela paleta dbexpress
Responder

Gostei + 0

07/11/2008

Guinther Pauli

Carlos,   1o. Dúvida:   Vamos entender um pouco melhor a situação,   No DBGrid, onde vc exibe os pedidos, sem o número do entregador em um primeiro momento. Vc esta utilizando uma SQLQuery ligada a um ClientDataSet para exibir os dados?   Essa SqlQuery esta recebendo dados da View Atualizável? Se sim vc pode sempre que entrar na tela, no evento OnShow do formulário atualizar essa SqlQuery, ou seja dar um close e um open nela, passando os parâmetros que vc já passa hj para exibir o conteúdo no DbGrid, faça um refresh ou close, open no ClientDataSet também, dessa forma caso o campo Entregador esteja preenchido irá aparecer no DBGRid.   2o. Dúvida:   Vc pode colocar no evento OnClose do formulário de login, o seguinte:   FrmNomeForm.Free;  (Com isso você libera ele da memória);   Veja se funciona e me retorne por favor,    Abraço!

Responder

Gostei + 0

08/11/2008

Guinther Pauli

Carlos,   Vamos tentar melhorar ainda mais a resposta anterior, sendo mais objetivo ainda ao seu problema/dúvida:   Em primeiro lugar quando trabalhamos com o trio e isso inclui o ClientDataSet ficamos obrigado a invocar o ApplyUpdates do CDS para que os dados sejam persistidos. Quando você vai a Grid edit e pressiona enter o método Post do DataSet ao qual a Grid está conectada é disparado e como a grid esta ligada ao ClientDataSet então o Post do CDS será Chamado. Pois bem Post no CDS não grava registro, assim uma solução seria você chamar o método ApplyUpdates(0) no Evento OnAfterPost do ClientDataSet que esta conectado ao DBGrid que com certeza e o mesmo conectado a sua View Atualizável. Faça o teste.   Agora já aproveitando vamos ao Plano B pois você vai precisar, pois não á simples assim atualizar dados que vem de muitas tabelas (como e o caso da view)  usando DBX com DataSetProvider. O DataSetProvider tem que ser informado sobre qual tabela ele ira utilizar para gerar as instruções sql corretas para serem aplicadas ao banco. Assim e mais simples, Pratico, Rápido e seguro o seguinte procedimento. Declare na seção Private do seu forma a seguinte função:   Function AlocaEntregador(IDEntregador, IDPedido: Integer): Boolean;   Na Implementação faça:   Function FrmPrincipal.AlocaEntregador(IDEntregador, IDPedido: Integer): Boolean; Begin    Result := SqlConnection.ExecuteDirect(‘Update Pedido Set IdEntregador = ’+IntToStr(IdEntregador)+‘ where IdPedido = ‘+IntToStr(Idpedido) = 1; End;   O código é muito simples. Você irá passar o código do pedido que quer atualizar e o entregador deste pedido. Assim nós executamos um update na tabela de pedidos atribuindo ao pedido o código do entregador. O método execute direct retorna o número de linhas afetadas que deverá ser um, correto ? Com isso retornamos verdadeiro se uma linha for realmente afetada ou false caso o método não atualize nenhum pedido.   Assim, você agora tem várias opções de executar este método. Uma delas e a mais simples seria no evento After Post do CDS. Clique no CDS que está conectado na Grid e no evento OnAfterPost Coloque o código abaixo:   AlocaEntregador(CDSEntrega.FiledByname(‘IDPEDIDO’).AsInteger, CDSEntrega.FiledByname(‘IDEntragador).AsInteger);   Lembre-se de substituir o nome dos campos pelo nome dos seus campos, eu deduzo que não seja nada muito diferente do que coloquei porém verifique você mesmo.   Agora a segunda dúvida:   Coloque o form de login na seção available forms. Para Isso vá em project - > Options no nó Forms.   Feito isso va no seu formulário principal no evento OnCreate e coloque o código abaixo:   FrmLogin := TfrmLogin.Create(Self); FrmLogin.ShowModal; If FrmLogin.ModalResult = MrOk then   FreeandNil(FrmLogin) Else   Application.Terminate;   No formulário de login você fará o seguinte. Provavelmente você deverá ter um método no clique do botão login, mantenha-o porém a última linha deverá ser ModelResult := MrOk.   Com isso caso o usuário se log com sucesso vc irá atribuir o model result ao form com isso o form será fechado e no Form Principal o teste será feito e o formulário liberado. Caso o usuário feche o login com Alt + F4 ou outro meio a aplicação será encerrada.   Aguardo seu retorno,   abs
Responder

Gostei + 0

09/11/2008

Guinther Pauli

Carlos,   As respostas atenderam sua necessidade ?   Fico no aguardo, para zerarmos esse chamado,   abs
Responder

Gostei + 0

09/11/2008

Carlos Faria

Eu vi um exemplo seu na devmedia mais nao da certo pq a view nao tem parametro simplesmento ela traz os ultimos 100 pedidos do cliente     id_motoqueiro , nm_cliente,ds_endereco ,..........................dt_pedido       como sao muitos telefones tocando ao mesmo tempo nao da tempo do atendente jogar o motoqueiro na tela ele atende manda em branco o id_motoqueiro o outro atendende que passa as entregas e que tambem se encontra em outro local da empresa  que vai informar la no tela o numero do motoqueiro , pois ele la que passa as entregas !                                                
Responder

Gostei + 0

11/11/2008

Guinther Pauli

Carlos,   Solicitei ao Rodrigo Carreiro que fize-se uma vídeo-exemplo para esclarecer sua dúvida/solicitação.   http://video.devmedia.com.br/naoexclusivos/RodrigoMourao/Consultoria/ExemploEntrega.zip   Aguardo seu retorno para encerrarmos esse chamado.   abs
Responder

Gostei + 0

11/11/2008

Carlos Faria

Boa tarde amigos Guinter , e Rodrigo A questao do dbgrid esta resolvida. Valeu Rodrigo pelo video muito bom cara resolvi facilmente depois de assistir o video pode fechar o chamado.   E vou continuar assinando essa consultoria no inicio em nao acreditei muito mais realmente o serviço de voces ai e muito bom e de qualidade ! 
Responder

Gostei + 0

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

Aceitar