MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

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


4 participantes

    Sem retorno da tabela

    avatar
    betocac
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    Sem retorno da tabela Empty Sem retorno da tabela

    Mensagem  betocac 29/3/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
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

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

    Sem retorno da tabela Empty Re: Sem retorno da tabela

    Mensagem  FabioPaes 30/3/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!
    avatar
    betocac
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    Sem retorno da tabela Empty Re: Sem retorno da tabela

    Mensagem  betocac 30/3/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.
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

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

    Sem retorno da tabela Empty Re: Sem retorno da tabela

    Mensagem  FabioPaes 30/3/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!
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    Sem retorno da tabela Empty Re: Sem retorno da tabela

    Mensagem  Alexandre Fim 31/3/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,
    avatar
    betocac
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    Sem retorno da tabela Empty Re: Sem retorno da tabela

    Mensagem  betocac 31/3/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.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    Sem retorno da tabela Empty Re: Sem retorno da tabela

    Mensagem  JPaulo 31/3/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.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    Sem retorno da tabela Folder_announce_new Utilize o Sistema de Busca do Fórum...
    Sem retorno da tabela Folder_announce_new 102 Códigos VBA Gratuitos...
    Sem retorno da tabela Folder_announce_new Instruções SQL como utilizar...
    avatar
    betocac
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    Sem retorno da tabela Empty Re: Sem retorno da tabela

    Mensagem  betocac 31/3/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.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    Sem retorno da tabela Empty Re: Sem retorno da tabela

    Mensagem  JPaulo 31/3/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.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    Sem retorno da tabela Folder_announce_new Utilize o Sistema de Busca do Fórum...
    Sem retorno da tabela Folder_announce_new 102 Códigos VBA Gratuitos...
    Sem retorno da tabela Folder_announce_new Instruções SQL como utilizar...
    avatar
    betocac
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    Sem retorno da tabela Empty Re: Sem retorno da tabela

    Mensagem  betocac 31/3/2017, 14:52

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


    Respeito às regras : Respeito às Regras 100%

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

    Sem retorno da tabela Empty Re: Sem retorno da tabela

    Mensagem  JPaulo 31/3/2017, 14:54

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

    Zipe os dois e enviei em formato .zip para:

    jpaulo65@gmail.com



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

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    Sem retorno da tabela Folder_announce_new Utilize o Sistema de Busca do Fórum...
    Sem retorno da tabela Folder_announce_new 102 Códigos VBA Gratuitos...
    Sem retorno da tabela Folder_announce_new Instruções SQL como utilizar...
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    Sem retorno da tabela Empty Re: Sem retorno da tabela

    Mensagem  JPaulo 3/4/2017, 10:46

    Ola;

    Apenas adicionei o código que lhe passei acima.

    Usei este numerio de serie para teste;

    0L4E1600296SK


    Download


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

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    Sem retorno da tabela Folder_announce_new Utilize o Sistema de Busca do Fórum...
    Sem retorno da tabela Folder_announce_new 102 Códigos VBA Gratuitos...
    Sem retorno da tabela Folder_announce_new Instruções SQL como utilizar...
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    Sem retorno da tabela Empty Re: Sem retorno da tabela

    Mensagem  JPaulo 4/4/2017, 15:24

    Aguardo o seu retorno.


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

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    Sem retorno da tabela Folder_announce_new Utilize o Sistema de Busca do Fórum...
    Sem retorno da tabela Folder_announce_new 102 Códigos VBA Gratuitos...
    Sem retorno da tabela Folder_announce_new Instruções SQL como utilizar...

    Conteúdo patrocinado


    Sem retorno da tabela Empty Re: Sem retorno da tabela

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 19/4/2024, 17:17