CODIGO COM NOME DO PRODUTO
Apague o código da rotina GotFocus e mude para a rotina click:
Acho que assim funciona pois a função Val() traz apenas os números do combo e transforma-os em Double.
Duvida sanada=tópico encerrado, OK?
Private Sub cboCodigo_Click()
SendKeys "{F4}"
If cboCodigo <> "" Then
Dim WS As Workspace
Dim query As String
Dim bco As Database
Set WS = DBEngine.Workspaces(0)
Set bco = WS.OpenDatabase(App.Path & "\Estoque.Mdb", False, False)
query = "Select * From Cadastro where Codigo = '" & [txt-color=#0000ff]Val(cboCodigo)[/txt-color] & "'"
Set DYN = bco.OpenRecordset(query)
If Not DYN.EOF Then
txtVUnit = DYN("VUnit") & ""
bco.Close
End If
End If
End Sub
'Mude a linha query tambem na rotina LostFocus.
Acho que assim funciona pois a função Val() traz apenas os números do combo e transforma-os em Double.
Duvida sanada=tópico encerrado, OK?
Tem essa função que eu encontrei aqui no VBMania e uso para retirar números de qualquer string.
Funciona perfeitamente.
Public Function GetNums(ByVal stTexte As String) As String
Dim lgPos As Long, lgLen As Long, stNewTxt As String
stNewTxt = Trim$(stTexte)
lgLen = Len(stNewTxt): lgPos = 1
Do While lgPos <= lgLen
If InStr("0123456789", Mid$(stNewTxt, lgPos, 1)) = 0 Then
stNewTxt = Left$(stNewTxt, lgPos - 1) & Right$(stNewTxt, lgLen - lgPos)
lgLen = lgLen - 1
Else
lgPos = lgPos + 1
End If
Loop
GetNums = stNewTxt
End Function
Funciona perfeitamente.
Mude sua sub lost focus para isso.:
Private Sub cboCodigo_LostFocus()
Dim i As Integer
Dim VarCodigo as String
For i = 1 To Len( cboCodigo.Text)
If Mid(Combo1.Text, i, 1) = "|" Then Exit Sub
VarCodigo = VarCodigo & cstr(Mid( cboCodigo, i, 1) )
Next i
If cboCodigo <> "" Then
Dim WS As Workspace
Dim query As String
Dim bco As Database
Set WS = DBEngine.Workspaces(0)
Set bco = WS.OpenDatabase(App.Path & "\Estoque.Mdb", False, False)
query = "Select * From Cadastro where Codigo = '" & VarCodigo & "'"
Set DYN = bco.OpenRecordset(query)
If Not DYN.EOF Then
cboCodigo = DYN("Codigo") & ""
txtProduto = DYN("Produto") & ""
If txtVUnit <> "" Then
txtVUnit = DYN("VUnit") & ""
End If
txtQtde = DYN("Qtde") & ""
txtTotal = DYN("Total") & ""
bco.Close
End If
End If
txtVUnit = Format(txtVUnit, "#,##.00")
txtTotal = Format(txtVUnit * txtQtde, "#,##.00")
End Sub
acho que assim resolve seu problema.....espero ter ajudado
Private Sub cboCodigo_LostFocus()
Dim i As Integer
Dim VarCodigo as String
For i = 1 To Len( cboCodigo.Text)
If Mid(Combo1.Text, i, 1) = "|" Then Exit Sub
VarCodigo = VarCodigo & cstr(Mid( cboCodigo, i, 1) )
Next i
If cboCodigo <> "" Then
Dim WS As Workspace
Dim query As String
Dim bco As Database
Set WS = DBEngine.Workspaces(0)
Set bco = WS.OpenDatabase(App.Path & "\Estoque.Mdb", False, False)
query = "Select * From Cadastro where Codigo = '" & VarCodigo & "'"
Set DYN = bco.OpenRecordset(query)
If Not DYN.EOF Then
cboCodigo = DYN("Codigo") & ""
txtProduto = DYN("Produto") & ""
If txtVUnit <> "" Then
txtVUnit = DYN("VUnit") & ""
End If
txtQtde = DYN("Qtde") & ""
txtTotal = DYN("Total") & ""
bco.Close
End If
End If
txtVUnit = Format(txtVUnit, "#,##.00")
txtTotal = Format(txtVUnit * txtQtde, "#,##.00")
End Sub
acho que assim resolve seu problema.....espero ter ajudado
Tópico encerrado , respostas não são mais permitidas