Array
(
)

Carrinho de Compras

Sid.sil
   - 29 out 2008

Ola Novamente

Dessa vez eu estou desenvolvendo uma rotina similar a de um carrinho de compras que felizmente esta funcionando bem.

Eu seleciono um campo no DropDown que sera o campo ID para o carrinho.Eu estou usando DataSet/DataTable para incluir os dados no carrinho e grava-los de uma so vez ao final.

Acontece que alem desse campo ID do combo eu tenho tambem um campo codigo associado.

Ex : Eu tenho o codigo 1 e o ID= 1

Codigo 1 e ID= 2

Codigo 3 e ID=3

Nas rotinas usando essa rotina similar ao carrinho de compras que usei ate hoje, nunca surgiu a situacao em que eu tinha que incluir o mesmo ID 2 vezes e mesmo que surgisse bastaria eu verificar a quantidade anterior e apenas somar a nova quantidade fornecida.

Porem neste caso eu terei que incluir no carrinho o mesmo ID ´N´ vezes, porem sempre com o campo codigo diferente do anterior.

Como eu faco isso?

Abaixo a rotina que estou usando :

´obtem a tabela do dataset e atribui ao datable local

Dim dt As DataTable = ObterDocumentos().Tables(0)

´localiza o codigo do produto na tabela

Dim row As DataRow = dt.Rows.Find(Convert.ToDouble(CboFormato.SelectedItem.Value))

If row Is Nothing Then

´se nao achou cria uma nova linha

row = dt.NewRow()

row(´itemID´) = Convert.ToDouble(CboFormato.SelectedItem.Value)

row(´REL_DOCUMENTO´) = TxtDocumento.Text.Trim

row(´FORMATO_ID´) = Convert.ToDouble(CboFormato.SelectedItem.Value)

row(´FORMATO_NOME´) = CboFormato.SelectedItem.Text.Trim

row(´REL_PREVINI´) = CDate(TxtInicioPrevisto.Text)

row(´REL_PREVFIM´) = CDate(TxtTerminoPrevisto.Text)

row(´ESPEC_ID´) = CboEspecialidade.SelectedItem.Value

row(´ESPEC_NOME´) = CboEspecialidade.SelectedItem.Text.Trim

row(´REL_HORASPREVISTAS´) = Convert.ToDouble(TxtHorasPrevistas.Text.Trim)

row(´COLABOR_ID´) = CboColaborador.SelectedItem.Value

row(´USER_NOME´) = CboColaborador.SelectedItem.Text.Trim

´inclui a linha no datable

dt.Rows.Add(row)

Else

´se a linha ja existir então apenas altera a quantidade

´Dim qtd As Integer = Convert.ToInt32(row(´Quantidade´))

´qtd = qtd + quantidade

´row(´Quantidade´) = qtd

End If

Catch ex As Exception

lblMensagem.Text = ´Ocorreu um Erro Inesperado : ´ & vbCrLf & ex.Message & vbCrLf ´ & ex.InnerException.ToString

Finally

conexao.Close()

End Try

Eu quero incluir um produto digamos no carrinho de compras, tendo como base o ID e um codigo de servico.

O meu problema esta basicamente na linha abaixo :

Dim row As DataRow = dt.Rows.Find(Convert.ToDouble(CboFormato.SelectedItem.Value))

O Row nao aceita valores tipo String e eu preciso verificar se a linha digitada ja existe baseado no ID (CboFormato.SelectedItem.Value) e em um codigo (Que nao e o do produto)

E agora? Deu para entender ?

Muito Obrigado