Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
duduml

erro ao verificar dados (Npgsql) [Resolvido]

Recommended Posts

duduml

Bom dia!!

cá estou eu de novo...é o seguinte...

eu tenho este código que em baixo mostro para inserir registos numa tabela, contudo, para inserir esse registo...já tem de haver um codigo de peça registado na tabela anterior...e quando faço essa verificação, se a peça estiver registada, dá-me erro e não insere os dados!!!

código:

Imports Npgsql
Public Class Inserir_artigo
    Private peca As Long
    Private quantidade As String
    Dim con_str As String = ("Server=localhost;Port=5432;User Id=postgres;Password=postgres;Database=registos;")
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        div() ' <--- procedimento que separa os dados da referencia
        Dim conn As New NpgsqlConnection(con_str)
        Dim strSql As String = String.Empty
        Dim strSql1 As String = String.Empty
        Dim strSql2 As String = String.Empty

        '=================== Criar e guardar os dados nas vars ========================================
        Dim strref As String = refTextBox1.Text
        Dim intpeca As Long = peca
        Dim intquantidade As Integer = Integer.Parse(quantidade)
        Dim dtdata As Date = Now
        '================= Estabelecer ligação com a Base de Dados ====================================
        Try
            conn.Open()
        Catch ex As Exception
            MsgBox("Erro de ligação com a base de dados." & vbCrLf & ex.Message & vbCrLf & ex.ToString, MsgBoxStyle.Critical, "ErrID: #001")
            Exit Sub
        End Try
        '============== verificar se o produtoo já existe ================================

        strSql1 = "SELECT codigopeca FROM registos WHERE codigopeca = '" & intpeca & "'"

        Dim commandSQL1 As New NpgsqlCommand(strSql1, conn)
        Dim reader As Npgsql.NpgsqlDataReader
        Try
            reader = commandSQL1.ExecuteReader()
        Catch ex As Exception
            MsgBox("Erro ao executar um comando na base de dados." & vbCrLf & ex.Message & vbCrLf & ex.ToString, MsgBoxStyle.Critical, "ErrID: #004")
            limpar_dados()
            Exit Sub
        End Try
        If reader.HasRows = False Then
            MsgBox("Este produto ainda não está registado!", MsgBoxStyle.Exclamation, "Alerta")
            limpar_dados()
            Dim resultado As MsgBoxResult
            resultado = MsgBox("Deseja regista-lo agora?", vbYesNo, "operação")
            If resultado = vbYes Then
                Dim found As Boolean = False
                For Each openForm As Form In Application.OpenForms
                    If TypeOf openForm Is inserir_pordut Then
                        openForm.Focus()
                        found = True
                    End If
                Next
                If Not found Then
                    Dim form As New inserir_pordut
                    form.MdiParent = MDIParent1
                    form.Show()
                End If
            End If
            Exit Sub
        End If
        '============== verificar se a referência já existe ================================

        strSql2 = "SELECT referencia FROM produtos WHERE referencia = '" & refTextBox1.Text & "'"

        Dim commandSQL2 As New NpgsqlCommand(strSql2, conn)
        Dim ler As Npgsql.NpgsqlDataReader
        Try
            ler = commandSQL2.ExecuteReader()
        Catch ex As Exception
            MsgBox("Erro ao executar um comando na base de dados." & vbCrLf & ex.Message & vbCrLf & ex.ToString, MsgBoxStyle.Critical, "ErrID: #004")
            limpar_dados()
            Exit Sub
        End Try
        If ler.HasRows = True Then
            MsgBox("Este produto já se encontra registado!", MsgBoxStyle.Exclamation, "Alerta")
            limpar_dados()
            Exit Sub
        End If
        commandSQL2.Dispose()
        '========================== inserir dados na BD ===============================================
        strSql = "INSERT INTO produtos (referencia,codigopeca,data,quantidade) VALUES ('" & strref & "','" & intpeca & "','" & dtdata & "','" & intquantidade & "')"
        Dim commandSQL As New NpgsqlCommand(strSql, conn)
        commandSQL.ExecuteNonQuery()
        commandSQL.Dispose()
        conn.Close()
        conn.Dispose()
        limpar_dados()

Alguém tem sugestões??? já perdi a manhã a tentar corrigir isso...;) bolas... :angry1:

CUMPS


"use windows, você merece!"

Share this post


Link to post
Share on other sites
duduml

tive de criar uma função a parte com esse código...  ;)

cumps


"use windows, você merece!"

Share this post


Link to post
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
Sign in to follow this  

×

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.