WHERE A DOIS CAMPOS DA TABELA.COM TEXTBOX ÊNICO

SANROMAN 11/09/2015 11:37:52
#451271
Bom dia

Vejam o código abaixo:


Dim sqlCon As New SqlConnection(strCmd)
Dim strSql As String = [txt-color=#e80000][Ô]SELECT EstoqueAtual [Ô] & _
[Ô]FROM TB_Produtos [Ô] & _
[Ô]WHERE TB_Produtos.EstoqueAtual < [ô][Ô] & Val(txtQtdeBalcao.Text) & [Ô][ô][Ô] & _
[Ô]AND TB_Produtos.idProdutos = [ô][Ô] & Val(txtCodigoProdutoBalcao.Text) & [Ô][ô][Ô] & _
[Ô]OR TB_Produtos.CodigoBarra = [ô][Ô] & Val(txtCodigoProdutoBalcao.Text) & [Ô][ô][Ô]
[/txt-color]
Dim sqlCmd As New SqlCommand(strSql, sqlCon)
Dim dr As SqlDataReader

Try
sqlCmd.Connection.Open()
dr = sqlCmd.ExecuteReader
dr.Read()


Do jeito que esta montado retorna [ô]false[ô] se as uma das condições não for verdadeira.O textbox txtCodigoProdBalcao aceita a digitação de dois tipos de dados.
O código do produto ou o código de barra do produto. Gostaria montar a consulta dessa forma:


[Ô]SELECT EstoqueAtual [Ô] & _
[Ô]FROM TB_Produtos [Ô] & _
[Ô]WHERE TB_Produtos.EstoqueAtual < [ô][Ô] & Val(txtQtdeBalcao.Text) & [Ô][ô][Ô] & _
[Ô]AND TB_Produtos.idProdutos = [ô][Ô] & Val(txtCodigoProdutoBalcao.Text) & [Ô][ô][Ô] & _
[Ô]OR TB_Produtos.CodigoBarra = [ô][Ô] & Val(txtCodigoProdutoBalcao.Text) & [Ô][ô][Ô]


Mas ai so retorna [ô]True[ô], ou seja todos os produtos estão com os estoques abaixo da quantidade vendida o que não é verdade.

Se puderem me ajudar a montar essa consulta de forma que, independente do valor digitado (código do produto ou código de barra), retorne o valor real para a quantidade em estoque, agradeço desde já

SANROMAN 11/09/2015 11:41:04
#451272
Pessoal

O código acima grifado em vermelho está com um erro de digitação, ele é assim:


[Ô]SELECT EstoqueAtual [Ô] & _
[Ô]FROM TB_Produtos [Ô] & _
[Ô]WHERE TB_Produtos.EstoqueAtual < [ô][Ô] & Val(txtQtdeBalcao.Text) & [Ô][ô][Ô] & _
[Ô]AND TB_Produtos.idProdutos = [ô][Ô] & Val(txtCodigoProdutoBalcao.Text) & [Ô][ô][Ô]


Me desculpem pelo erro.
PERCIFILHO 11/09/2015 12:03:34
#451274
Não tenho como testar agora, então não tenho muita certeza, mas não seria mais ou menos isso:

[Ô]SELECT EstoqueAtual FROM TB_Produtos
WHERE TB_Produtos.EstoqueAtual < [ô][Ô] & Val(txtQtdeBalcao.Text) & [Ô]
AND (TB_Produtos.idProdutos = [ô][Ô] & Val(txtCodigoProdutoBalcao.Text)& [Ô]
OR TB_Produtos.CodigoBarra = [ô][Ô] & Val(txtCodigoProdutoBalcao.Text)) & [Ô]

repare que eu coloquei [Ô]parênteses[Ô]

Testa aí.
SANROMAN 11/09/2015 12:18:26
#451275
Boa tarde PERCIFILHO

Obrigado pela atenção

Funcionou parcialmente. Se entro com o código do produto funciona, mas se entro com o código de barras não funciona.
SINCLAIR 11/09/2015 13:05:05
#451276
Resposta escolhida
Colega,

Como o AND e OR são operadores lógicos e a primeira cláusula (que tem o AND) deve ser considerada com Resultado 1 e a cláusula do OR deve ser considerada como Resultado 2.

Em resumo: separe por parênteses, para que Resultado 1 e Resultado 2 sejam coisas diferentes a serem analisadas, senão fica tudo com sendo Resultado 0.

Tem a questão do Val. Acredito se sejam campos numéricos em seu BD, portanto não poderá ter aspas simples. Deixe as aspas simples se forem campos texto e retire o Val.

Se forem campos numéricos no seu BD, acredito que a SQL abaixo vai resolver.


Dim strSql As String = [Ô]SELECT EstoqueAtual FROM TB_Produtos WHERE (TB_Produtos.EstoqueAtual < [Ô] & Val(txtQtdeBalcao.Text) & [Ô]) AND ((TB_Produtos.idProdutos = [Ô] & Val(txtCodigoProdutoBalcao.Text) & [Ô]) OR (TB_Produtos.CodigoBarra = [Ô] & Val(txtCodigoProdutoBalcao.Text) & [Ô]))[Ô]


Tudo de bom.
NICKOSOFT 11/09/2015 13:51:34
#451280
virei fã do zeuzebio3 depois do select q ele postou ontem, sempre quis entender um select encadeado daquele e entendi ontem finalmente.....
eu já usei buscas dessa forma, e separando entre ( ) os trechos me atendeu, não sei se sorte ou q realmente tinha acertado a separação...
SINCLAIR 11/09/2015 14:03:18
#451287
Colega Nicksoft,

Agradeço e muito teu elogio.

Claro, a intenção sempre foi e será apenas te ajudar e ajudar a quem precisar, com o conhecimento tão ínfimo/pequeno que tenho.

Mas seria falta de gratidão não agradecer teu elogio.

Conta comigo no que precisar.

Espero que nosso colega Sanroman consiga resolver a questão de SQL dele.

Tudo de bom a todos.
NICKOSOFT 11/09/2015 14:08:04
#451290
isso aqui foi super....nem era pra mim, mas já peguei a carona no entendimento....
http://vbmania.com.br/index.php?modulo=forum&metodo=abrir&id=451213&pagina=1
me deu uma luz tao grande pra entender, assim pela simplicidade q veio.....testei até num access q tinha de um colega do fórum q tava ajudando, mas ai como não sabia o q tinha no banco, parti pra um meu mesmo, q funcionou lindamente....e sempre vejo vc mandar umas querys show....
lembro bem qnt fui me aventurar no meu primeiro inner join da vida, foi mais de um dia me debatendo buscando algo simples de entender....hj já faco em 4 tabelas sem problemas, mas a falta de achar algo simples pra entender mesmo é o q mata, se busca na net um inner join já vem aquele exemplo com zilhoes de tabelas, usando os alias de tabelas, coisa q pra quem não tem nem nocao, mata.....
SANROMAN 11/09/2015 14:13:58
#451292
Boa tarde ZEUZEBIO3

Funcionou perfeitamente. Muito Obrigado.

Ficarei atento aos seus posts. Tenho muito o que aprender. O NICKSOFT já me ajudou muito com suas orientações.

Valeu rapaziada. Continuem, sempre, a ajudar o próximo com certeza serão recompensados.

Vou finalizar o tópico.
Tópico encerrado , respostas não são mais permitidas