para kem gosta de vb6

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
 
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:
 
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
 
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
 
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
 
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
 
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:
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
 
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...
 
Back
Topo