Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

nossila

Erro na Consulta vb06 com mysql

Recommended Posts

Pessoal,

Estou apanhando com esse código: Vejam as estruturas das tabelas:

1 - Tabela = fatura

n_fatura varchar(14) primary key

cod_cliente integer

2 - Tabela = mov_fatura

n_fatura varchar(14)

cod_produto integer

preco_venda numeric(10,2)

3 - Tabela = Cliente

cod_cliente auto_increment primary key

4 - Tabela = produto

cod_produto auto_increment primary key

 

O formulário possue três listview chamados listViewclientes, listviewpedidos e listviewDetalhes que ao clicar duas vezes na listviewclientes exibe os dados do pedido para o cliente selecionado, bom até aí tudo bem, mas quando clico duas vezes em listviewPedidos aparece esse erro:

Rum-Time error '2147217900 (80040e14)'

Unknown column 'NV206799U' in 'where clause'

 

Veja dos os código que estou usando:

 

Dim AdoClientes As New ADODB.Recordset

Dim AdoPedidos As New ADODB.Recordset

Dim AdoDetalhe As New ADODB.Recordset

 

Private Sub Form_Load()

On Error GoTo ErrForm_Load ' Inicia o tratamento de erro

ListaClientes

 

On Error GoTo 0

Form_Load_exit:

Exit Sub

ErrForm_Load:

MsgBox Err.Description, vbExclamation, "Erro em [ErrForm_Load]"

 

End Sub

 

Public Sub ListaClientes()

'Limpa o cabeçalho

ListViewClientes.ColumnHeaders.Clear

ListViewClientes.ListItems.Clear

 

If AdoClientes.State = 1 Then Set AdoClientes = Nothing

sql = "select cliente.cod_cliente,cliente.tipo_pessoa,cliente.cnpj_cpf,cliente.nome_cliente from cliente"

AdoClientes.Open sql, mycon, adOpenKeyset, adLockPessimistic

mycon.Execute sql

 

'Cria o cabeçalho da controle listview

ListViewClientes.ColumnHeaders.Add , , "Código", 903

ListViewClientes.ColumnHeaders.Add , , "Tipo Pessoa", 1200, lvwColumnLeft

ListViewClientes.ColumnHeaders.Add , , "CNPJ/CPF", 1500, lvwColumnLeft

ListViewClientes.ColumnHeaders.Add , , "Nome da Empresa", 2300, lvwColumnLeft

 

'Preenche o controle listview com os dados da tabela

Dim i As Integer

For i = 0 To AdoClientes.RecordCount - 1

Set LIClientesID = ListViewClientes.ListItems.Add(, "A" & AdoClientes!cod_cliente, AdoClientes!cod_cliente)

If Not IsNull(AdoClientes(0)) Then

LIClientesID.SubItems(1) = AdoClientes!tipo_pessoa 'tipo pessoa

LIClientesID.SubItems(2) = AdoClientes!cnpj_cpf ' cnpj_cpf

LIClientesID.SubItems(3) = AdoClientes!nome_cliente ' nome empresa

 

End If

AdoClientes.MoveNext

Next i

 

End Sub

 

Private Sub ListViewClientes_DblClick()

Dim sql As String

Dim criterio As String

 

'Define o criterio para selecionar os pedidos

criterio = Mid(ListViewClientes.SelectedItem.Key, 2, Val(Len(ListViewClientes.SelectedItem.Key)))

'Exibe o codigo do pedido na etiqueta

lblcliente.Caption = criterio

If AdoPedidos.State = 1 Then Set AdoPedidos = Nothing

 

'Define a string que será usada na consulta para gerar o recordset

sql = "Select cliente.cod_cliente,cliente.nome_cliente,fatura.n_fatura,fatura.data_fatura,fatu

ra.total_fatura"

sql = sql & " from cliente inner join fatura on cliente.cod_cliente = fatura.cod_cliente"

