PROBLEMA COM CONSULTA SQL

USUARIO.EXCLUIDOS 27/04/2007 08:25:26
#213968
Bom dia caros amigos.....
estou com a seguinte dor de kbça...
necessito que uma txt seja digitada e em outro apareça o estoqu.

a logica ta assim ...
digito o codigo do produto e no campo estoque aparece o estoque do produto .... ai que esta o problema na hora em q digito o codigo no campo estoque naumconsegue buscar o estoque dai no compo estoque mostra o select q era para ser feito
aki embaixo segue o codigo

Public Sub VerificaEstoque()
Dim QuantidadeMinima As Variant
Dim sql As Variant
Dim SqlAvisoLimite As String
Dim SqlAvisoAbaixo As String
Dim SqlPertoLimite As String
Dim SqlQuantidadeAtual As String
Dim QuantidadeAtual As String

QuantidadeMinima = txtQtdMin.Text

sql = "Select EST_ATUAL from TBL_ESTOQUE where EST_CODIGO =" & Val(txt_cod_prod.Text)
Ado_estoque.RecordSource = sql
Ado_estoque.Refresh

SqlAvisoLimite = "Select EST_DESCRICAO from TBL_ESTOQUE where EST_ATUAL = EST_MINIMO"
Ado_estoque.RecordSource = SqlAvisoLimite
Ado_estoque.Refresh

SqlAvisoAbaixo = "Select EST_DESCRICAO from TBL_ESTOQUE where EST_ATUAL < EST_MINIMO"
Ado_estoque.RecordSource = SqlAvisoAbaixo
Ado_estoque.Refresh

SqlPertoLimite = "Select EST_DESCRICAO from TBL_ESTOQUE where EST_ATUAL = EST_MINIMO / 100"
Ado_estoque.RecordSource = SqlPertoLimite
Ado_estoque.Refresh

SqlQuantidadeAtual = "Select EST_ATUAL from TBL_ESTOQUE where EST_CODIGO =" & Val(txt_cod_prod.Text)'nesta linha esta o problema
Ado_estoque.RecordSource = SqlQuantidadeAtual
Ado_estoque.Refresh

QuantidadeAtual = sql

txtQtdAtual.Text = SqlQuantidadeAtual

Desde ja agradeço
Danilo
USUARIO.EXCLUIDOS 27/04/2007 08:37:37
#213970
BOm dia !!!

Ado_estoque é uma recordset ???
vocÃÅ  esta usando DAO OU ADO ???

CREIO EU QUE SERIA:

SqlQuantidadeAtual = "Select EST_ATUAL from TBL_ESTOQUE where EST_CODIGO =" & Val(txt_cod_prod.Text)

Ado_estoque.OPEN SqlQuantidadeAtual

If Not estoque.EOF Then
txtQtdAtual.Text = Ado_estoque!EST_ATUAL
End If

Ado_estoque.Close
Set Ado_estoque = nothing

um abraço.
ALMARTI 27/04/2007 08:52:11
#213972
Uma pequena observação: não digite nome de produtos, use uma combo. Vc poderá estar disperdiçando tempo e memoria fazendo consultas sem resultados se o usuário digitar nomes errados. Com uma combo, vc exclui o problema do código, uma vez que este pode ficar no index da combo.
USUARIO.EXCLUIDOS 27/04/2007 08:55:13
#213973
oi eu estou utilizandu Ado
este codigo anum esta funcionandu fala q componente naum encontrado no Ado_estoque.OPEN ...
mas agradeço epla força vo tentandu aki....

abraço
USUARIO.EXCLUIDOS 27/04/2007 09:40:00
#213986
DAN1to6,

Pelo que entendi, você está querendo pegar o estoque atual assim:

QuantidadeAtual = sql

Mas "sql" é o nome da variável texto que você escolheu para guardar a consulta lá de cima (sql = "Select EST_ATUAL from TBL_ESTOQUE where EST_CODIGO =" & Val(txt_cod_prod.Text)). Então me parece que é aí que está o seu problema.

