salvar com dbedit
Alguém sabe como faço pra salvar as alterações no banco feitas no dbedit sem precisar sair dele primeiro..?
Brunoroot
Curtidas 0
Respostas
Info.wtomfs
22/10/2003
Como assim:??? têm como explicar mais detalhadamente. Pq o dbedit se estiver ligado direto na tabela é só digitar o nome da tabela, ponto + post, depois de ter dado um edit.
não entendi o lance de precisar sair...!
não entendi o lance de precisar sair...!
GOSTEI 0
Brunoroot
22/10/2003
é o seguinte:
entrei no dbedit...
digitei por exemplo 5
ai qdo eu teclar enter vou capturar esse evento com onmousedown... e quero que por exemplo: simplesmente mostrar com um showmessage o valor atual do dbedit... sei laá algo assim...
só o q acontece é q dbedit naum grava o valor digitado enquanto eu naum sair dele... se eu fizer isto que estou dizendo ele vai mostrar o valor antes de eu ter digitado 5
naum sei se deu pra entender...
entrei no dbedit...
digitei por exemplo 5
ai qdo eu teclar enter vou capturar esse evento com onmousedown... e quero que por exemplo: simplesmente mostrar com um showmessage o valor atual do dbedit... sei laá algo assim...
só o q acontece é q dbedit naum grava o valor digitado enquanto eu naum sair dele... se eu fizer isto que estou dizendo ele vai mostrar o valor antes de eu ter digitado 5
naum sei se deu pra entender...
GOSTEI 0
Info.wtomfs
22/10/2003
Ola Bruno...
Que eu saiba a qualquer momento desde que o dbedit esteja lincado à uma tabela agente consegui capturar o valor digitado no componente...
Sei lá o que pode estar acontecendo ai. Mas tente fazer o seguinte:
Vc disse que queria pegar o texto do dbedit qdo for pressionado a tecla enter né então no evento onKeypress do Dbedit faça...
If Key = #13 then
ShowMessage(Dbedit1.Text);
Isso vai fazer com que o texto digitado apareça em uma mensagem ok...
Qualquer coisa retorne a Mensagem e diga se deu certo...
Espero ter ajudado vc!!!
Que eu saiba a qualquer momento desde que o dbedit esteja lincado à uma tabela agente consegui capturar o valor digitado no componente...
Sei lá o que pode estar acontecendo ai. Mas tente fazer o seguinte:
Vc disse que queria pegar o texto do dbedit qdo for pressionado a tecla enter né então no evento onKeypress do Dbedit faça...
If Key = #13 then
ShowMessage(Dbedit1.Text);
Isso vai fazer com que o texto digitado apareça em uma mensagem ok...
Qualquer coisa retorne a Mensagem e diga se deu certo...
Espero ter ajudado vc!!!
GOSTEI 0
Brunoroot
22/10/2003
como eu disse acima isso naum da certo... só vou conseguir ver a alteração qdo eu sair do dbedit...
GOSTEI 0
Inguinorante
22/10/2003
Cara, tenta o seguinte:
No evento KeyDown desse DBEdit faça
begin
if Key = VK_RETURN then begin
Tabela.Post;
ShowMessage(TabelaCampo.asString);
end;
end;
Assim, voce pega o conteúdo do BDEdit, mas que na verdade está no campo da tabela(dado que acabou de ser gravado com o post) sem precisar sair do DBEdit. Tenta aí! Talvez funcione.
No evento KeyDown desse DBEdit faça
begin
if Key = VK_RETURN then begin
Tabela.Post;
ShowMessage(TabelaCampo.asString);
end;
end;
Assim, voce pega o conteúdo do BDEdit, mas que na verdade está no campo da tabela(dado que acabou de ser gravado com o post) sem precisar sair do DBEdit. Tenta aí! Talvez funcione.
GOSTEI 0
Rômulo Barros
22/10/2003
Também estou com o mesmo problema. vamos supor que eu tenha 5 dbedits no meu formulário de cadastro. então, no evento BeforePost do ClientDataset chamo a seguinte função:
Function VerificaCamposEmBranco : Boolean;
Var
Cont : Integer;
Begin
For cont :=0 To DataSource.DataSet.FieldsCount -1 Do
Begin
If(DataSource.DataSet.Fields[cont].requeired)Then
If(DataSource.DataSet.Field[Cont].isNull Or(TrimLeft(TrimRight(DataSource.DataSet.Fields[Cont]))=´´))Then
begin
Showmessage(´Preencha o campo ´´+DataSource.DataSet.Fields[cont].DisplayLable);
result := true;
break;
end;
End;
End;
// OU SEJA, EU FAÇO UM LOOP EM TODOS OS FIELDS DO MEU DATASET E NAQUELES QUE SÃO REQUERIDOS E NÃO FORAM PREENCHIDOS SERÃO RETORNADOS EM FORMA DE UMA MENSAGEM, AVISANDO O OCORRIDO AO USUÁRIO. vAMOS SUPOR QUE EU PREENCHI OS TODOS OS 5 EDITS E DECHEI O FOCUS NO ÚLTIMO EDIT REQUERIDO. ENTÃO, O SISTEMA RETORNARÁ O MEU ERRO PARA O ÚLTIMO EDIT, OU SEJA, ELE NÃO RECONHECE O CONTEÚDO DESTE ÚLTIMO EDIT. ENTÃO, PARA EVITAR ISSO, SEMPRE TENHO QUE CRIAR UM CAMPO NAO REQUERIDO E, ANTES DE DÁ UM POST, EU PASSO O FOCUS PARA ESSE CAMPO NÃO REQUERIDO, EVITANDO ASSIM O ERRO... O BRUNO TEM RAZÃO, EU TB ESTOU COM O MESMO PROBLEMA...
Ent
Function VerificaCamposEmBranco : Boolean;
Var
Cont : Integer;
Begin
For cont :=0 To DataSource.DataSet.FieldsCount -1 Do
Begin
If(DataSource.DataSet.Fields[cont].requeired)Then
If(DataSource.DataSet.Field[Cont].isNull Or(TrimLeft(TrimRight(DataSource.DataSet.Fields[Cont]))=´´))Then
begin
Showmessage(´Preencha o campo ´´+DataSource.DataSet.Fields[cont].DisplayLable);
result := true;
break;
end;
End;
End;
// OU SEJA, EU FAÇO UM LOOP EM TODOS OS FIELDS DO MEU DATASET E NAQUELES QUE SÃO REQUERIDOS E NÃO FORAM PREENCHIDOS SERÃO RETORNADOS EM FORMA DE UMA MENSAGEM, AVISANDO O OCORRIDO AO USUÁRIO. vAMOS SUPOR QUE EU PREENCHI OS TODOS OS 5 EDITS E DECHEI O FOCUS NO ÚLTIMO EDIT REQUERIDO. ENTÃO, O SISTEMA RETORNARÁ O MEU ERRO PARA O ÚLTIMO EDIT, OU SEJA, ELE NÃO RECONHECE O CONTEÚDO DESTE ÚLTIMO EDIT. ENTÃO, PARA EVITAR ISSO, SEMPRE TENHO QUE CRIAR UM CAMPO NAO REQUERIDO E, ANTES DE DÁ UM POST, EU PASSO O FOCUS PARA ESSE CAMPO NÃO REQUERIDO, EVITANDO ASSIM O ERRO... O BRUNO TEM RAZÃO, EU TB ESTOU COM O MESMO PROBLEMA...
Ent
GOSTEI 0
Glayson Silva
22/10/2003
Tenho o mesmo problema pessoal, se altero um dando no dbedit e mando dar um post sem sair do dbedit simplismente não grava os novos dados fica apenas os dados antigos.
GOSTEI 0
Glayson Silva
22/10/2003
Tenho o mesmo problema pessoal, se altero um dando no dbedit e mando dar um post sem sair do dbedit simplismente não grava os novos dados fica apenas os dados antigos.
GOSTEI 0
Nelson Santos
22/10/2003
ganhe dinheiro com softwares 3D em Delphi 7
http://www.3dsistemas.com.br
http://www.3dsistemas.com.br
GOSTEI 0