Ir para conteúdo
Fórum Script Brasil
  • 0

Data Control


Gabriel Cabral

Pergunta

Olá pessoal..

estou com uma dúvida que aparentemente não deve ser complicado de se resolver....

eu tenho um form com cadastro de clientes...

tenhos as textbox, um data control e uma msflexgrid

o problema é que quando eu vou cadastrar e/ou alterar um registro, ao clicar em gravar, ele grava, mas volta no primeiro registro ao invés de ficar no registro que acabei de inserir ou alterar....

ou seja: as textbox ficam com os textos dos campos do primeiro registro..

Exemplo:

tenho 10 clientes cadastrados...com código de 1 a 10...

quando cadastro o cliente 11 e clico em gravar, ao invés de permanecer nas textbox os dados do registro 11, são mostrados os dados do registro 1....

tem como permanecer os dados do registro 11 nas textbox??

e do registro 5, por exemplo...se for alterado, não será o ultimo registro da tabela mas seria o ultimo alterado

Espero e agradeço a ajuda de vocês

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0
Após a inserção, mova o ponteiro do recordset para o último registro (usando o método MoveLast).

Abraços,

Graymalkin

Vlw pela dica Gray...mas apenas parte da minha duvida foi resolvida...

eu apontei o recordset pro ultimo registro com o MoveLast, certo..

mas supondo que eu esteja alterando o registro com código 5, quando clico em gravar ele vai pro ultimo registro (código 10 por exemplo).

tem como apontar para o registro que alterei??

Abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Após a inserção, mova o ponteiro do recordset para o último registro (usando o método MoveLast).

Abraços,

Graymalkin

Vlw pela dica Gray...mas apenas parte da minha duvida foi resolvida...

eu apontei o recordset pro ultimo registro com o MoveLast, certo..

mas supondo que eu esteja alterando o registro com código 5, quando clico em gravar ele vai pro ultimo registro (código 10 por exemplo).

tem como apontar para o registro que alterei??

No caso você tem diferir quando se trata de uma inserção e quando se trata de uma edição. E, o MoveLast só deve ser executado quando for a inserção. Se não me engano (faz muuuuito tempo que não uso DAO), basta olhar a propriedade EditMode do recordset para saber se está em modo de edição ou não.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Intao Gray, é que eu estou usando um método mais simples...usei o visual data manager para criar meu banco de dados..

e o que eu uso para gravar uma inserção é Nome_do_DataControl.Recordset.Update

e o que eu uso para gravar uma alteração é Nome_do_DataControl.Recordset.Edit

e se eu coloco a propriedade EditMode, dá o erro Compile error: Invalid use of property

Acho que você está equivocado. Para uma inserção primeiro você chama AddNew depois Update. E para editar primeiro você chama Edit depois Update. Em *ambos* os casos se usa o Update. E como você está tentando usar o EditMode?

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Acho que você está equivocado. Para uma inserção primeiro você chama AddNew depois Update. E para editar primeiro você chama Edit depois Update. Em *ambos* os casos se usa o Update. E como você está tentando usar o EditMode?

Abraços,

Graymalkin

Do modo como estou fazendo, seria assim que teria que usar o EditMode?:

Nome_do_Datacontrol.Recordset.EditMode

????

Link para o comentário
Compartilhar em outros sites

  • 0

Acho que você está equivocado. Para uma inserção primeiro você chama AddNew depois Update. E para editar primeiro você chama Edit depois Update. Em *ambos* os casos se usa o Update. E como você está tentando usar o EditMode?

Abraços,

Graymalkin

Do modo como estou fazendo, seria assim que teria que usar o EditMode?:

Nome_do_Datacontrol.Recordset.EditMode

????

Não, EditMode é uma propriedade e *não* um método. Você tem que consultar o seu valor, que será True (verdadeiro) ou False (falso). Exemplo:

If Nome_do_Datacontrol.Recordset.EditMode Then
    Msgbox "Está em edição!"
Else
    Msgbox "Não está em edição!"
Endif

Certo? ;)

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Não, EditMode é uma propriedade e *não* um método. Você tem que consultar o seu valor, que será True (verdadeiro) ou False (falso). Exemplo:

If Nome_do_Datacontrol.Recordset.EditMode Then
    Msgbox "Está em edição!"
Else
    Msgbox "Não está em edição!"
Endif

Certo? ;)

Graymalkin

é...tem razão...

mas eu consultei o valor com as msgbox igual ao seu exemplo..e retornou false...

ele tem que ser verdadeiro...

e quando ele for verdadeiro, como ficaria a condiçao pra ele apontar pro registro que foi alterado por ultimo????

Link para o comentário
Compartilhar em outros sites

  • 0
Não, EditMode é uma propriedade e *não* um método. Você tem que consultar o seu valor, que será True (verdadeiro) ou False (falso). Exemplo:

If Nome_do_Datacontrol.Recordset.EditMode Then
    Msgbox "Está em edição!"
Else
    Msgbox "Não está em edição!"
Endif
Certo? ;) Graymalkin
é...tem razão... mas eu consultei o valor com as msgbox igual ao seu exemplo..e retornou false... ele tem que ser verdadeiro...
Isso porque deve estar faltando chamar o método Edit em algum momento antes.
e quando ele for verdadeiro, como ficaria a condiçao pra ele apontar pro registro que foi alterado por ultimo????
Você não faria nada quando fosse edição, mas sim somente quando fosse uma inserção. Seria algo assim:
edição = Nome_do_Datacontrol.Recordset.EditMode

Nome_do_Datacontrol.Recordset.Update 'Grava o registro (tanto em uma inserção quanto em uma edição)

If Not edição Then 'Se não estava em modo de edição
    Nome_do_Datacontrol.Recordset.MoveLast
Endif

Note que o If só vai ser executado se edição for falso, ou seja, somente se o registro não estava sendo editado.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...