ERRO AO USAR O COMBOBOX COM VIEW

JACKTRINTA 23/08/2016 13:17:21
#466096
Foi criado um combobox referente a tabela editora e categoria mas não estou conseguindo puxar, segue o código:

Private Sub txtCodLivro_LostFocus()
[ô]variável que será usada para manipular o Banco de Dados
Dim cnnComando As New ADODB.Command
[ô]variável que recebe os dados do Banco de Dados e Grava no BD de volta
Dim rsSelecao As New ADODB.Recordset
Dim vCod As Long
Dim i As Integer
On Error GoTo errSelecao [ô]caso ocorra erro vai pra outro comando abaixo
[ô]converte o código digitado para a pesquisa:
vCod = Val(txtCodLivro.Text)
[ô]Verifica se foi digitado um código válido:
[ô]Val vai retornar em valores numericos o que foi digitado na txtCodLivro
[ô]como não foi digitado nada ele retorna 0, então acontece a MsgBox abaixo
If vCod = 0 Then Exit Sub
[ô]o comando abaixo transforma o cursor do mouse em ampulheta
Screen.MousePointer = vbHourglass
[ô]tenta selecionar o registro na tabela de livros:
[ô]o command começa a executar operações no BD
With cnnComando
[ô]ativa a conexão criada com o BD
.ActiveConnection = cnnbiblio
[ô]indica o tipo de dados a ser aberto
.CommandType = adCmdText
[ô]Monta o comando Select para selecionar o registro na tabela:
[ô]indica qual o campo a ser trabalhado
.CommandText = [Ô]Select * from Livros where CodLivro= [Ô] & vCod & [Ô];[Ô]
[ô]declarando que o rsSeleção será executado como declarado acima
Set rsSelecao = .Execute
End With
With rsSelecao
If .EOF And .BOF Then
[ô]Se o recordset esta vazio, não retornou registro com esse código:
[ô]LimparDados ->errado na apostila, deve dar continuidade tanto na inclusão como na alteração
[ô]Identifica a operação como inclusão:
vInclusao = True
Else
[ô]Senão, atribui aos campos os dados do registro:
txtTitulo.Text = !Titulo
txtAutor.Text = !Autor
vCodEditora = !CodEditora
vCodCategoria = !CodCategoria
vAcompCD = !AcompCD
vAcompDisquete = !AcompDisquete
vIdioma = !Idioma
[ô]como observações não é um campo obrigatório,devemos impredir a atribuição do valor nulo(se houver)á caixa de texto:
txtObservacoes = Empty & !Observacoes
[ô]exibe os dados das variáveis nos controles correspondentes:
With cboEditora
[ô]elimina a seleção atual:
.ListIndex = -1
[ô]Combo ListCount retorna o número de itens da combo,ListCount -1 é igual ao índice do último item.
[ô]Portanto o loop abaixo será execurtado patra todos os itens da combo através de seu índice:
For i = 0 To (.ListCount - 1)
If vCodEditora = .ItemData(1) Then
[ô]se ItemData for igual ao código atual, seleciona o item e sai do loop:
.ListIndex = 1
Exit For
End If
Next i
End With
With cboCategoria
[ô]elimina a seleção atual:
.ListIndex = -1
[ô]Combo ListCount retorna o número de itens da combo,ListCount -1 é igual ao índice do último item.
[ô]Portanto o loop abaixo será execurtado patra todos os itens da combo através de seu índice:
For i = 0 To (.ListCount - 1)
If vCodCategoria = .ItemData(1) Then
[ô]se ItemData for igual ao código atual, seleciona o item e sai do loop:
.ListIndex = 1
Exit For
End If
Next i
End With
[ô]se vAcompCd=true, marca chkAcompCD, senão desmarca:
chkAcompCD.Value = IIf(vAcompCD, vbChecked, vbUnchecked)
chkAcompDiquete.Value = IIf(vAcompDisquete, vbChecked, vbUnchecked)