Outra coisa é confundir a string SQL com o seu próprio resultado:
"txtQtdAtual.Text = SqlQuantidadeAtual" vai retornar o valor que você deu à variável SqlQuantidadeAtual, que é "Select EST_ATUAL from TBL_ESTOQUE where EST_CODIGO =" & Val(txt_cod_prod.Text)". Você precisa primeiro submeter essa consulta ao banco de dados (no caso, o objeto Ado_estoque), para depois pegar o resultado


Já que você montou a última consulta chamando uma única coluna (a do estoque) então dá pra você fazer assim:

SqlQuantidadeAtual = "Select EST_ATUAL from TBL_ESTOQUE where EST_CODIGO =" & Val(txt_cod_prod.Text)
Ado_estoque.RecordSource = SqlQuantidadeAtual
Ado_estoque.Refresh

QuantidadeAtual = Ado_estoque.Recordset(0)

txtQtdAtual.Text = QuantidadeAtual

Lembrando que você declarou QuantidadeAtual como uma variável string (já que armazena valores, devia ser uma Long)


USUARIO.EXCLUIDOS 27/04/2007 10:06:37
#214001
Algumas correções...

Veja se deu certo, oK?

Public Sub VerificaEstoque()
Dim QuantidadeMinima As Integer
Dim sql As String
Dim SqlAvisoLimite As String
Dim SqlAvisoAbaixo As String
Dim SqlPertoLimite As String
Dim SqlQuantidadeAtual As String
Dim QuantidadeAtual As String

QuantidadeMinima = txtQtdMin.Text

sql = "Select EST_ATUAL from TBL_ESTOQUE where EST_CODIGO ='" & Val(txt_cod_prod.Text) & "'"
Ado_estoque.RecordSource = sql
Ado_estoque.Refresh

SqlAvisoLimite = "Select EST_DESCRICAO from TBL_ESTOQUE where EST_ATUAL = EST_MINIMO"
Ado_estoque.RecordSource = SqlAvisoLimite
Ado_estoque.Refresh

SqlAvisoAbaixo = "Select EST_DESCRICAO from TBL_ESTOQUE where EST_ATUAL < EST_MINIMO"
Ado_estoque.RecordSource = SqlAvisoAbaixo
Ado_estoque.Refresh

SqlPertoLimite = "Select EST_DESCRICAO from TBL_ESTOQUE where EST_ATUAL = EST_MINIMO / 100"
Ado_estoque.RecordSource = SqlPertoLimite
Ado_estoque.Refresh

SqlQuantidadeAtual = "Select EST_ATUAL from TBL_ESTOQUE where EST_CODIGO ='" & Val(txt_cod_prod.Text) & "'"
Ado_estoque.RecordSource = SqlQuantidadeAtual
Ado_estoque.Refresh

FLW!
USUARIO.EXCLUIDOS 27/04/2007 10:37:49
#214012
Ainda esta dandu problema Max na consulta
QuantidadeAtual = Ado_estoque.Recordset(0)
Ta osso aki mas vlw pela força.....
abraço
USUARIO.EXCLUIDOS 27/04/2007 10:51:57
#214017
Qual é o erro que deu?
USUARIO.EXCLUIDOS 27/04/2007 10:53:21
#214018
Tente:

Ado_estoque.recordset!EST_ATUAL
USUARIO.EXCLUIDOS 27/04/2007 10:57:09
#214019
nda ainda da o erro 3021 falandu q as condicoes de Bof e Eof saum verdadeiras , acredito q seja porque as tabelas estaum vazias ainda naum eh?!
USUARIO.EXCLUIDOS 27/04/2007 15:21:43
#214086
exatamente dan.


faça o seguinte então:

if not Ado_estoque.recordset.eof then
Ado_estoque.recordset!EST_ATUAL
end if

Ado_estoque.recordset.close
set Ado_estoque.recordset = nothing
Página 1 de 2 [12 registro(s)]
Tópico encerrado , respostas não são mais permitidas