PROBLEMA COM CONSULTA SQL
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
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
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.
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.
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.
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
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
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)
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)
Algumas correções...
Veja se deu certo, oK?
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!
Ainda esta dandu problema Max na consulta
QuantidadeAtual = Ado_estoque.Recordset(0)
Ta osso aki mas vlw pela força.....
abraço
QuantidadeAtual = Ado_estoque.Recordset(0)
Ta osso aki mas vlw pela força.....
abraço
Qual é o erro que deu?
Tente:
Ado_estoque.recordset!EST_ATUAL
Ado_estoque.recordset!EST_ATUAL
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?!
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
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
Tópico encerrado , respostas não são mais permitidas