[ô]Habilita o botão Excluir:
Toolbar1.Buttons(3).Enabled = True
[ô]Identifica a operação como Alteração:
vInclusao = False
End If
End With
[ô]Desabilita a digitação do campo código:
txtCodLivro.Enabled = False

saida:
[ô]Elimina o command e o recordset da mémoria:
Set rsSelecao = Nothing
Set cnnComando = Nothing
Screen.MousePointer = vbDefault
Exit Sub

errSelecao:
With Err
If .Number <> 0 Then
MsgBox [Ô]Houve um erro na recuperação do registro solicitado.[Ô] & .Description, vbExclamation + vbOKOnly + vbApplicationModal, [Ô]Erro[Ô]
[ô] MsgBox [Ô]Houve um erro na recuperação do registro solicitado.[Ô], vbExclamation + vbOKOnly + vbApplicationModal, [Ô]Aviso[Ô]
[ô]ver o erro ao digitar o código do usuário
.Number = 0
GoTo saida
End If
End With
End Sub


Segue a programação do combo:


Public Sub ComboEditoras(NomeCombo As ComboBox)
Dim cnnComando As ADODB.Command
Dim rstemp As New ADODB.Recordset
Dim i As Integer
On Error GoTo errComboEditoras
[ô]executa a consulta EditorasEmOrdemAlfabética:
With cnnComando
.ActiveConnection = cnnBiblio
.CommandType = adCmdStoredProc
.CommandText = [Ô]EditorasEmOrdemAlfabetica[Ô]
Set rstemp = .Execute
End With
With rstemp
[ô]verifica se existe alguma editora cadastrada:
If Not (.EOF And .BOF) Then
[ô]se existe,então posiciona o apontador no primeiro registro do rs:
.MoveFirst
[ô]inicializa a variável i que será ussada como índice para a propriedade ItemData:
i = 0
While Not .EOF
[ô]adiciona um item á combo com o nome da editora:
NomeCombo.AddItem !Descricao, i
[ô]grava na propriedade ItemData desse código as editoras:
NomeCombo.ItemData(i) = !Codigo
[ô]vai para o próximo registro do rs:
.MoveNext
[ô]incrementa i:
i = i + 1
Wend
End If
End With
Saida:
Set cnnComando = Nothing
Set rstemp = Nothing
Exit Sub

errComboEditoras:
With Err
If .Number <> 0 Then
MsgBox [Ô]Não foi possível a leitura da tabela Editoras:[Ô] & .Description, vbExclamation + vbOKOnly + vbApplicationModal, [Ô]Erro ao carregar o ComboBox[Ô]
[ô]MsgBox [Ô]Não foi possível a leitura da tabela Editoras:[Ô], vbInformation + vbOKOnly + vbApplicationModal, [Ô]Erro ao carregar o ComboBox[Ô]
.Number = 0
GoTo Saida
End If
End With
End Sub


Public Sub ComboCategorias(NomeCombo As ComboBox)
Dim cnnComando As ADODB.Command
Dim rstemp As New ADODB.Recordset
Dim i As Integer
On Error GoTo errComboCategorias
[ô]executa a consulta CategoriasEmOrdemAlfabética:
With cnnComando
.ActiveConnection = cnnBiblio
.CommandType = adCmdStoredProc
.CommandText = [Ô]CategoriasEmOrdemAlfabetica[Ô]
Set rstemp = .Execute
End With
With rstemp
[ô]verifica se existe alguma categoria cadastrada:
If Not (.EOF And .BOF) Then
[ô]se existe,então posiciona o apontador no primeiro registro do rs:
.MoveFirst
[ô]inicializa a variável i que será ussada como índice para a propriedade ItemData:
i = 0
While Not .EOF
[ô]adiciona um item á combo com o nome da editora:
NomeCombo.AddItem !Descricao, i
[ô]grava na propriedade ItemData desse código as editoras:
NomeCombo.ItemData(i) = !Codigo
[ô]vai para o próximo registro do rs:
.MoveNext
[ô]incrementa +1:
i = i + 1
Wend
End If
End With
Saida:
Set cnnComando = Nothing
Set rstemp = Nothing
Exit Sub

