1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

para kem gosta de vb6

Discussão em 'Programação' iniciada por vb_beginner, 13 de Julho de 2006. (Respostas: 12; Visualizações: 1379)

  1. deparome kom este erro ja algum tempo mas n sei o k é?
    aki vai
    Err.number "91"
    err.description "object variable or with lock variable not set"

    o k akontexe e k e faz a pesquisa na nesma mas da sempre este erro!!!!! :blubomte:

    n xei o k fazer???
    xe poderem dêm uma ajuda
     
  2. miguas

    miguas Power Member

    Isso so por si não chega para te ajudar. Posta mais qq coisa do código e explica o que estas a fazer. Ja tive esse erro várias vezes e resolvi mas de muitas formas diferentes :)

    :wow:
     
  3. este erro aparece em varias parte parte!!
    vou por aki uma dessas parte
    tipo n ligues por estar td komentado e k ixto é um trabalho de fim de curso

    Private Sub pesquisar()
    'função criada apenas para esta janela("Tabela de Preços") que será chamada com o nome de "pesquisar"

    Dim pesqnum As Integer
    'variável para descobrir qual foi a caixa que utilizou

    Dim RdoAux As New clsGeneric
    'declaração da variável "RdoAux" que irá iniciar a classe com o nome"clsGeneric"

    On Error GoTo erro
    'em caso de erro salta para o fim do programa, para o erro

    tbl_pesquisa_pesq.Cols = 6
    'comando que diz que a tabela "tbl_pesquisa_pesq" tem 6 colunas

    If pesq_s = 1 Then Exit Sub
    'caso a variável "pesq_s" igual a 1 termina a função pesquisar

    Screen.MousePointer = vbHourglass
    'cursor do rato muda para o modo ocupado

    mSQL = "Select * from Registos where familia <> '0' "
    'instrução(query) em SQL que vai pedir a base dados todos os produtos da tabela "Registos" que não sejam iguam a 0

    If cmbSerie <> "" Then
    'incio da condição cmbserie que caso não tenha sido seleccionado a serie em branco

    mSQL = mSQL & " And Descricao = '" & ConvertePlica(cmbSerie) & "'"
    'adicionara á pesquisa o valor da serie selecionado

    pesqnum = 1
    'e a variável "pesqnum" assumirá o valor 1

    End If
    'fim da condição cmbSerie

    If txtCodigo <> "" Then
    'inicio da condição txtCodigo que quando a caixa de texto "txtcodigo"não tiver em branco

    mSQL = mSQL & " And CodProd like '%" & ConvertePlica(txtCodigo) & "%'"
    'adicionara á pesquisa o valor do código do produto

    pesqnum = 2
    'e a variável "pesqnum" assumirá o valor 2

    End If
    'fim da condição txtCodigo

    If txtDescricao <> "" Then
    'inicio da condição txtDescricao caso a caixa de texto for diferente de nula

    mSQL = mSQL & " And Descricao1 like '%" & ConvertePlica(txtDescricao) & "%'"
    'adicionara o valor da caixa de texto a pesquisa

    pesqnum = 3
    'a variavel "pesqnum" assumirá o valor de 3

    End If
    'fim da condição txtDescricao

    mSQL = mSQL & " Order by CodProd"
    'os valores serão amostrados por ordem do codigo do produto

    Result = RdoAux.openRSET(mSQL)
    'comando para execturar as instruções de SQL dadas anteriormente

    If Not RdoAux.RDORSet.EOF Then
    'vai verificar se a pesquisa foi até ao fim da tabela e se existem registos _
    de produtos com os valores anteriormente digitados

    i = 1
    'a variável "i" assumirá o valor 1 para iniciar a amostra dos dados no ecran

    Do Until RdoAux.RDORSet.EOF
    'esta instrução e´para o programa correr todos os produtos dados pela variável "Result"

    tbl_pesquisa_pesq.Rows = i + 1
    'esta instrução adiciona mais 1 linha a tabela "tbl_pesquisa_pesq"

    tbl_pesquisa_pesq.TextMatrix(i, 0) = Trim(RdoAux.RDORSet!codprod)
    'o Código do Produto corrente irá aparecer na coluna Referencia na tabela"tbl_pesquisa_pesq"

    tbl_pesquisa_pesq.TextMatrix(i, 1) = Trim(RdoAux.RDORSet!Descricao1)
    'a Descrição do Produto irá aparecer na coluna Descrição da tabela"tbl_pesquisa_pesq"

    tbl_pesquisa_pesq.TextMatrix(i, 2) = Trim(RdoAux.RDORSet!codbarras)
    'o Código de Barras do Produto corrente irá aparecer na coluna C.Barras da tabela "tbl_pesquisa_pesq"

    tbl_pesquisa_pesq.TextMatrix(i, 3) = Trim(RdoAux.RDORSet!QtdMultVenda)
    'a Quantidade do Produto corrente irá aparecer na coluna QT Emb da tabela "tbl_pesquisa_pesq"

    tbl_pesquisa_pesq.TextMatrix(i, 4) = Trim(RdoAux.RDORSet!unidstk)
    'a Unidade do Produto corrente irá aparecer na coluna Un da tabela "tbl_pesquisa_pesq"

    tbl_pesquisa_pesq.TextMatrix(i, 5) = Trim(RdoAux.RDORSet!PVP1)
    'o Preço de Venda ao Publico do Produto corrente irá aparecer na coluna Preço da tabela "tbl_pesquisa_pesq"

    i = i + 1
    'vai somar mais 1 ao valor de "i" para passar pro Produto seguinte

    RdoAux.RDORSet.MoveNext
    'move a pesquisa para o Produto seguinte

    Loop
    'volta para o "Do Until" para começar amostrar o produto seguinte

    pesq_s = 2
    'a variável pesq_s assumirá o valor de 2 para poder fazer pesquisas
    Else
    'caso não haja produtos com os valores anteriormente digitados

    If pesqnum = 1 Then MsgBox "Série não encontrada!", vbOKOnly + vbCritical, "Série"
    'caso tenha sido com a combo box apresentará uma mensagem a dizer "Série não encontrada!"

    If pesqnum = 2 Then MsgBox "Código de Produto não encontrado!", vbOKOnly + vbCritical, "Código Produto"
    'caso tivesse utilizado a txtcodigo apresentará uma mensagem no encran a dizer "Código de Produto não encontrado!"

    If pesqnum = 3 Then MsgBox "Descrição não encontrada!", vbOKOnly + vbCritical, "Descrição"
    'caso fosse utilizado txtdescricao apresentará uma mensagem a dizer "Descrição não encontrada!"

    pesq_s = 1
    'a variavel pesq_s assumirá o valor 1

    cmd_limpar_Click
    'eta função irá limpar as caixas de texto e apagara os produtos na tabela "tbl_pesquisa_pesq"

    Screen.MousePointer = vbDefault
    'o cursor do rato modo para o modo normal

    End If
    'fim da condição de "If Not RdoAux.RDORSet.EOF Then"

    Screen.MousePointer = vbDefault
    'o cursor do rato modo para o modo normal


    Set RdoAux = Nothing
    '

    erro:
    If Not Err.Number = 0 Then MsgBox "Update Error No. " & Err.Number & ": " & Err.Description, vbCritical, "Error"
    Screen.MousePointer = vbDefault
    End Sub
     
  4. outra koisa!

    por mais sinistro k seja se tirar o controlo de erros o programa n da erro!!!!:blubomte:
    mx preciso do controlo de erros
    sinistrissimo:lol:



    cumps
     
  5. outra koisa!

    por mais sinistro k seja se tirar o controlo de erros o programa n da erro nem bloqueia!!!
    faz todo normalmente:blubomte:
    mx preciso do controlo de erros
    sinistrissimo:005:



    cumps
     
  6. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Só por acaso... já pensaste em meter um "Exit Function" antes do "erro:"?
    É que me parece que quer hajam quer não hajam erros, esse código é sempre executado...

    É verdade que verificas pelo Err.Number, mas mesmo assim... deixa o error handler no fundo da sub/function e tenta fazer com que ele SÓ SEJA executado quando OCORREREM erros ;)

    Ou, faz um Err.Clear no inicio da sub ;)

    Cumps [[[[[[[[[[]]]]]]]]]]
    angelofwisdom
     
  7. boas
    eu tentei por err.clear no inicio da função mas não fez nada porke continua a dar erro
    cumps
     
  8. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Se estiveres disposto a fazer isto, mete um numero ÚNICO atrás de cada linha

    tipo

    1 If A = B Then
    2 Msgbox "A é igual a B"
    3 Else
    4 Msgbox "A não é igual a B"
    5 End If

    E no error handler, na tua msgbox, mete

    If Not Err.Number = 0 Then MsgBox "Update Error No. " & Err.Number & ": " & Err.Description & " In Line #" & Trim(Erl), vbCritical, "Error"

    De modo a saberes onde é que o erro está a acontecer. Se souberes qual é a linha do erro, então não precisas de fazer nada disto :)

    Posta depois com a linha do erro ;)

    Cumps [[[[[[[[[[[]]]]]]]]]]]
    angelofwisdom
     
  9. Olá

    Usa o "Option Explicit" no inicio do módulo, em todos os módulos.
    Já agora, declara as variáveis que usares (ex.: i, pesq_s, etc..) no sitio/rotina onde as usas. Se passas variaveis para dentro da rotina, convém que as declares quando abres a rotina: Private Sub pesquisar(variavel, variavel, variavel).
    O VB6 facilita a declaração de variáveis, não obrigando o programador a declará-las, mas é sempre uma boa prática declarar todas as variáveis e de preferência evitar as variaveis globais.

    Já experimentás-te correr o programa noutro computador?
    Se quiseres ignorar o Erro 91, embora não resolva nada, podes alterar o Error Handling para:

    erro:
    If Err.Number = 91 Then
    Resume Next
    Else
    MsgBox "Update Error No. " & Err.Number & ": " & Err.Description, vbCritical, "Error"
    End If
    Screen.MousePointer = vbDefault
     
    Última edição: 20 de Julho de 2006
  10. Erro : Variavel não defenida

    Vc já se deu ao trabalho de classificar a variavel que falta...? é que o sistema nao adivinha se uma das variaveis que vc postou no código se é de caracter integer, bolean ou string... ? ou outra coisa qualquer, com essa coisa de fugires ao erro 91 vai concerteza ter um Redondo (0)
    um abraço
    ProgramadorVB6 - Zero Value
    até +
    Pensar não doi.......... :zzz: >( :P
     
  11. eu ja entreguei a aplicação mas vou tentar na mesma
    e ke gostava de fikar com aplicação a trabalhar fixe!
    dpx posto a linha em que da erro
    cumps
     
  12. eu uso a opção option explicit penso k tenho ke declarar todas as variaveis
    eu vou tentar fazer como o angelofwisdow dixe!
    cumps
     
  13. Olá
    O "Option Explicit" é para isso mesmo. Obrigar-te a declarar todas as variáveis.

    No teu código, onde tens:
    tbl_pesquisa_pesq.Cols = 6

    escreve assim:
    Set tbl_pesquisa_pesq = New Collection
    tbl_pesquisa_pesq.Cols = 6

    Não te esqueças de declarar os recordsets e demais variáveis...
     

Partilhar esta Página