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

    [Resolvido]Erro 91: Problemas com o "with"

    Compartilhe

    Yureignacio
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2
    Registrado : 29/07/2013

    [Resolvido]Erro 91: Problemas com o "with"

    Mensagem  Yureignacio em 29/7/2013, 21:46

    Opa Galera, sou novo aqui no fórum e tenho uma dúvida, já havia achado um tópico referente ao assunto mas não consegui resolver meu problema, como o tópico estava como Resolvido não sei se poderia postar.

    Bom

    Tenho um código meio curto que estou usando para cadastrar Oficios, mas não está funcionando muito bem, poderiam dar uma olhada?

    Option Compare Database

    Public Comando As String
    Public banco As Database
    Public dataset As Recordset

    Function Conecta()
       Set banco = CurrentDb
    End Function

    Function valida_selecao()
       Set dataset = banco.OpenRecordset(Comando, dbOpenDynaset)
    End Function


    *****___******
    Option Compare Database
    Public numCod As Integer 'variavel que guardara o código gerado no método GerarCodigo, e que sera usado para Cadastrar Claro

    Private Sub CmdAleatorio_Click()
     
       Comando = "Select count(*) as quantidade from TabCadOficio" ' conta quantos registro há na memória e cria um campo virtualmente chamado quantidades
       valida_selecao
       Dim qtd As Integer
       qtd = dataset("quantidade")
       Randomize (Second(Time))
       Dim oficio As Integer
       oficio = Int(Rnd * qtd) + 1
       Comando = "select * from TabCadOficio where Oficio=" & oficio
       valida_selecao 'preenche o dataser
       txtoficio = dataset("Oficio")
       txtano = dataset("Ano")
       txttipo = dataset("Tipo")
       txtLogradouro = dataset("Logradouro")
       txtBairro = dataset("bairro")
       End Sub

    Private Sub CmdAlterar_Click()
     
       Comando = "update TabCadOficio set Oficio='" & txtoficio & "', Tipo='" & txttipo & "', Logradouro='" & txtLogradouro & "', Bairro=" & txtBairro & " where Oficio=" & txtoficio 'atualiza as informações do codigo informado
     
       banco.Execute (Comando)
       MsgBox ("Atualização Efetuada com Sucesso!"), vbInformation + vbOKOnly, "Sucesso ao Atualizar"
     
       Limpar 'chama metodo limpar
       cmdCadastrar.Enabled = True
       CMDConsultar.Enabled = True
       cmdAlterar.Enabled = False
       cmdExcluir.Enabled = False
       txtoficio.Enabled = True
    End Sub

    Private Sub cmdCadastrar_Click()

       If txtoficio <> "" And txttipo <> "" And txtLogradouro <> "" And txtBairro <> "" Then
           GerarCodigo 'chama o metodo que haviamos criado
           Comando = "Insert into TabCadOficio(Oficio, Ano, Tipo,Logradouro,Bairro) values (" & numCod & "," & txtoficio & "," & txtano & ",'" & txttipo & "','" & txtLogradouro & "','" & txtBairro & "')"
     
           banco.Execute (Comando)
           MsgBox ("Os dados foram cadastrados com sucesso!"), vbInformation + vbOKOnly, "Cadastro"
         
           Limpar 'chamamos o metodo aki!
       Else
           MsgBox ("Necessário informar os dados para efetuar o cadastro!"), vbInformation + vbOKOnly, "Dados Necessários"
       End If
    End Sub

    Private Sub CmdConsultar_Click()
       If txtoficio <> "" Then
           Comando = "Select * from TabCadOficio where Oficio=" & txtoficio
           valida_selecao
           If dataset.RecordCount <> 0 Then
             
               txtoficio = dataset("Oficio")
               txtano = dataset("Ano")
               txttipo = dataset("Tipo")
               txtLogradouro = dataset("Logradouro")
               txtBairro = dataset("Bairro")
               cmdAlterar.Enabled = True
               cmdExcluir.Enabled = True
               cmdCadastrar.Enabled = False
               CMDConsultar.Enabled = False
               txtoficio.Enabled = False
           Else
               MsgBox ("Não foi achado nenhum registro com o código informado!"), vbInformation + vbOKOnly, "Nenhum Registro"
           End If
       Else
           MsgBox ("Necessário informar um Ofício para efetuar a consulta!"), vbInformation + vbOKOnly, "Ofício Necessário!"
       End If
    End Sub

    Private Sub CmdExcluir_Click()
     
       Dim resp
       resp = MsgBox("Deseja realmente excluir os dados?!", vbQuestion + vbYesNo, "Exclusão")
       If resp = vbYes Then
           Comando = "delete * from TabCadOficio where Oficio=" & txtoficio
           banco.Execute (Comando) 'executa o comando delete acima
           MsgBox ("Exclusão realizada com sucesso!"), vbInformation + vbOKOnly, "Sucesso ao Excluir!"
       End If
       Limpar 'chama metodo limpar
       cmdCadastrar.Enabled = True
       CMDConsultar.Enabled = True
       cmdAlterar.Enabled = False
       cmdExcluir.Enabled = False
       txtoficio.Enabled = True
       
    End Sub

    Private Sub CmdRelatorio_Click()
       Dim resp
       resp = MsgBox("Deseja abri o relatório para impressão dos dados?", vbQuestion + vbYesNo, "Relatório")
       If resp = vbYes Then
           DoCmd.OpenReport "OficiosCadastrados", acViewPreview
       Else
           DoCmd.OpenReport "OficiosCadastrados", acViewReport
       End If
    End Sub

    Private Sub Comando18_Click()
       Limpar
    End Sub

    Private Sub Form_Load()
       Conecta
    End Sub

    Sub GerarCodigo()
       Comando = "select * from TabCadOficio order by Oficio Desc"
       valida_selecao
       If dataset.BOF = True Then
           numCod = 1 ' e o numero de código irá ser = 1, pq é o primeiro registro
       Else
           numCod = dataset("Oficio") + 1
       End If
    End Sub

    Sub Limpar()
       txtoficio = Empty
       txtano = Empty
       txttipo = Empty
       txtLogradouro = Empty
       txtBairro = Empty
    End Sub


    P.S. o código estou usando do site:
    [Você precisa estar registrado e conectado para ver este link.]
    Autor: Vitor Silva Lima
    *com alterações
    avatar
    HARYSOHN
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 12250
    Registrado : 01/03/2011

    Re: [Resolvido]Erro 91: Problemas com o "with"

    Mensagem  HARYSOHN em 30/7/2013, 15:39

    Bom dia  Yure,,, Seja bem vindo ao Fórum!

    Ajudaria se postasse o exemplo do BD com os objetos envolvidos e fornecesse mais detalhes do que pretende e qual erro está ocorrendo.


    Cumprimentos.


    .................................................................................
    PILOTO
    الله أكبر Paz, Justiça e Liberdade! الله أكبر
    CLIQUE AQUI E VEJA O VÍDEO >>> BIOMETRIA EM ACCESS

    Iniciando no Access? Então veja esse tópico e também esse


    BUSCA NO FÓRUM - CLIQUE AQUI!!!

    Quando tua dúvida for RESOLVIDA, dê retorno com AGRADECIMENTO a aqueles que gastaram seu tempo em te ajudar.
    Clique no botão Resolvido logo acima do botão Enviar, do lado direito. Todos nós agradecemos.  
    [Você precisa estar registrado e conectado para ver esta imagem.]

    Yureignacio
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2
    Registrado : 29/07/2013

    Re: [Resolvido]Erro 91: Problemas com o "with"

    Mensagem  Yureignacio em 30/7/2013, 17:01

    Estou enviando o arquivo em anexo. Na situação estou tentando criar um arquivo de cadastro, não sou muito habilidoso com o Access e VBA hehe

    Bom de qualquer maneira se puderem me ajudar.
    Anexos
    BancoBiblioteca.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (117 Kb) Baixado 8 vez(es)
    avatar
    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1218
    Registrado : 05/02/2010

    Erro 91: Problemas com o "with"

    Mensagem  good guy em 30/7/2013, 17:38

    Olá Yure,

    Fiz uma análise no bd e não vi algum problema a não ser nestes códigos:

    'Este código funciona com as alterações que fiz
    Private Sub CmdAleatorio_Click()
    On Error Resume Next   'Insira um tratamento de erro
       'para realizar o medodo aleatório temos que saber quantos resgistro tem na tabela
       Comando = "Select count(*) as quantidade from TabCadOficio" ' conta quantos registro há na memória e cria um campo virtualmente chamado quantidades
       valida_selecao
       Dim qtd As Integer
       qtd = dataset("quantidade")
       'Randomize (Second(Time))   'RETIRE esta linha de código
       Dim oficio As Integer
       oficio = Int(Rnd * qtd) + 1
       Comando = "select * from TabCadOficio where Oficio=" & oficio
       valida_selecao 'preenche o dataser
       txtoficio = dataset("Oficio")
       txtano = dataset("Ano")
       txttipo = dataset("Tipo")
       txtLogradouro = dataset("Logradouro")
       txtBairro = dataset("bairro")
       End Sub


    'Este código funciona com as alterações que fiz.

    Private Sub CmdAlterar_Click()
    On Error Resume Next

       'vamos criar o comando do update
      Faltou declarar estas variáveis

       Dim nOficio As Integer
       Dim nTipo As String
       Dim nLogradouro As String
       Dim nBairro As String
       Dim comando As String
       Dim nAno As Integer

       
      'Faltou atribuir valores às variáveis declaradas

       nOficio = Forms!FrmCadastro!txtoficio
       nTipo = Forms!FrmCadastro!txttipo
       nLogradouro = Forms!FrmCadastro!txtLogradouro
       nBairro = Forms!FrmCadastro!txtBairro
       nAno = Forms!FrmCadastro!txtano

       
    'Faltou desativar as mensagens padrão de atualização

       DoCmd.SetWarnings False
       comando = "UPDATE TabCadOficio set Oficio='" & nOficio & "',Ano= '" & nAno & "', Tipo='" & nTipo & "', Logradouro='" & nLogradouro & "', Bairro='" & nBairro & "' WHERE Oficio= " & nOficio
    'atualiza as informações do codigo informado"
       DoCmd.RunSQL comando
    DoCmd.SetWarnings True

       'regras do Update
       '1º Update TabelaASerAtualizada set Campo1=Valor1,Campo2=Valor2 where Codigo=Registro que era mudado
       'lembrando se não ultilizar o where , serão atualizado todos os registros da tabela
       MsgBox ("Atualização Efetuada com Sucesso!"), vbInformation + vbOKOnly, "Sucesso ao Atualizar"
       'temos que voltar os botões para enable = true e limpar as txts
       Limpar 'chama metodo limpar
       cmdCadastrar.Enabled = True
       CMDConsultar.Enabled = True
       cmdAlterar.Enabled = False
       cmdExcluir.Enabled = False
       txtoficio.Enabled = True
    End Sub


    Última edição por PILOTO em 1/9/2013, 18:28, editado 1 vez(es) (Razão : Tópico dado como resolvido por falta de resposta)

      Data/hora atual: 26/9/2018, 09:49