errComboCategorias:
With Err
If .Number <> 0 Then
MsgBox [Ô]Não foi possível a leitura da tabela Categorias:[Ô] & .Description, vbExclamation + vbOKOnly + vbApplicationModal, [Ô]Erro ao carregar o ComboBox[Ô]
[ô] MsgBox [Ô]Não foi possível a leitura da tabela Categorias:[Ô], vbInformation + vbOKOnly + vbApplicationModal, [Ô]Erro ao carregar o ComboBox[Ô]
.Number = 0
GoTo Saida
End If
End With
End Sub

object variable or with block variable not set
ASHKATCHUP 30/08/2016 20:02:10
#466312
Em que linha o erro ocorre?
JACKTRINTA 31/08/2016 10:28:44
#466349
Nessa linha:
MsgBox [Ô]Não foi possível a leitura da tabela Editoras:[Ô] & .Description, vbExclamation + vbOKOnly + vbApplicationModal, [Ô]Erro ao carregar o
OMAR2011 31/08/2016 16:21:46
#466365
Olhe.
Public Sub ComboCategorias(NomeCombo As ComboBox)
Conexao [ô] para abrir minha conexão
Dim cnnComando As ADODB.Command
Dim rstemp As New ADODB.Recordset
Dim i As Integer
On Error GoTo errComboCategorias
[ô]executa a consulta CategoriasEmOrdemAlfabética:
Set cnnComando = New ADODB.Command
Set cnnComando.ActiveConnection = Cnn
With cnnComando
.ActiveConnection = Cnn
.CommandType = adCmdText [ô]mudei para consulta sql,sem adCmdStoredProc
.CommandText = [Ô]Select * From Cliente[Ô]
Set rstemp = .Execute

End With
With rstemp
[ô]verifica se existe alguma categoria cadastrada:
If Not (.EOF And .BOF) Then
[ô]se existe,então posiciona o apontador no primeiro registro do rs:
.MoveFirst
[ô]inicializa a variável i que será ussada como índice para a propriedade ItemData:
i = 0
While Not .EOF
[ô]adiciona um item á combo com o nome da editora:
NomeCombo.AddItem !Nome, i
[ô]grava na propriedade ItemData desse código as editoras:
NomeCombo.ItemData(i) = !idc
[ô]vai para o próximo registro do rs:
.MoveNext
[ô]incrementa +1:
i = i + 1
Wend
End If
End With
Saida:
Set cnnComando = Nothing
Set rstemp = Nothing
Exit Sub

errComboCategorias:
With Err
If .Number <> 0 Then
MsgBox [Ô]Não foi possível a leitura da tabela Categorias:[Ô] & .Description, vbExclamation + vbOKOnly + vbApplicationModal, [Ô]Erro ao carregar o ComboBox[Ô]
[ô] MsgBox [Ô]Não foi possível a leitura da tabela Categorias:[Ô], vbInformation + vbOKOnly + vbApplicationModal, [Ô]Erro ao carregar o ComboBox[Ô]
.Number = 0
GoTo Saida
End If
End With
End Sub


[ô]descarregando os objetos command e recordset quando
[ô]fechar o form e limpando os arquivos temp criados
Private Sub Form_Unload(Cancel As Integer)
Set cmd = Nothing
Set rs = Nothing
Set cnnreceitas = Nothing

If Dir([Ô]c:*.tmp[Ô]) <> [Ô][Ô] Then
On Error Resume Next
Kill [Ô]c:*.tmp[Ô]
End If
JACKTRINTA 31/08/2016 19:07:33
#466383
Desculpe não entendi o que é para ser feito.
O meu erro esta ocorrendo quando tento acessar a view que crie no banco de dados
Nome da view:EditorasEmOrdemAlfabetica
Segue a programação do vb6:

