Jump to content

[Resolvido] Problema com a inserção


vascoc

Recommended Posts

Boas, eu tenho um programa que insere produtos, clientes e regista as vendas, mas agora tenho um problema que agora sempre que insiro uma nova venda a quantidade que vendo não desconta na quantidade do produto em stock, eis o código:

Valores na database

http://img259.imageshack.us/img259/3192/dfedfdf.png

Imaginamos que insiro 6 na quantidade, devia de retirar esse valor depois na base de dados e ficar 14.

sql2 = "select Quantidade from Produtos where CodProduto = " & CodProdutoComboBox.Text.Split("|")(0).Trim
	procura_produto()
	Dim b As Integer
	Dim f As Integer = ds.Tables("consulta").Rows(0).Item(3)
	If f < QuantidadeTextBox.Text Then
		MsgBox("Quantidade superior à existente em stock")
	Else
		a = MessageBox.Show("Tem a certeza que pertende inserir o registo selecionado?", "Inserir", MessageBoxButtons.OKCancel)
		If a = MsgBoxResult.Ok Then
			Try
				con = New SqlCeConnection(My.Settings.InformáticaConnectionString)
				cmd = New SqlCeCommand("Select * from Vendas order by CodVenda", con)
				da = New SqlCeDataAdapter(cmd)
				ds = New DataSet()
				With con
					If .State = ConnectionState.Open Then 'ta aberto
						.Close() ' fechamos
					End If
					.Open() ' abrimos a conexao
				End With
				da.Fill(ds, "consulta")
				cb = New SqlCeCommandBuilder(da)
			Catch ex As Exception
				MessageBox.Show(ex.Message, "informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Error)
			End Try
			tr = ds.Tables("consulta").Rows.Count
			Dim dsnewrow As DataRow
			dsnewrow = ds.Tables("consulta").NewRow()
			dsnewrow.Item("CodVenda") = CodVendaTextBox.Text
			dsnewrow.Item("CodCliente") = CodClienteComboBox.Text.Split("|")(0).Trim
			dsnewrow.Item("CodProduto") = CodProdutoComboBox.Text.Split("|")(0).Trim
			dsnewrow.Item("DataVenda") = DataVendaDateTimePicker.Text
			dsnewrow.Item("Quantidade") = QuantidadeTextBox.Text
			dsnewrow.Item("Preco") = PrecototTextBox.Text
			ds.Tables("consulta").Rows.Add(dsnewrow)
			da.Update(ds, "consulta")


' O PROBLEMA ESTÁ AQUI, estou a fazer isto mal

			b = f - QuantidadeTextBox.Text
			cmd = New SqlCeCommand("Update Produtos SET Quantidade WHERE Quantidade  '" & b & "'", con)
			cmd.Parameters.Add(New SqlServerCe.SqlCeParameter("Quantidade", SqlDbType.NVarChar)).Value = f - QuantidadeTextBox.Text()



 MessageBox.Show("Registo inserido com sucesso.", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
			con.Close()
			' Vendas.Show()
		End If
	End If
	Me.Close()
End Sub
Edited by Caça
GeSHi
Link to comment
Share on other sites

Assim ?

  Private Sub cmdgravar_Click(sender As System.Object, e As System.EventArgs) Handles cmdgravar.Click
	sql2 = "select Quantidade from Produtos where CodProduto = " & CodProdutoComboBox.Text.Split("|")(0).Trim
	procura_produto()
	Dim b As Integer
	Dim f As Integer = ds.Tables("consulta").Rows(0).Item(3)
	If f < QuantidadeTextBox.Text Then
		MsgBox("Quantidade superior à existente em stock")
	Else
		a = MessageBox.Show("Tem a certeza que pertende inserir o registo selecionado?", "Inserir", MessageBoxButtons.OKCancel)
		If a = MsgBoxResult.Ok Then
			Try
				con = New SqlCeConnection(My.Settings.InformáticaConnectionString)
				cmd = New SqlCeCommand("Select * from Vendas order by CodVenda", con)
				da = New SqlCeDataAdapter(cmd)
				ds = New DataSet()
				With con
					If .State = ConnectionState.Open Then 'ta aberto
						.Close() ' fechamos
					End If
					.Open() ' abrimos a conexao
				End With
				da.Fill(ds, "consulta")
				cb = New SqlCeCommandBuilder(da)
			Catch ex As Exception
				MessageBox.Show(ex.Message, "informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Error)
			End Try
			tr = ds.Tables("consulta").Rows.Count
			Dim dsnewrow As DataRow
			dsnewrow = ds.Tables("consulta").NewRow()
			dsnewrow.Item("CodVenda") = CodVendaTextBox.Text
			dsnewrow.Item("CodCliente") = CodClienteComboBox.Text.Split("|")(0).Trim
			dsnewrow.Item("CodProduto") = CodProdutoComboBox.Text.Split("|")(0).Trim
			dsnewrow.Item("DataVenda") = DataVendaDateTimePicker.Text
			dsnewrow.Item("Quantidade") = QuantidadeTextBox.Text
			dsnewrow.Item("Preco") = PrecototTextBox.Text
			ds.Tables("consulta").Rows.Add(dsnewrow)
			da.Update(ds, "consulta")


'Aqui

			b = f - QuantidadeTextBox.Text
			cmd = New SqlCeCommand("UPDATE Produtos SET Quantidade = Quantidade - '" & QuantidadeTextBox.Text & "' WHERE CodProduto = '" & CodProdutoComboBox.Text.Split("|")(0).Trim & "'", conn)
			MessageBox.Show("Registo inserido com sucesso.", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
			con.Close()
			' Vendas.Show()

		End If
	End If
	Me.Close()
End Sub

Public Sub procura_produto()
	conn = New SqlCeConnection(My.Settings.InformáticaConnectionString)
	cmd = New SqlCeCommand(sql2, conn)
	da = New SqlCeDataAdapter(cmd)
	ds = New DataSet()
	With conn
		If .State = ConnectionState.Open Then
			.Close()
		End If
		.Open()
	End With
	da.Fill(ds, "consulta")
	totalprod = ds.Tables("consulta").Rows.Count
End Sub
Edited by Caça
GeSHi
Link to comment
Share on other sites

A questão é que tenho assim..e continua sem dar.

Imagem e código em baixo.

http://img854.imageshack.us/img854/5742/sssssrn.png

 Private Sub cmdgravar_Click(sender As System.Object, e As System.EventArgs) Handles cmdgravar.Click
	sql2 = "select Quantidade from Produtos where CodProduto = " & CodProdutoComboBox.Text.Split("|")(0).Trim
	procura_produto()
	Dim b As Integer
	Dim f As Integer = ds.Tables("consulta").Rows(0).Item(3)
	If f < QuantidadeTextBox.Text Then
		MsgBox("Quantidade superior à existente em stock")
	Else
		a = MessageBox.Show("Tem a certeza que pertende inserir o registo selecionado?", "Inserir", MessageBoxButtons.OKCancel)
		If a = MsgBoxResult.Ok Then
			Try
				con = New SqlCeConnection(My.Settings.InformáticaConnectionString)
				cmd = New SqlCeCommand("Select * from Vendas order by CodVenda", con)
				da = New SqlCeDataAdapter(cmd)
				ds = New DataSet()
				With con
					If .State = ConnectionState.Open Then 'ta aberto
						.Close() ' fechamos
					End If
					.Open() ' abrimos a conexao
				End With
				da.Fill(ds, "consulta")
				cb = New SqlCeCommandBuilder(da)
			Catch ex As Exception
				MessageBox.Show(ex.Message, "informação do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Error)
			End Try
			tr = ds.Tables("consulta").Rows.Count
			Dim dsnewrow As DataRow
			dsnewrow = ds.Tables("consulta").NewRow()
			dsnewrow.Item("CodVenda") = CodVendaTextBox.Text
			dsnewrow.Item("CodCliente") = CodClienteComboBox.Text.Split("|")(0).Trim
			dsnewrow.Item("CodProduto") = CodProdutoComboBox.Text.Split("|")(0).Trim
			dsnewrow.Item("DataVenda") = DataVendaDateTimePicker.Text
			dsnewrow.Item("Quantidade") = QuantidadeTextBox.Text
			dsnewrow.Item("Preco") = PrecototTextBox.Text
			ds.Tables("consulta").Rows.Add(dsnewrow)
			da.Update(ds, "consulta")

			b = f - QuantidadeTextBox.Text
			cmd = New SqlCeCommand("UPDATE Produtos SET Quantidade = Quantidade - " & QuantidadeTextBox.Text & " WHERE CodProduto = " & CodProdutoComboBox.Text.Split("|")(0).Trim & "", conn)
			'  quantidade_asda()
			MessageBox.Show("Registo inserido com sucesso.", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
			con.Close()
			' Vendas.Show()
		End If
	End If
	Me.Close()
End Sub
Edited by Caça
Link to comment
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.