oliveira1991 Posted May 28, 2013 at 04:30 PM Report #509439 Posted May 28, 2013 at 04:30 PM 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
nelsonr Posted May 28, 2013 at 04:35 PM Report #509444 Posted May 28, 2013 at 04:35 PM 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. 1 Report
oliveira1991 Posted May 28, 2013 at 04:40 PM Author Report #509445 Posted May 28, 2013 at 04:40 PM 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
nelsonr Posted May 28, 2013 at 04:44 PM Report #509447 Posted May 28, 2013 at 04:44 PM Em que linha dá o erro e qual a mensagem exacta do erro?
oliveira1991 Posted May 28, 2013 at 04:52 PM Author Report #509451 Posted May 28, 2013 at 04:52 PM (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 May 28, 2013 at 04:49 PM by oliveira1991 Live for ever
nelsonr Posted May 28, 2013 at 04:56 PM Report #509454 Posted May 28, 2013 at 04:56 PM Ainda bem que já resolveste. No entanto, quando reportares algum problema, convém colocares a mensagem de erro tal como dá na aplicação. Ajuda bastante
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