Jump to content

Recommended Posts

Posted

Boa Tarde,

Estou a fazer um programa que ira gerir um biblioteca,

neste momento estou a faze a inserção de Estantes para o stock, mas estou com um problema, o meu código não esta a conseguir duplicar os dados, será do SQL, será do VB? alguém me pode ajudar?

Live for ever

Posted

Boas,

essa questão é um bocado generica, sem saber qual o código que estás a usar e como está definida a base de dados.

Mas o mais provavel é teres chaves primárias (unica) na base de dados e estás a tentar adicionar registos com a mesma chave.

  • Vote 1
Posted

Boas, estou com o seguinte código:

Public Function InserirIntoBD(ByVal DBMS As BDMSObj, ByVal Commit As Boolean) As Boolean
	Try
		Dim SQL As String
		SQL = "INSERT INTO Estantes Values (@0,@1,@2, null)"
		DBMS.ExecutarSQL(SQL, Me.Estante, Me.Prateleira, Me.Seccao)
		'Salva Alterações
		If Commit Then
			DBMS.Commint()
		End If
		Me.AntigaPrateleira = Me.AntigaPrateleira
		Me.AntigaSeccao = Me.Seccao
		Me.AntigaEstante = Me.Estante
		Return True
	Catch ex As Exception
		DBMS.Rollback()
		Return False
	End Try
End Function
'metodo para ler informações da BD Prateleira
Public Function LerDaBD(ByVal DBMS As BDMSObj, ByVal Estante As String) As Boolean
	Try
		'seleciona o registo
		Dim S As String
		S = DBMS.CriarResultadosSet("SELECT * FROM Estantes WHERE Estante=@0", Estante)
		If DBMS.LerAndNotEOF(S) Then
			'filtrar dados
			Me.Estante = DBMS.MostraValorColuna(S, "Estante")
			Me.Prateleira = DBMS.MostraValorColuna(S, "Prateleira")
			Me.Seccao = DBMS.MostraValorColuna(S, "Seccao")
			'Set antigo=novo
			Me.AntigaPrateleira = Me.Prateleira
			Me.AntigaEstante = Me.Estante
			Me.AntigaSeccao = Me.Seccao
			'fechar os resultados
			DBMS.FechaResultadosSet(S)
			Return True
		Else
			' se nenhum registo for encontrado, fecha os resultados
			DBMS.FechaResultadosSet(S)
			'Rollback=voltar atras
			DBMS.Rollback()
			Return False
		End If
	Catch ex As Exception
		DBMS.Rollback()
		Return False
	End Try
End Function

é quando o utilizador clica no botão ok:

Private Sub BTN_OK_Click(sender As System.Object, e As System.EventArgs) Handles BTN_OK.Click

	If TXT_Estante.Text.Trim = "" Then
		MsgBox("O Campo Estante Não pode ser nulo", MsgBoxStyle.Critical Or MsgBoxStyle.OkOnly, "Erro Externo")
		TXT_Estante.Focus()
		Exit Sub
	End If
	If TXT_Prateleira.Text.Trim = "" Then
		MsgBox("O Campo Prateleira Não pode ser nulo", MsgBoxStyle.Critical Or MsgBoxStyle.OkOnly, "Erro Externo")
		TXT_Prateleira.Focus()
		Exit Sub
	End If
	If TXT_Seccao.Text.Trim = "" Then
		MsgBox("O Campo Secção Não pode ser nulo", MsgBoxStyle.Critical Or MsgBoxStyle.OkOnly, "Erro Externo")
		TXT_Seccao.Focus()
		Exit Sub
	End If
	Dim estanteObjecto As New ClasseEstantes
	estanteObjecto.SetEstante(TXT_Estante.Text.Trim)
	estanteObjecto.SetPrateleira(TXT_Prateleira.Text.Trim)
	estanteObjecto.SetSeccao(TXT_Seccao.Text.Trim)
	If Not estanteObjecto.InserirIntoBD(FRM_Principal.DBMS, True) Then
		MsgBox("Erro na inserção de dados", MsgBoxStyle.Critical Or MsgBoxStyle.OkOnly, "Erro Interno")
	Else
		Me.DialogResult = Windows.Forms.DialogResult.OK
	End If
End Sub

Live for ever

Posted (edited)

erro vai no ultimo if, diz que não é possível inserir dados, caso eu coloco algo repetido

erro vai no ultimo if, diz que não é possível inserir dados, caso eu coloco algo repetido

boas apos verificação, consi perceber atarves da primeira resposta, das chaves única, eu tinha em todas a colunas UNIQUE = NO!

Edited by oliveira1991

Live for ever

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.