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

3 participantes

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

    avatar
    Yureignacio
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Yureignacio 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:
    https://www.youtube.com/watch?v=oekUQSWYxDc
    Autor: Vitor Silva Lima
    *com alterações
    HARYSOHN
    HARYSOHN
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  HARYSOHN 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.
    avatar
    Yureignacio
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Yureignacio 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
    [Resolvido]Erro 91: Problemas com o "with" AttachmentBancoBiblioteca.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (117 Kb) Baixado 8 vez(es)
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  good guy 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) (Motivo da edição : Tópico dado como resolvido por falta de resposta)

      Data/hora atual: 21/1/2022, 04:23