ViraFrangos Posted June 11, 2013 at 06:12 PM Report #512108 Posted June 11, 2013 at 06:12 PM 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.
bioshock Posted June 12, 2013 at 08:51 AM Report #512208 Posted June 12, 2013 at 08:51 AM 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
ViraFrangos Posted June 12, 2013 at 09:13 AM Author Report #512220 Posted June 12, 2013 at 09:13 AM 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.
bioshock Posted June 12, 2013 at 09:33 AM Report #512229 Posted June 12, 2013 at 09:33 AM 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?
ViraFrangos Posted June 12, 2013 at 09:50 AM Author Report #512238 Posted June 12, 2013 at 09:50 AM 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.
bioshock Posted June 12, 2013 at 09:58 AM Report #512244 Posted June 12, 2013 at 09:58 AM 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 (?).
ViraFrangos Posted June 12, 2013 at 10:14 AM Author Report #512250 Posted June 12, 2013 at 10:14 AM 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.
bioshock Posted June 12, 2013 at 10:23 AM Report #512253 Posted June 12, 2013 at 10:23 AM 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.
ViraFrangos Posted June 12, 2013 at 10:30 AM Author Report #512256 Posted June 12, 2013 at 10:30 AM 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.
bioshock Posted June 12, 2013 at 10:39 AM Report #512265 Posted June 12, 2013 at 10:39 AM (...) ele subtrai só diante do 1º valor Que valor? Explica-te.
ViraFrangos Posted June 12, 2013 at 11:00 AM Author Report #512276 Posted June 12, 2013 at 11:00 AM 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?
bioshock Posted June 12, 2013 at 11:11 AM Report #512281 Posted June 12, 2013 at 11:11 AM 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 https://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
ViraFrangos Posted June 12, 2013 at 11:29 AM Author Report #512295 Posted June 12, 2013 at 11:29 AM 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.
bioshock Posted June 12, 2013 at 11:33 AM Report #512298 Posted June 12, 2013 at 11:33 AM (edited) 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 June 12, 2013 at 11:34 AM by bioshock
ViraFrangos Posted June 12, 2013 at 11:39 AM Author Report #512303 Posted June 12, 2013 at 11:39 AM 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.
bioshock Posted June 12, 2013 at 11:48 AM Report #512306 Posted June 12, 2013 at 11:48 AM O problema está em seleccionares os dados correctamente. Manda-me o projecto, que eu resolvo-te isso rapidamente.
ViraFrangos Posted June 12, 2013 at 01:28 PM Author Report #512330 Posted June 12, 2013 at 01:28 PM boa tarde bio, fui almoçar e deixei a fazer o upload, ta ai. http://www.mediafire.com/?ukgwkwmeww5wjlq
bioshock Posted June 12, 2013 at 02:34 PM Report #512344 Posted June 12, 2013 at 02:34 PM (edited) 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 Edited June 12, 2013 at 02:44 PM by bioshock
ViraFrangos Posted June 12, 2013 at 03:37 PM Author Report #512387 Posted June 12, 2013 at 03:37 PM 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.
bioshock Posted June 12, 2013 at 03:45 PM Report #512399 Posted June 12, 2013 at 03:45 PM 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?
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now