Boa tarde, será que alguém me pode dar uma ajudinha? Estou a desenvolver um FrontOffice de uma frutaria em vb.net e a minha ideia é ao clicar mais do que uma vez no mesmo produto ele em vez de fazer:
banana 1 1€
banana 1 1€
banana 1 1€
faz:
bananas 3 3€
o que eu quero que faça é o que indica o segundo output, e para tal uso o seguinte código:
Código
GeSHi (vbnet):
O que acontece neste código é que ele na primeira linha da datagridview acrescenta-me por até 2 vezes o produto, ou seja se eu clicar 2 vezes em bananas aparece
Bananas 2 2€
e depois se eu quiser acrescentar outro produto 2 vezes, por exemplo morangos, fica:
Bananas 2 2€
Morangos 1 1
Morangos 1 1€
e quando eu clico para adicionar novamente morangos ele dá-me o seguinte erro:
Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index
este erro dá-me se eu tentar introduzir os morangos mais do que uma vez.
se tentar inserir as bananas mais uma vez, ele dá-me o seguinte erro:
Conversion from string "" to type 'Double' is not valid.
ele também não está a somar devidamente os preços...
As bananas e os morangos eram só um exemplo para me explicar melhor, o problema não está nos botões que clico...
Precisava de ajuda urgentemente, isto é para apresentar perante um juri amanhã
se alguém me puder ajudar, agradeço imenso..
banana 1 1€
banana 1 1€
banana 1 1€
faz:
bananas 3 3€
o que eu quero que faça é o que indica o segundo output, e para tal uso o seguinte código:
Código
GeSHi (vbnet):
Código:
Sub ObterPrecoDaDesignacao(ByVal design As String)
Dim preco As String = ""
Dim sql1 As String = "Select PrecoCIva from Produtos Where Designacao = '" & design & "' "
Dim strConn As String = My.Settings.frutariaaConnectionString1
Dim con As New SqlConnection
con.ConnectionString = strConn
con.Open()
Dim cmd As SqlCommand = New SqlCommand
cmd.Connection = con
cmd.CommandType = CommandType.Text
cmd.CommandText = sql1
Dim rdr As SqlDataReader
rdr = cmd.ExecuteReader
While (rdr.Read())
preco = CStr(rdr.GetValue(0))
End While
rdr.Close()
con.Close()
' Create an unbound DataGridView by declaring a column count.
DataGridView1.ColumnCount = 3
DataGridView1.ColumnHeadersVisible = True
' Set the column header names.
DataGridView1.Columns(0).Name = "Designação"
DataGridView1.Columns(1).Name = "Quant"
DataGridView1.Columns(2).Name = "Preço"
' Populate the rows.
Dim row1() As String = {design, "1", preco}
Dim rows() As Object = {row1}
Dim rowArray As String()
Dim encontrou As Boolean = False
Dim i As Integer = 0
Dim soma As Integer = 0
For Each rowArray In rows
'For Each col As DataGridViewRow In DataGridView1.Rows
If DataGridView1.RowCount > 0 Then
For i = 0 To DataGridView1.RowCount - 1
If rowArray(0) = DataGridView1.SelectedRows.Item(i).Cells(0).Value Then
DataGridView1.SelectedRows.Item(i).Cells(1).Value += 1
If (DataGridView1.SelectedRows.Item(i).Cells(2).Value <> "" And rowArray(1) <> "") Then
soma = CInt(DataGridView1.SelectedRows.Item(i).Cells(2).Value) + CInt(rowArray(1))
DataGridView1.SelectedRows.Item(i).Cells(2).Value = soma
End If
encontrou = True
Else
encontrou = False
End If
Next i
End If
If Not (encontrou) Then
DataGridView1.Rows.Add(rowArray)
DataGridView1.Refresh()
End If
Next rowArray
O que acontece neste código é que ele na primeira linha da datagridview acrescenta-me por até 2 vezes o produto, ou seja se eu clicar 2 vezes em bananas aparece
Bananas 2 2€
e depois se eu quiser acrescentar outro produto 2 vezes, por exemplo morangos, fica:
Bananas 2 2€
Morangos 1 1
Morangos 1 1€
e quando eu clico para adicionar novamente morangos ele dá-me o seguinte erro:
Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index
este erro dá-me se eu tentar introduzir os morangos mais do que uma vez.
se tentar inserir as bananas mais uma vez, ele dá-me o seguinte erro:
Conversion from string "" to type 'Double' is not valid.
ele também não está a somar devidamente os preços...
As bananas e os morangos eram só um exemplo para me explicar melhor, o problema não está nos botões que clico...
Precisava de ajuda urgentemente, isto é para apresentar perante um juri amanhã
se alguém me puder ajudar, agradeço imenso..
Última edição pelo moderador: