Jump to content
ViraFrangos

Retirar produtos da tabela e actualizar

Recommended Posts

ViraFrangos

boa tarde gente, surgiu me outra duvida, agora em relaçao a retirar produtos e actualizar.

tentar explicar, eu tenho 1 tabela com 5 produtos, cada produto tem 1 x de quantidade, a coisa, é que ele so me assume o 1º valor do 1º produto, por exemplo, se for 4monitores, ele assume 4monitores mesmo que sejam ratos, vou deixar o codigo que tenho até ao momento funcional.

http://imageshack.us/f/607/semttuloarn.png/

http://imageshack.us/f/18/87663041.png/

Cumprimentos.

Share this post


Link to post
Share on other sites
bioshock

http://imageshack.us/f/18/87663041.png/

Nessa imagem, o que está errado são os parâmetros. Tens dois parâmetros idênticos e não podes.

Update ReporProd SET [tproduto] = @tproduto, [preco] = @preco, [quantidade] = @quantidade WHERE [tproduto] = @tproduto_x2

Share this post


Link to post
Share on other sites
ViraFrangos

bom dia outra vez,, bio

UPDATE ReporProd SET [tproduto] = @tproduto, [preco] = @preco, [quantidade] = @quantidade WHERE [tproduto] = @tproduto_x2, disto retirei o parametro repetido e deixei, str = "UPDATE ReporProd SET [Preco] = @Preco, [Quantidade] = @Quantidade WHERE TProduto = '@TProduto'".

mas a minha dificuldade persiste, ele assume sempre o 1º valor.

Share this post


Link to post
Share on other sites
bioshock

Porque é que estás a colocar películas no @TProduto? É desnecessário. De resto, se estou a compreender, quando fazes o update de um produto em específico ele actualiza-te todos os outros produtos?

Share this post


Link to post
Share on other sites
ViraFrangos

nao, ele actualiza o unico que quero, tipo, tiro 1 rato, ele tira um rato, seguindo +- assim

prod quantidade

ratos 5

monitores 10

teclados 3

o erro que ele está a complicar é, que quando eu tiro por exemplo 2 monitores, ele insere com sucesso, em vez de actualizar em 8 apos a venda, ele actualiza , resumindo só toma o valor do 1º campo.

Share this post


Link to post
Share on other sites
bioshock

Se o teu objectivo é actualizar assim que subtrais a quantidade, não vejo onde está a dificuldade. Talvez, no teu código, onde tens o parâmetro @Quantidade, que se recebe o valor de QuantidadeTextbox.Text, deveria ser:

command.Parameters.Add("@Quantidade", OleDbType.VarChar).Value = quantidade

Isto porque no topo do teu código tens lá uma variável que recebe o valor da quantidade (?).

Share this post


Link to post
Share on other sites
ViraFrangos

Para eu escolher os produtos e o preço, tenho 2 combos, alterei como tu sugeriste, mas nao resultou, ele so' toma o 1º valor do 1º item da combo, mesmo que escolha o 3º item da combo.

Share this post


Link to post
Share on other sites
bioshock

Ah, então o problema está na combo?

Antes de fazeres ExecuteNonQuery() na actualização, escreve:

MsgBox(Combobox1.Text)

E vê se ele retorna o que pretendes.

Share this post


Link to post
Share on other sites
ViraFrangos

testei como tu disseste, ele faz o que eu qero, apanha-me os campos normalmente, só que quando ele vai actualizar na tabela, ele subtrai só diante do 1º valor, em vez de subtrair diante da quantidade que no0s escolhemos.

Share this post


Link to post
Share on other sites
ViraFrangos

era isso que eu a tentar explicar desde o inicio e pelos vistos nao me consegui explicar completamente, isto é o genero da minha tabela

prod quantidade

ratos 5

monitores 10

teclados 3

eu no form venda, tenho os campos de venda , nome cliente telefone contribuinte, tipo pagamento, etc, dps tenho 2 combos, onde escolho o produto e o preço, eu tenho a tabela com aqelas quantidades, o que eu preciso é qe quando faça a venda ele me subtraia os valores, no meu caso, se eu fior vender ratos, ele faz tudo corretamente, faz a conta como deve de ser e actualiza na table, mas se eu for por exemplo comprar monitores, ele na quantidade vai me tomar o 1º valor, neste caso ratos, do genero de eu escolher 4 monitores ele ao actualizar vai me subtrair diante do 1º valor, neste caso em vez de actualizar na table para 6, ele vai actualizar para 5, parece que só ve o 1º valor para todos os outros campos.

