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]Variável de objeto ou variável do bloco With não definida (Erro 91)

    Marcos Forum
    Marcos Forum
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 14
    Registrado : 09/06/2013

    [Resolvido]Variável de objeto ou variável do bloco With não definida (Erro 91) Empty [Resolvido]Variável de objeto ou variável do bloco With não definida (Erro 91)

    Mensagem  Marcos Forum 9/6/2013, 21:35

    Boa Noite!

    Pessoal,

    Procurei, procurei e num achei algo deste titulo, mas vamos la.

    Baixei um video no youtube e estou aprendendo access com vba. Contudo cheguei em uma etapa do código em que não sei mais o q fazer (limitado).
    Idéia: Construir um formulario onde que ira cadastrar informações.
    Há botões e parei no 1º que deu este erro mencionado abaixo. Ao clicar nele, o mesmo tem que cadastrar as informações inserindo -as em uma tabela.

    Erro: Variável de objeto ou variável do bloco With não definida (Erro 91)

    Código:

    Option Compare Database

    Public Comando As String 'variável onde serão colocados os comandos SQL, como Insert, Update e Select
    Public banco As Database 'variável que irá fazer a conexao entre a aplicacao e o banco de dados, atraves dele poderemos fazer a execucao de comandos sql, como o insert.
    Public dataset As Recordset 'variável onde serao passados comandos SQl do tipo select que vao preenche-los e colocarao os dados em uma especie de tabela virtual na memoria RAM.
    _____________________________________________________________________________________
    Function conecta()
    Set banco = CurrentDb 'inicializa a conexao banco com o valor de CurrentDb, oq seria CurrentDb? CurrentDb significa que o banco a ser usado e o banco local
    End Function
    _____________________________________________________________________________________
    Function valida_selecao()
    Set dataset = banco.OpenRecordset(Comando, Dynaset) 'inicializa o dataset, executa o comando sql passado atraves da variavel Comando e preenche o dataset na memoria.
    End Function


    Conto com o Apoio de todos os Usuários.
    [img][/img]
    avatar
    Convidado
    Convidado


    [Resolvido]Variável de objeto ou variável do bloco With não definida (Erro 91) Empty Re: [Resolvido]Variável de objeto ou variável do bloco With não definida (Erro 91)

    Mensagem  Convidado 9/6/2013, 22:52

    Boas Marcos seja bem vindo ao Fórum!

    Testei o código e não me pareceu ter problemas..

    O problema que está apresentando certamente é porque esta tenntando abrir o recordset sem antes setar o Banco...

    Verifique como está chamando esta função...

    Em realidade deves ver para que vai utilizar isto.. em um formulário ou em relatórios...

    Creio que poderá mesmo ficar na mesma função.


    Cumprimentos.
    Marcos Forum
    Marcos Forum
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 14
    Registrado : 09/06/2013

    [Resolvido]Variável de objeto ou variável do bloco With não definida (Erro 91) Empty Re: [Resolvido]Variável de objeto ou variável do bloco With não definida (Erro 91)

    Mensagem  Marcos Forum 9/6/2013, 23:36

    Boa Noite!

    Piloto,

    Muito Obrigado pela atenção. Bom como eu setaria o banco? Achava que já estava setado.
    Bem, o codigo aparece este erro '91'. Olha a continuação para você ver.
    Objetivo mesmo é somente a utilização de um botão para inserção de dados em uma tabela de armazenamento.

    O código a seguir demonstra a continuação e entedimento desta questão.

    Option Compare Database
    Public NumCod As Integer 'variavel que guardara o codigo gerado no metodo GerarCodigo, e que sera para cadastrar
    Private Sub CmdCadastrar_Click()
    GerarCodigo 'chama o metodo que haviamos criado
    Comando = "Inset into TabCadLivro (Codigo, Livro, Autor, Editora, Descricao, Ano) Values (" & NumCod & ",'" & TxtLivro & "','" & TxtAutor & "','" & TxtEditora & "','" & TxtDescricao & "'," & TxtAno & ")"
    'regras do insert
    '1" Insert Into TabNoQualSeraoIseridosOsDados (Campo1,Campo2,Campo3) values (AspasDuplasSeForNumero,AspasSimples+AspasDuplasSeForTexto)
    banco.Execute (Comando) 'executa o nosso comando Insert com os dados que foram colocados no formulario
    End Sub

    Private Sub Form_Load()
    conecta 'chama a funcao de conexao que a gente havia criado no moduloConexao! ps: isso ao inicializar o Forms.
    End Sub

    Sub GerarCodigo()
    Comando = "select * from TabCadLivro order by Codigo Desc" 'seleciona todos os campos em ordem decrescente
    valida_selecao 'chama a funcao que criamos que ira executar iSql acima
    If dataset.BOF = True Then 'isso quer dizer, se nao existirem registros na tabela Begin(Inicio) sera igual a True.
    NumCod = 1 'e o numero de codigo ira ser = 1 , pq e o primeiro registro
    Else
    NumCod = dataset("Codigo") + 1 'se nao ele pega o ultimo codigo e adiciona 1 que sera o proximo
    End If

    End Sub

    Muito obrigado


    .................................................................................
    A mente que se abre a uma ideia, jamais voltará a seu tamanho original.
    avatar
    Convidado
    Convidado


    [Resolvido]Variável de objeto ou variável do bloco With não definida (Erro 91) Empty Re: [Resolvido]Variável de objeto ou variável do bloco With não definida (Erro 91)

    Mensagem  Convidado 10/6/2013, 15:05

    Está utilizando estas funções em um módulo ou no próprio formulário?

    Porque não aplicar isso no proprio botão? Lembrando que depois que seta um banco e carrega um recordsert, após utilizá-lo deve encerrá-lo para que não fique ativo.

    A lógica de uso destas expressões é a seguinte:

    Option Compare Database

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

    'Setar o banco de dados e após, caregar o recordset
    'Este erro que você está tendo é devido à variável banco não ter sido setada... por isso da o erro na instrução....
    'Eu particularmente não utilizo isso em funções.. faço diretamente no próprio botão.. teste esta instrução aplicando as intruções no próprio botão...
    'A grande maioria dos Mestres aqui do Fórum usam esta forma.. Algo assim:

    Private Sub SeuBotão_Click()
    Dim Banco as Dao.Database
    Dim dataset as Dao.Recordset
    Dim Comando as String

    Set banco = CurrentDb 'inicializa a conexao banco com o valor de
    CurrentDb, oq seria CurrentDb? CurrentDb significa que o banco a ser
    usado e o banco local
    Set dataset = banco.OpenRecordset(Comando, Dynaset)

    Aqui seu código......

    dataset.Close
    banco.Close
    Set dataset = Nothing
    Set banco = Nothing

    End Sub


    Quanto à nomenclartura... utilizaria
    rs para recordset
    db para banco
    StrSQL para instruções sql

    por ser a forma mais comum utilizada aqui...

    cumprimentos.
    Marcos Forum
    Marcos Forum
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 14
    Registrado : 09/06/2013

    [Resolvido]Variável de objeto ou variável do bloco With não definida (Erro 91) Empty Re: [Resolvido]Variável de objeto ou variável do bloco With não definida (Erro 91)

    Mensagem  Marcos Forum 10/6/2013, 19:13

    Boa Tarde!

    Piloto,

    Então, estou fazendo = a uma video aula na internet (youtube). Ele ta fazendo pelo public e vc pelo comando Dim (ainda sou leigo nas linguagens). Vamos lá. O 1º codigo refere - se a um modulo (moduloConexao). O 2º é diretamento em uma botão no formulário.

    Estou fazendo tudo em um formulario para ficar mais claro, porém ele Aplica no comando Pùblic e vc me diz no Dim. Vou encaminhar o video, ele é extenso, porém é logo no começo.

    O que me aconselha? Qual seria o geito mais fácil para que eu faça? Quero primeiro aprender a ler e escrever Esssa idea. Apenas ao clickar inserir dados em uma tabela de armazenamento.

    Segue video


    Muito obrigado por compartilhar seus conhecimentos e paciência...


    .................................................................................
    A mente que se abre a uma ideia, jamais voltará a seu tamanho original.
    avatar
    Convidado
    Convidado


    [Resolvido]Variável de objeto ou variável do bloco With não definida (Erro 91) Empty Re: [Resolvido]Variável de objeto ou variável do bloco With não definida (Erro 91)

    Mensagem  Convidado 11/6/2013, 01:45

    Aqui no Fórum temos material sobre variáveis..

    Uma variável Publica (declarada em um módulo), pode ser lida em qualquer formulário...

    Quando declara a mesma no módulo do formulário Dim Variavel as.... esta pode ser utilizada em qualquer procedimento dentro do formulário
    Quando a declara em um procedimento so pode ser utilizada neste procedimento.

    Você pode fazer como o vídeo... mas eu não consigo visualizar o porque está ocorrendo o erro...
    Envie-no uma cópia do BD para que possamos ver...

    Como eu disse este erro é porque não está sendo mantida ou carregada a variável banco....

    Cumprimentos.
    Marcos Forum
    Marcos Forum
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 14
    Registrado : 09/06/2013

    [Resolvido]Variável de objeto ou variável do bloco With não definida (Erro 91) Empty Re: [Resolvido]Variável de objeto ou variável do bloco With não definida (Erro 91)

    Mensagem  Marcos Forum 13/6/2013, 00:13

    Boa Noite!

    Piloto,

    Novamente, muito obrigado. Estou te enviando o BD agora com a regra pelo qual havia me indicado, porém não sei se está no lugar certo ou se entendi. Se achares o erro, por favor, me indique onde está para que eu aprenda a entender esta linguagem e suas dificuldades.


    Obrigado!!
    Anexos
    [Resolvido]Variável de objeto ou variável do bloco With não definida (Erro 91) AttachmentBancobiblioteca.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (68 Kb) Baixado 27 vez(es)


    .................................................................................
    A mente que se abre a uma ideia, jamais voltará a seu tamanho original.
    avatar
    Convidado
    Convidado


    [Resolvido]Variável de objeto ou variável do bloco With não definida (Erro 91) Empty Re: [Resolvido]Variável de objeto ou variável do bloco With não definida (Erro 91)

    Mensagem  Convidado 14/6/2013, 01:23

    para o botão cadastrar...

    Onserve que aspas na instrucão que abre o revordset so é viável se coloca diretamente a SQL, se for colocar uma variável não é necessário aspas

    Option Compare Database
    Public NumCod As Integer 'variavel que guardara o codigo gerado no metodo GerarCodigo, e que sera para cadastrar

    Private Sub CmdCadastrar_Click()
        Dim Banco As DAO.Database
        Dim dataset As DAO.Recordset
        Dim Comando As String

    Set Banco = CurrentDb 'inicializa a conexao banco com o valor de

    Comando = "select * from TabCadLivro" 'seleciona todos os campos em ordem decrescente
    Set dataset = Banco.OpenRecordset(Comando)

    Me.GerarCodigo

    dataset.Close
    Banco.Close
    Set dataset = Nothing
    Set Banco = Nothing

    End Sub



    Sem Aspas
    Comando = "select * from TabCadLivro" 'seleciona todos os campos em ordem decrescente
    Set dataset = Banco.OpenRecordset(Comando)

    Com Aspas
    Set dataset = Banco.OpenRecordset("select * from TabCadLivro" )

    De uma olhada na sala de repositório tem um exemplo de desvinculo feito pelo mestre joão paulo e outros que podes utilizar a forma para aprendizado, pois considero a mais comumente utilizada


    Cumprimentos.


    Última edição por PILOTO em 9/7/2013, 00:40, editado 1 vez(es) (Motivo da edição : Tópico dado como resolvido por falta de resposta)
    avatar
    cypriano
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Variável de objeto ou variável do bloco With não definida (Erro 91) Empty Re: [Resolvido]Variável de objeto ou variável do bloco With não definida (Erro 91)

    Mensagem  cypriano 12/7/2013, 03:58

    Ainda não entendi:oops: 
    Não consegui solucionar meu erro...

    Outro problema meu também é que eu não utilizei os mesmos campos que o video, criei diversos outros...tantos que não couberam na mesma linha de comando no botão cadastrar e também parei a execução do processo neste erro 91 "banco.Execute (comando)"...

    Pode me ajudar também?
    avatar
    Convidado
    Convidado


    [Resolvido]Variável de objeto ou variável do bloco With não definida (Erro 91) Empty Re: [Resolvido]Variável de objeto ou variável do bloco With não definida (Erro 91)

    Mensagem  Convidado 12/7/2013, 15:26

    Amigão... Eu expliquei que:

    Este erro é porque está tentando abrir um recordset porém sem setar o banco...

    Está havendo algum equivoco na hora que invoca os teus códigos..

    Envie o se BD tal como está para que eu possa ver isso...



    Veja bem:  a ordem exata do que pretende é:

    1 - Set Banco = CurrentDb 'inicializa a conexao banco com o valor de
    2 - Comando = "select * from TabCadLivro" 'seleciona todos os campos em ordem decrescente
    3 - Set dataset = Banco.OpenRecordset(Comando)

    Se inverter esta ordem produzirá o erro 91:

    2 - Comando = "select * from TabCadLivro" 'seleciona todos os campos em ordem decrescente
    3 - Set dataset = Banco.OpenRecordset(Comando)
    1 - Set Banco = CurrentDb 'inicializa a conexao banco com o valor de


    Outra coisa, se está fazendo isto em um módulo... significa que as variáveis poderào ser utilzadas em qualquer form do BD...
    Mas se porventura em qualquer código ocorrer um erro... estas variáveis que comportam o Banco e o Recordset(dataset) serão zeradas.. e produzira o mesmo erro.


    Cumprimentos.
    avatar
    cypriano
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Variável de objeto ou variável do bloco With não definida (Erro 91) Empty Re: [Resolvido]Variável de objeto ou variável do bloco With não definida (Erro 91)

    Mensagem  cypriano 12/7/2013, 16:46

    Formulário:
    Option Compare Database

    Private Sub CmdCadastrar_Click()
    comando = "Insert TabCadFunc(Codigo, Nome, Apelido, Nascimento, Nacionalidade, Naturalidade, Estado, Nome da Mae, Nome do Pai, CPF, RG, Orgao Expeditor, Sexo, Endereco, N, Complemento, Bairro, Cidade, Estado Residencial, CEP, Estado Civil, Conjugue, Filhos, Telefone1, Telefone2, Telefone3) values (" & NumCod & ",'" & TxtNome & "','" & TxtApelido & "'," & TxtNascimento & ",'" & TxtNacionalidade & "','" & TxtNaturalidade & "','" & TxtEstado & "','" & TxtNomeDaMae & "','" & TxtNomeDoPai & "'," & TxtCPF & "," & TxtRg & ",'" & TxtOrgaoExpeditor & "','" & TxtSexo & "','" & TxtEndereco & "'," & TxtN & ",'" & TxtComplemento & "','" & TxtBairro & "','" & TxtCidade & "','" & TxtEstadoResidencial & "'," & TxtCEP & ",'" & TxtEstadoCivil & "','" & TxtConjugue & "'," & Filhos & "," & TxtTel1 & "," & TxtTel2 & "," & TxtTel3 & ")"
    'comando2 -Esta parte não coube no comando à cima = "Insert TabCadFunc(N PISPASEP, N CNH, Tipo, Curso Vigilante, Data do curso, Ultima Reciclagem, Validade, CNV, Data de envio do Curriculo, Data da Entrevista, Contratado, Situacao, Data do Exame Admissional, Data de Contratacao, Data Exame Demissional, Data demissao, Motivo, Cargo_Funcao, Salario, Observacoes) values (" & TxtPis & "," & TxtCnh & ",'" & TxtTipo & "','" & TxtCurso & "'," & TxtDataCurso & "," & TxtDataReciclagem & "," & TxtValidade & "," & TxtCNV & "," & TxtDataCurriculo & "," & TxtEntrevista & ",'" & TxtContratado & "','" & TxtSituacao & "'," & TxtDataExameAdmissional & "," & TxtDataContratacao & "," & DataExameDemissional & "," & TxtDataDemissao & ",'" & TxtMotivo & "','" & TxtCargo & "'," & TxtSalario & ",'" & TxtObservacoes & "')"
    banco.Execute (comando)
    End Sub

    Private Sub Form_Load()
    Conecta

    Modulo Conexão:
    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
    End Sub
    avatar
    Convidado
    Convidado


    [Resolvido]Variável de objeto ou variável do bloco With não definida (Erro 91) Empty Re: [Resolvido]Variável de objeto ou variável do bloco With não definida (Erro 91)

    Mensagem  Convidado 12/7/2013, 17:44

    Amigão... um conselho.. esqueça destas funções em módulos!!!!!!!!!!!!

    Faça simplesmente assim:

    Private Sub CmdCadastrar_Click()
    Dim StrSQL As String
    Dim Db As Dao.Database
    Dim Rs As Dao.Recordset

    StrSQL= "SELECT TabCadFunc(Codigo, Nome, Apelido, Nascimento, Nacionalidade, Naturalidade, Estado, Nome da Mae, Nome do Pai, CPF, RG, Orgao Expeditor, Sexo, Endereco, N, Complemento, Bairro, Cidade, Estado Residencial, CEP, Estado Civil, Conjugue, Filhos, Telefone1, Telefone2, Telefone3) values (" & NumCod & ",'" & TxtNome & "','" & TxtApelido & "'," & TxtNascimento & ",'" & TxtNacionalidade & "','" & TxtNaturalidade & "','" & TxtEstado & "','" & TxtNomeDaMae & "','" & TxtNomeDoPai & "'," & TxtCPF & "," & TxtRg & ",'" & TxtOrgaoExpeditor & "','" & TxtSexo & "','" & TxtEndereco & "'," & TxtN & ",'" & TxtComplemento & "','" & TxtBairro & "','" & TxtCidade & "','" & TxtEstadoResidencial & "'," & TxtCEP & ",'" & TxtEstadoCivil & "','" & TxtConjugue & "'," & Filhos & "," & TxtTel1 & "," & TxtTel2 & "," & TxtTel3 & ")"

    Set Db = CurrentDb
    Db.Execute(strSQL) 
    End Sub


    É isto... agora eu percebi que voce desja cadastrar..
    entào a Expressão Insert Into não é para uso em recordset's(dataset)

    Vais tão somente setar o banco:
    Set Db = CurrentDb
    E depois executar a instrução Comando
    Db.Execute(Comando) 


    Cumprimentos.

    Conteúdo patrocinado


    [Resolvido]Variável de objeto ou variável do bloco With não definida (Erro 91) Empty Re: [Resolvido]Variável de objeto ou variável do bloco With não definida (Erro 91)

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 8/9/2024, 02:39