ERRO NO BANCO DE DADOS

USUARIO.EXCLUIDOS 02/09/2007 15:14:12
#233766
Estou fazendo conexão via ADO... porém esta dando erro. estou tentando fazer uma consulta por nome ou código .. dependendo da opção q o usuario escolher... eu declarei as variaveis em um módulo... e ja fiz uma nova conexao no primeiro form...o código que vou postar e do de consulta:

Option Explicit

Private Sub Command1_Click()
Dim Nome As String
Dim Codigo As Integer

Tabela.Open SQL, Conexao, adOpenKeyset, adLockOptimistic
If txtProduto.Text <> "" Or txtCodigo.Text <> "" Then
If optNome.Value = True Then
If Nome <> "" Then
frmPrincipal.txtFormula1.Text = Tabela.Fields("Formula1")
frmPrincipal.txtFormula2.Text = Tabela.Fields("Formula2")
frmPrincipal.txtFormula3.Text = Tabela.Fields("Formula3")
frmPrincipal.txtFormula4.Text = Tabela.Fields("Formula4")
frmPrincipal.txtPorcentagem1.Text = Tabela.Fields("Porcentagem1")
frmPrincipal.txtPorcentagem2.Text = Tabela.Fields("Porcentagem2")
frmPrincipal.txtPorcentagem3.Text = Tabela.Fields("Porcentagem3")
frmPrincipal.txtPorcentagem4.Text = Tabela.Fields("Porcentagem4")
frmPrincipal.txtProduto.Text = Tabela.Fields("Produto")
frmPrincipal.txtPassada1.Text = Tabela.Fields("Passada1")
frmPrincipal.txtPassada2.Text = Tabela.Fields("Passada2")
frmPrincipal.txtPassada3.Text = Tabela.Fields("Passada3")
frmPrincipal.txtPassada4.Text = Tabela.Fields("Passada4")
Unload Me
Else
MsgBox "Produto não encontrado!", vbInformation, "Aviso"
End If
Else
If Codigo <> "" Then
frmPrincipal.txtFormula1.Text = Tabela.Fields("Formula1")
frmPrincipal.txtFormula2.Text = Tabela.Fields("Formula2")
frmPrincipal.txtFormula3.Text = Tabela.Fields("Formula3")
frmPrincipal.txtFormula4.Text = Tabela.Fields("Formula4")
frmPrincipal.txtPorcentagem1.Text = Tabela.Fields("Porcentagem1")
frmPrincipal.txtPorcentagem2.Text = Tabela.Fields("Porcentagem2")
frmPrincipal.txtPorcentagem3.Text = Tabela.Fields("Porcentagem3")
frmPrincipal.txtPorcentagem4.Text = Tabela.Fields("Porcentagem4")
frmPrincipal.txtProduto.Text = Tabela.Fields("Produto")
frmPrincipal.txtPassada1.Text = Tabela.Fields("Passada1")
frmPrincipal.txtPassada2.Text = Tabela.Fields("Passada2")
frmPrincipal.txtPassada3.Text = Tabela.Fields("Passada3")
frmPrincipal.txtPassada4.Text = Tabela.Fields("Passada4")
Unload Me
Else
MsgBox "Produto não encontrado!", vbInformation, "Aviso"
End If
End If
Else
MsgBox "Digite os dados para concluir sua pesquisa!", vbInformation, "Aviso"
End If
Tabela.Close
End Sub


Private Sub Command2_Click()
Unload Me
End Sub


Private Sub OptCodigo_Click()
If OptCodigo.Value = True Then
SQL = "Select * from tbProdutos Where Codigo='" & txtCodigo.Text & "'"
txtProduto.Enabled = False
txtCodigo.Enabled = True
optNome.Value = False
txtCodigo.SetFocus
End If
End Sub


Private Sub optNome_Click()
If optNome.Value = True Then
SQL = "Select * from tbProdutos Where Nome='" & txtProduto.Text & "'"
txtProduto.Enabled = True
txtCodigo.Enabled = False
OptCodigo.Value = False
txtProduto.SetFocus
End If
End Sub


Obrigado a todos
MJAC 02/09/2007 16:40:50
#233770
Resposta escolhida
amigo se o campo Codigo é numérico tire as aspas simples e como o campo Nome é texto troque o = pela instrução Like e adiciona um * ou % (depende do BD) para que sirva de coringa na sua pesquisa de nome. tenta ai, abraços...
USUARIO.EXCLUIDOS 03/09/2007 14:46:55
#233891
Mudei o projeto fiz como vc falou e ainda sim está dando erro...

eu estou fazendo um código q a medida q vc digita só vai sobrando os produtos q tem os msm caracteres sequenciais q o txtProduto


Private Sub txtProduto_Change()
If txtProduto.Text <> "" Then
SQL = "Select * From TbProdutos Where Produto LIKE='" & txtProduto.Text & "%'"
Tabela.Open SQL, Conexao, adOpenKeyset, adLockOptimistic
Tabela.MoveFirst
Do While Tabela.EOF = False
Lista.AddItem (Tabela.Fields("Produto"))
Tabela.MoveNext
Loop
Tabela.Close
Else
SQL = "Select * From TbProdutos"
Tabela.Open SQL, Conexao, adOpenKeyset, adLockOptimistic
Tabela.MoveFirst
Do While Tabela.EOF = False
Lista.AddItem (Tabela.Fields("Produto"))
Tabela.MoveNext
Loop
Tabela.Close
End If
End Sub


o q está errado agora?
USUARIO.EXCLUIDOS 03/09/2007 15:40:59
#233903
Private Sub txtProduto_Change()
If txtProduto.Text <> "" Then
SQL = "Select * From TbProdutos Where Produto LIKE '%" & txtProduto.Text & "%'"
Tabela.Open SQL, Conexao, adOpenKeyset, adLockOptimistic
Tabela.MoveFirst
Do While Tabela.EOF = False
Lista.AddItem (Tabela.Fields("Produto"))
Tabela.MoveNext
Loop
Tabela.Close
Else
SQL = "Select * From TbProdutos"
Tabela.Open SQL, Conexao, adOpenKeyset, adLockOptimistic
Tabela.MoveFirst
Do While Tabela.EOF = False
Lista.AddItem (Tabela.Fields("Produto"))
Tabela.MoveNext
Loop
Tabela.Close
End If
End Sub
USUARIO.EXCLUIDOS 03/09/2007 16:46:58
#233922
vlws ...

não se usa = no Like pq ele é um operador...

Obrigado gente
MJAC 04/09/2007 12:10:05
#234019
é isso ai... mas sua rotina pode ser otimizada já que são idênticas pode ficar assim:

Private Sub txtProduto_Change()
If txtProduto.Text <> "" Then
SQL = "Select * From TbProdutos Where Produto LIKE '%" & txtProduto.Text & "%'"
Else
SQL = "Select * From TbProdutos"
End If
Tabela.Open SQL, Conexao, adOpenKeyset, adLockOptimistic
Tabela.MoveFirst
Do While Tabela.EOF = False
Lista.AddItem (Tabela.Fields("Produto"))
Tabela.MoveNext
Loop
Tabela.Close
End Sub


sendo que talvez tenha que usar o * no lugar do %, isso depende da versão do Driver utilizado. Abraços...
Tópico encerrado , respostas não são mais permitidas