consegui explicar?

Share this post


Link to post
Share on other sites
bioshock

Agora sim. Portanto, quando tu dizes: "Eu tenho a tabela com aquelas quantidades", presumo que tenhas esses valores num controlo qualquer (DataGridView, ListView, etc)?

Se não tens, o que tens de fazer primeiro é seleccionar a quantidade actual do produto seleccionado na Combobox. Porque só podes subtrair se a quantidade for maior ou igual à quantidade desejada pelo utilizador.

Após seleccionares a quantidade, remetes-a para uma variável.

Dim quantidade_actual As Integer = dR(0).ToString() ' <- Neste exemplo vais buscar os dados via DataReader

http://wiki.portugal-a-programar.pt/dev_net:vb.net:poptextbox

Depois verificas se é possível subtrair:

if(quantidade_actual >= quantidade_desejadaTextBox.Text) Then

Dim query As String = "UPDATE Tabela SET [quantidade] = @quantidade WHERE produto = @produto"
Dim command As New OleDbCommand(query, connection)

command.Parameters.Add("@quantidade", SqlDbType.VarChar).Value = quantidade_desejadaTextBox.Text
command.Parameters.Add("@produto", SqlDbType.VarChar).Value = produtoCombobox.Text

command.ExecuteNonQuery()
End If

Share this post


Link to post
Share on other sites
ViraFrangos

obrigado pelo teu tempo bio, desculpa perguntar, mas faz me 1 favor, depois do que eu te expliqei, dis-me o que entendeste do meu problema.

Share this post


Link to post
Share on other sites
bioshock

O teu objectivo é permitir ao utilizador adquirir produtos, mas para isso tens de verificar se tens stock. Caso tenhas, terás de actualizar a quantidade actual de stock, subtraindo a mesma quantidade pela requerida pelo utilizador.

Edited by bioshock

Share this post


Link to post
Share on other sites
ViraFrangos

Exato bio, mas o programa faz me iso, tudo correcto, verifica se tem stock, caso n tenha, dá erro, caso ele tenha ele venda, e subtrai, só que isso só corre se for no 1º campo da grid(neste caso consulta).

prod quantidade

ratos 5

monitores 10

teclados 3

se eu qiser vender 4 ratos, ele checka se á stock, caso tenha ele subtrai corretamente, só que iso só ocorre se for a primeira linha da grid, como ta sublinhado, se eu qiser vender monitores ele em vez de subtrair o qe tem em stock(10) , automaticamente faz me a soma diante das 5 unidades da 1º linha.

Share this post


Link to post
Share on other sites
bioshock

O problema está em seleccionares os dados correctamente. Manda-me o projecto, que eu resolvo-te isso rapidamente.

Share this post


Link to post
Share on other sites
bioshock

Impossível alguém perceber o que para aí vai rapaz. Tens tantos erros..és novo na linguagem? É que até custa olhar. Vou-te dar uma ajuda maior, o problema é que esta ajuda vai em solução Visual Studio 2012..

https://www.dropbox.com/s/e7k7k3eg8kkjyjo/pegaLa.7z

O que podes fazer, se quiseres, é abrir o ficheiro Form1.vb no Notepad (por exemplo), e copias o código e substituis por um projecto novo que deves criar.

Os controlos que constituem este form são poucos:

2 Combobox

2 Textbox

2 Buttons

1 DataGridView

Sem_T_tulo.png

Edited by bioshock

Share this post


Link to post
Share on other sites
ViraFrangos

boa tarde bio, obrigado pelo tempo disponibilizado, tive a seguir o teu conselho, sendo, apliqei +- diante das minhas coisas, deu-me este erro

If (ReporProdDataGridView.Rows(i).Cells(1).Value = ComboBox2.Text) Then -----> Conversion from string "Processador Zyn" to type 'Double' is not valid.

Share this post


Link to post
Share on other sites
bioshock

Pois não convém fazer isso. As conversões tem de ser feitas. Mas antes de cá vires perguntar, deves dar uma olhadela no google. Perdes menos tempo.

Se vais comparar strings, deves antes fazer:

ReporProdDataGridView.Rows(i).Cells(1).Value.ToString() = ComboBox2.Text

No entanto, o teu problema pode ser outro. O que é que tens na Combobox2 e o que é que tens nessa célula em específico?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.