sql = sql & " where cliente.cod_cliente='" & criterio & "'"

AdoPedidos.Open sql, mycon, adOpenKeyset, adLockPessimistic

mycon.Execute sql

 

 

'Limpa os cabeçalhos

ListViewPedidos.ColumnHeaders.Clear

ListViewPedidos.ListItems.Clear

 

'Cria o cabeçalho da controle listview

ListViewPedidos.ColumnHeaders.Add , , "Pedido", 1500

ListViewPedidos.ColumnHeaders.Add , , "Nome do Cliente", 1800, lvwColumnLeft

ListViewPedidos.ColumnHeaders.Add , , "Data Fatura", 1500, lvwColumnCenter

ListViewPedidos.ColumnHeaders.Add , , "Total da Fatura", 1500, lvwColumnCenter

 

'Preenche o controle listview com os dados da tabela

Dim i As Integer

For i = 0 To AdoPedidos.RecordCount - 1

Set LIPedidosID = ListViewPedidos.ListItems.Add(, AdoPedidos("n_fatura"), AdoPedidos("n_fatura"))

If Not IsNull(AdoPedidos("n_fatura")) Then

LIPedidosID.SubItems(1) = AdoPedidos!nome_cliente 'nome cliente

LIPedidosID.SubItems(2) = AdoPedidos!data_fatura ' data fatura

LIPedidosID.SubItems(3) = AdoPedidos!total_fatura ' total da fatura

 

End If

AdoPedidos.MoveNext

Next i

 

'Se não há pedidos informa ao usuário

If AdoPedidos.RecordCount = 0 Then

MsgBox "Não há pedidos para este cliente"

End If

 

End Sub

 

Private Sub ListViewPedidos_DblClick()

Dim sql As String

Dim criterio As String

 

'Define o criterio para selecionar os pedidos

criterio = ListViewDetalhes.SelectedItem.Key ' Aqui está o erro

 

'Exibe o codigo do pedido na etiqueta

lbldetalhe.Caption = criterio

If AdoDetalhe.State = 1 Then Set AdoDetalhe = Nothing

 

'Define a string que será usada na consulta para gerar o recordset

sql = "Select produto.nome_produto,mov_fatura.n_fatura,mov_fatura.preco_venda"

sql = sql & " from produto inner join (fatura inner join mov_fatura on fatura.n_fatura = mov_fatura.n_fatura) on produto.cod_produto=mov_fatura.cod_produto"

sql = sql & " where fatura.n_fatura =" & criterio

AdoDetalhe.Open sql, mycon, adOpenKeyset, adLockPessimistic

mycon.Execute sql

 

 

'Limpa os cabeçalhos

ListViewDetalhes.ColumnHeaders.Clear

ListViewDetalhes.ListItems.Clear

 

'Cria o cabeçalho da controle listview

ListViewDetalhes.ColumnHeaders.Add , , "Nome do Produto", 2800

ListViewDetalhes.ColumnHeaders.Add , , "Preço Unitário", 1200, lvwColumnLeft

 

'Preenche o controle listview com os dados da tabela

Dim i As Integer

For i = 0 To AdoDetalhe.RecordCount - 1

Set LIDetalheID = ListViewDetalhes.ListItems.Add(, AdoDetalhe("nome_produto"), AdoDetalhe("nome_produto"))

If Not IsNull(AdoDetalhe("n_fatura")) Then

LIDetalheID.SubItems(1) = AdoDetalhe!preco_venda 'preço de venda

 

End If

AdoDetalhe.MoveNext

Next i

 

'Se não há pedidos informa ao usuário

If AdoDetalhe.RecordCount = 0 Then

MsgBox "Não há produtos para este cliente"

End If

 

End Sub

 

Um abraço.

 

Nossila

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oá amigo, ja tive este mesmo problema, voce tera que fazer o select utilizando o where, veja alguns posts que fiz sobre mysql e vai conseguir arrumar este erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.