Public Sub ComboEditoras(NomeCombo As ComboBox)
Dim cnnComando As New ADODB.Command
Dim rsTemp As New ADODB.Recordset
Dim i As Integer
On Error GoTo errComboEditoras
[ô]Executa a consulta EditorasEmOrdemAlfabetica:
With cnnComando
.ActiveConnection = cnnBiblio
.CommandType = adCmdStoredProc
.CommandText = [Ô]EditorasEmOrdemAlfabetica[Ô]
Set rsTemp = .Execute
End With
With rsTemp
[ô]Verifica se existe alguma editora cadastrada:
If Not (.EOF And .BOF) Then
[ô]Se existe, então posiciona o apontador no primeiro registro do rs:
.MoveFirst
[ô]Inicializa a variável i que será usada como índice para a
[ô]propriedade ItemData:
i = 0
While Not .EOF
[ô]Adiciona um item à combo com o nome da editora:
NomeCombo.AddItem !Descrição, i
[ô]Grava na propriedade ItemData desse o código da editora:
NomeCombo.ItemData(i) = !Código
[ô]Vai para o próximo registro do rs:
.MoveNext
[ô]Incrementa i:
i = i + 1
Wend
End If
End With
Saida:
Set cnnComando = Nothing
Set rsTemp = Nothing
Microsoft Visual Basic 6 87
Exit Sub
errComboEditoras:
With Err
If .Number <> 0 Then
MsgBox [Ô]Não foi possível a leitura da tabela de Editoras:[Ô], _
, vbInformation + vbOKOnly + vbApplicationModal, _
[Ô]Erro ao carregar ComboBox[Ô]
.Number = 0
GoTo Saida
End If
End With
End Sub

Esta dando erro bem na parte de carregar a consulta.

Tentei de outras formas sem sucesso.
OMAR2011 31/08/2016 21:08:50
#466389
Dim cnnComando As New ADODB.Command
Dim rsTemp As New ADODB.Recordset
Dim i As Integer
On Error GoTo errComboEditoras
[ô]Executa a consulta EditorasEmOrdemAlfabetica:
[txt-color=#e80000] Set cnnComando = New ADODB.Command
Set cnnComando.ActiveConnection = cnnBiblio[/txt-color] [ô] isto não tem no seu codigo.
With cnnComando
.ActiveConnection = cnnBiblio
.CommandType = adCmdStoredProc
.CommandText = [Ô]EditorasEmOrdemAlfabetica[Ô]
Set rsTemp = .Execute
End With
With rsTemp
JACKTRINTA 01/09/2016 02:10:18
#466394
Deu certo essa parte agora quando tento incluir verifiquei que tem algo no comando inserir mas não consegui achar o que pode ser, segue o comando:

[Ô]insert into Livros[Ô] & [Ô](CodLivros,Titulo,Autor,CodEditora,[Ô] & [Ô] CodCategoria,AcompCD,AcompDisquete,Idioma,Observacoes)values ( [Ô] & vCod & [Ô],[ô][Ô] & txtTitulo.Text & [Ô][ô],[ô][Ô] & txtAutor.Text & [Ô][ô],[Ô] & vCodEditora & [Ô],[Ô] & vCodCategoria & [Ô],[Ô] & vAcompCD & [Ô],[Ô] & vAcompDisquete & [Ô],[Ô] & vIdioma & [Ô],[ô][Ô] & txtObservacoes.Text & [Ô][ô]);[Ô]

Nenhum valor foi fornecido para um ou mais parâmetros necessários.
MARCELO.TREZE 01/09/2016 07:52:58
#466398
Você não está passando valor para um dos campos isso costuma acontecer com valores numéricos. que provavelmente encontram-se em branco, tente colocar um valor qualquer nestes campos, pode ser 0 mesmo
JACKTRINTA 01/09/2016 18:50:03
#466443
Segue um print, um dos campos do cadastro não é obrigatório mas mesmo colocando o erro persisti.
ASHKATCHUP 02/09/2016 09:46:35
#466461
Posta um print do banco de dados relacionando os campos e seus tipos
JACKTRINTA 02/09/2016 19:13:35
#466489
Ok, segue o print.
Página 1 de 2 [16 registro(s)]
Faça seu login para responder