MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Sem retorno da tabela

    Compartilhe

    betocac
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 21
    Registrado : 23/10/2016

    Sem retorno da tabela

    Mensagem  betocac em Qua 29 Mar 2017, 19:45

    Boa tarde pessoal,

    Estou quebrando a cabeça aqui, estou fazendo uma verificação simples no BD e não estou tendo retorno.
    Já teste o SQL direto na base e consigo o retorno que procuro mas, no código VBA não estou conseguindo entrar no 2o IF que checa se o recordCount é maior que ZERO.

    Será que alguém pode avaliar o código para mim?? Segue abaixo;

    Private Sub numeroSerie_LostFocus()
    Dim rsNumSerie As Recordset
    Dim Db As Database
    Dim strSql As String
    Dim Opcao As VbMsgBoxResult
    Dim strMsg As String

       If Not IsNull(Me.numeroSerie) Or Me.numeroSerie <> "" Then
       
       'teste aqui
       MsgBox "Entrei! O número de série é..: " & Me.numeroSerie
       
       strSql = "SELECT numeroSerie FROM tb_Reparo WHERE numeroSerie = " & CStr(Me.numeroSerie)
       Set Db = CurrentDb
       Set rsNumSerie = Db.OpenRecordset(strSql)
             
           If rsNumSerie.RecordCount > 0 Then
               strMsg = "Este número de série já está cadastrado, " & vbCrLf
               strMsg = strMsg & "Deseja editá-lo?"
               
               Opcao = MsgBox(strMsg, vbYesNo + vbInformation, "Informação ao usuário")
               If Opcao = vbYes Then
                   DoCmd.GoToRecord , , acGoTo & Me.numeroSerie
               End If
               If Opcao = vbNo Then
                   DoCmd.GoToRecord , , acNewRec
               End If
           End If
       End If
    End Sub
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3412
    Registrado : 14/08/2013

    Re: Sem retorno da tabela

    Mensagem  FabioPaes em Qui 30 Mar 2017, 19:34

    Provavelmente ocorre o erro pois o RecordSet ainda não sabe ao certo quantos registros existe!

    Antes dessa Linha (If rsNumSerie.RecordCount > 0 Then) mova para o Ultimo Registro e em Seguida para o primeiro registro... Assim, quando fizer a contagem obterá o resultado esperado.



    ...
    rsNumSerie.MoveLast: rsNumSerie.MoveFirst
    If rsNumSerie.RecordCount > 0 Then
    ...



    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!

    betocac
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 21
    Registrado : 23/10/2016

    Re: Sem retorno da tabela

    Mensagem  betocac em Qui 30 Mar 2017, 20:22

    Oi Fábio, obrigado pela resposta mas... não resolveu. inclui os comandos abaixo sem sucesso.

    DoCmd.GoToRecord , , acLast
    DoCmd.GoToRecord , , acFirst

    Interessante é que eu testo a variável antes das linhas SQL e me retorna correto, se testo depois do SQL não retorna nada. : (
    o erro deve estar nessas linha de conexão mas eu não consigo achá-lo.

    Já teste essa instrução SQL direto no banco e funciona correto. Sei lá...não sei mais o que tentar.
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3412
    Registrado : 14/08/2013

    Re: Sem retorno da tabela

    Mensagem  FabioPaes em Qui 30 Mar 2017, 21:42

    Não pode utilizar gotorecord... Como é recordSet deve utilizar conforme eu lhe passei...


    Continua o codigo...

    Set rsNumSerie = Db.OpenRecordset(strSql)

    rsNumSerie.MoveLast: rsNumSerie.MoveFirst

    If rsNumSerie.RecordCount > 0 Then
    strMsg = "Este número de série já está cadastrado, " & vbCrLf
    strMsg = strMsg & "Deseja editá-lo?"


    Continua o codigo...


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!
    avatar
    Alexandre Fim
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 154
    Registrado : 13/12/2016

    Re: Sem retorno da tabela

    Mensagem  Alexandre Fim em Sex 31 Mar 2017, 03:19

    Boa noite Betocac

    Vc colocou a seguinte string:

    strSql = "SELECT numeroSerie FROM tb_Reparo WHERE numeroSerie = " & CStr(Me.numeroSerie)

    A questão é:

    O campo numeroSerie e do tipo "Texto" na tabela?
    Se for, vc deve informar assim: ' " & CStr(Me.numeroSerie) & " '

    Tente isso.

    Att,

    betocac
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 21
    Registrado : 23/10/2016

    Re: Sem retorno da tabela

    Mensagem  betocac em Sex 31 Mar 2017, 11:43

    Oi Fábio, é um campo string sim, também já fiz assim.
    Amigo, estou com a cabeça dolorida de tantas possibilidades que já tentei....

    veja;

    strSql = "SELECT numeroSerie FROM tb_Reparo WHERE numeroSerie = " & CStr(Me.numeroSerie) & ""

    Já coloquei o script no AO ATUALIZAR, AO PERDER FOCO , tentei com aspas, sem aspas e não consigo achar um erro no código.
    Se testo a linha SQL direto em uma consulta, consigo o retorno do código.

    Com certeza é um detalhe pequeno e não estamos vendo.
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9697
    Registrado : 04/11/2009

    Re: Sem retorno da tabela

    Mensagem  JPaulo em Sex 31 Mar 2017, 12:05

    Teste, no procedimento Antes de Atualizar do campo "numeroSerie";

    Código:
    Private Sub numeroSerie_BeforeUpdate(Cancel As Integer)
    Dim rsNumSerie As Recordset
    Dim Db As Database
    Dim strSql As String
    Dim Opcao As VbMsgBoxResult
    Dim strMsg As String
    Dim Busca As String
    Dim stLinkCriteria As String

    Busca = Me.numeroSerie.Value
    stLinkCriteria = "[numeroSerie]=" & "'" & numeroSerie & "'"

       If Not IsNull(Me.numeroSerie) Or Me.numeroSerie <> "" Then

        MsgBox "Entrei! O número de série é..: " & Me.numeroSerie
        
       strSql = "SELECT numeroSerie FROM tb_Reparo WHERE numeroSerie = '" & Me.numeroSerie & "'"
       Set Db = CurrentDb
       Set rsNumSerie = Db.OpenRecordset(strSql)
              
           If rsNumSerie.RecordCount > 0 Then
               strMsg = "Este número de série já está cadastrado, " & vbCrLf
               strMsg = strMsg & "Deseja editá-lo?"
              
               Opcao = MsgBox(strMsg, vbYesNo + vbInformation, "Informação ao usuário")
               If Opcao = vbYes Then
                    Me.Undo
                    rsNumSerie.FindFirst stLinkCriteria
                    Me.Undo
                    Me.Bookmark = rsNumSerie.Bookmark
               End If
               If Opcao = vbNo Then
                   'DoCmd.GoToRecord , , acNewRec
               End If
           End If
       End If
    Set rsNumSerie = Nothing
    End Sub


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    betocac
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 21
    Registrado : 23/10/2016

    Re: Sem retorno da tabela

    Mensagem  betocac em Sex 31 Mar 2017, 12:36

    Show, JPaulo, eram essas aspas simples o segredo de tudo, valeu mesmo.
    sou obrigado a começar a contribuir com doações a esse forum ; ), duas perguntas, duas soluções...

    Após sua grande ajuda, agora surge outra dúvida, como você já viu no código, o objetivo e verificar se um numero já está cadastrado, se já estiver e eu quiser editá-lo?

    Sua solução sugerida no VBYES não funcionou...
    E se o usuário não quiser editá-lo, como chamo o formulário para cadastrar um novo registro.

    Obs.: trata-se de um formulário com um sub-formulário.

    Espero não estar abusando.
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9697
    Registrado : 04/11/2009

    Re: Sem retorno da tabela

    Mensagem  JPaulo em Sex 31 Mar 2017, 14:09

    Olá;

    A solução sugerida por mim no VBYES, funciona em pleno.
    Pode não funcionar no seu projeto, porque eu não conheço a estrutura dele.

    Se preferir anexar parte do seu banco, tratamos disso.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    betocac
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 21
    Registrado : 23/10/2016

    Re: Sem retorno da tabela

    Mensagem  betocac em Sex 31 Mar 2017, 14:52

    Meu banco tem 40MB e está dividido, como posso resolver isso?
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9697
    Registrado : 04/11/2009

    Re: Sem retorno da tabela

    Mensagem  JPaulo em Sex 31 Mar 2017, 14:54

    Faça o Compactar/Reparar, que ele fica mais pequeno.

    Zipe os dois e enviei em formato .zip para:

    [Você precisa estar registrado e conectado para ver este link.]



    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9697
    Registrado : 04/11/2009

    Re: Sem retorno da tabela

    Mensagem  JPaulo em Seg 03 Abr 2017, 10:46

    Ola;

    Apenas adicionei o código que lhe passei acima.

    Usei este numerio de serie para teste;

    0L4E1600296SK


    [Você precisa estar registrado e conectado para ver este link.]


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9697
    Registrado : 04/11/2009

    Re: Sem retorno da tabela

    Mensagem  JPaulo em Ter 04 Abr 2017, 15:24

    Aguardo o seu retorno.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

      Data/hora atual: Sab 18 Nov 2017, 01:08