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


2 participantes

    [Resolvido]Erro em Função FindFirst com Pesquisa e Tabela

    diegoluvizon
    diegoluvizon
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 21/06/2014

    [Resolvido]Erro em Função FindFirst com Pesquisa e Tabela Empty [Resolvido]Erro em Função FindFirst com Pesquisa e Tabela

    Mensagem  diegoluvizon 21/6/2014, 02:19

    Olá,
    Estou com um problema em um código em não consigo identificá-lo para corrigir.
    Antes vou explicar, tenho uma tabela chamada "tblTitulos" com os campos [idTitulo] e [descriçaoTitulo], essa tabela é onde armazeno os dados.
    Tenho um formulário contínuo chamado "frmTitulos" com os controles "txtidTitulo" (numeração automática) e "txtdescriçao" (entrada pelo teclado), onde eu entro com todos os dados, porém estes dados são armazenados em uma tabela temporária chamada "tblTitulos_Temp" e só são adicionados na "tblTitulos" quando ativado um botão de comando chamado "btnSalvar", o qual executa uma consulta de acréscimo na "tblTitulos" somente do campo [descriçaoTitulo], e após isso limpa a tabela "tblTitulos_Temp" através de uma consulta de exclusão.

    Meu problema é o seguinte, como eu tenho um formulário contínuo eu preciso testar os registros antes que sejam registrados, ou seja, antes que o controle "txtdescriçao" perca o foco, pois não quero ter nenhum registro com descrição repetida. Para isso usei a função ".FindFirst", com a expectativa de que ela busque em minha tabela fonte "tblTitulos" se o registro atual já existe, usando como critério o conteúdo do controle "txtdescriçao".

    Mas está dando erro na linha do FindFirst, e eu não consigo identificá-lo, o código está abaixo, se alguem puder me ajudar eu agradeço.

    Código:
    Private Sub txtdescriçao_LostFocus()
        Dim rst As DAO.Recordset
        Dim strCriteria As String
        Set rst = CurrentDb.OpenRecordset("tblTitulos")

        strCriteria = "[descriçaoTitulo] ='" & Me.txtdescriçao & "'"
        
        If txtdescriçao <> "" Then
            With rst
            .FindFirst (strCriteria)
             If Not .NoMatch Then
                 Me.Undo
                 MsgBox "Titulo Já Cadastrado no Banco de Dados!", vbCritical, "Atenção!"
                 txtdescriçao.SetFocus
             End If 'end if 3
            End With
            rst.Close
            Set rst = Nothing
        End If
        
    End Sub
    Noobezinho
    Noobezinho
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4140
    Registrado : 29/06/2012

    [Resolvido]Erro em Função FindFirst com Pesquisa e Tabela Empty Re: [Resolvido]Erro em Função FindFirst com Pesquisa e Tabela

    Mensagem  Noobezinho 21/6/2014, 02:58

    OLá

    Experimente tirar o parênteses:

    .FindFirst strCriteria


    Se não funfar, diga qual é a mensagem do erro.


    Abraços


    Noob


    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.
    diegoluvizon
    diegoluvizon
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 21/06/2014

    [Resolvido]Erro em Função FindFirst com Pesquisa e Tabela Empty Re: [Resolvido]Erro em Função FindFirst com Pesquisa e Tabela

    Mensagem  diegoluvizon 23/6/2014, 12:35

    Tirei os parenteses, mas continua dando o mesmo erro.

    A mensagem de erro é a seguinte:

    Erro em tempo de execução '3251':

    Operação não suportada para este tipo de objeto.


    Abraço

    Diego

    Windows 8 - 64 bits
    MS Access 2010
    Noobezinho
    Noobezinho
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4140
    Registrado : 29/06/2012

    [Resolvido]Erro em Função FindFirst com Pesquisa e Tabela Empty Re: [Resolvido]Erro em Função FindFirst com Pesquisa e Tabela

    Mensagem  Noobezinho 23/6/2014, 12:53

    Mude de propriedade;

    Coloque o código na propriedade ao sair do controle txtdescriçao.

    Agora, sabemos que é um tanto "cavernoso" fazer pesquisa através de strings.

    Por mais que tente, uma descrição sempre será diferente daquela gravada na tabela.

    Dica: Grave junto com a descrição, o id do título, assim, irá buscar o id na tabela temporária,
    já que esse registro só estará la se tiver uma descrição, certo?

    Mesmo assim, ainda você poderá verificar se aquele ID  tem uma descrição gravada na tabela temporária( Not isnull(me.descrição).

    Espero estar ajudando

    Noob


    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.
    diegoluvizon
    diegoluvizon
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 21/06/2014

    [Resolvido]Erro em Função FindFirst com Pesquisa e Tabela Empty Re: [Resolvido]Erro em Função FindFirst com Pesquisa e Tabela

    Mensagem  diegoluvizon 24/6/2014, 22:36

    Noobezinho,
    Meu código, não sei por qual motivo, não estava reconhecendo certo a seguinte linha:

    Código:
    Set rst = CurrentDb.OpenRecordset("tblTitulos")

    Criei um formulário de consulta chamado "frmConsultaTitulos" sem nenhum controle, com fonte de registro em uma consulta que busca os dados da tabela "tblTitulos".

    e modifiquei o código para o a seguir:

    Código:
    Private Sub txtdescriçao_LostFocus()
    Dim rst As Recordset
    Dim strCriteria As String
    Dim frm As Variant
    Dim nregistros, contator As Integer
    nregistros = Me.RecordsetClone.RecordCount
       
    If IsNull(Me.txtdescriçao) And nregistros = 0 Then
        Exit Sub
    ElseIf IsNull(Me.txtdescriçao) And nregistros > 0 Then
        MsgBox "Campo em Branco", vbCritical, "Preenchimento Inválido"
        Me.txtdescriçao.SetFocus
    Else
            DoCmd.OpenForm "frmConsultaTitulos", acPreview, , , acFormReadOnly, acHidden
            Set frm = Forms!frmConsultaTitulos
            Set rst = frm.RecordsetClone
            With rst
                .FindFirst "[descriçaoTitulo] = '" & Me.txtdescriçao & "'"
                If Not .NoMatch Then
                MsgBox "O Titulo " & Me.txtdescriçao & " já existe no banco de dados"
                DoCmd.Close acForm, "frmConsultaTitulos", acSaveNo
            End If
            End With
        End If
    End Sub

    E meu comando FindFirst funcionou perfeitamente!
    Agora quero digitar todos os dados, e que só sejam verificados quando em clicar no botão salvar, mas isso é assunto para outro tópico!
    Obrigado pela ajuda, se tiver uma idéia melhor e sempre bem vinda!


    .................................................................................
    Atenciosamente,
    Diego

    Windows 8 Pro 64 bits
    MS Access 2010
    Noobezinho
    Noobezinho
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4140
    Registrado : 29/06/2012

    [Resolvido]Erro em Função FindFirst com Pesquisa e Tabela Empty Re: [Resolvido]Erro em Função FindFirst com Pesquisa e Tabela

    Mensagem  Noobezinho 24/6/2014, 23:21

    Diego

    Que ótimo que conseguiu.

    Mas você pode fazer uma consulta dessa tabela e colocar a consulta no lugar da tabela:

    Set rst = CurrentDb.OpenRecordset("tblTitulos") ficaria asssim:

    Set rst = CurrentDb.OpenRecordset("NomeDaConsulta") ou ainda:

    Set rst = CurrentDb.OpenRecordset("Select ...")

    Para desencargo de consciência, teste o código colocando o nome de outra tabela, veja também as pontuações.

    Abraços

    Noob


    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.
    diegoluvizon
    diegoluvizon
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 21/06/2014

    [Resolvido]Erro em Função FindFirst com Pesquisa e Tabela Empty Re: [Resolvido]Erro em Função FindFirst com Pesquisa e Tabela

    Mensagem  diegoluvizon 25/6/2014, 00:14

    Boa Noite Noob

    Usando a linha: Set rst = CurrentDb.OpenRecordset("tblTitulos") como

    Set rst = CurrentDb.OpenRecordset("tblTitulos", dbOpenDynaset), também funcionou, e acho que é uma solução bem melhor que a que consegui alterando o código!


    .................................................................................
    Atenciosamente,
    Diego

    Windows 8 Pro 64 bits
    MS Access 2010

    Conteúdo patrocinado


    [Resolvido]Erro em Função FindFirst com Pesquisa e Tabela Empty Re: [Resolvido]Erro em Função FindFirst com Pesquisa e Tabela

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 26/4/2024, 10:51