Jump to content

Recommended Posts

Posted

Olá boa tarde tenho uma tabela apreciacao_global com o os campos: id_apreciacao, descr_apreci e id_qualitativa.

O que pretendo é ao clicar num botão guardar ele vai verificar se já existe na BD, se existir envia a msg box a perguntar se deseja alterar, se clicar sim faz o update se clicar não volta a página.

Preciso mesmo de ajuda pois não estou a conseguir fazê-lo:

O código que tenho para o botão é:

	    Const constr As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\GPSI\Documents\mydb.accdb"
	    Dim mydb As New OleDbConnection(constr)
	    mydb.Open()
	    'MsgBox("State: " & mydb.State.ToString(),
	    'MsgBoxStyle.Information)
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'saber id_momento e atribuir variavel
    Dim cod_momento As Integer
    Dim oledbCnn As OleDbConnection
    Dim oledbCmd As OleDbCommand
    Dim sql As String = "Select id_momento from momento where descri_momento='" & TextBox3.Text & "'"
    oledbCnn = New OleDbConnection(constr)
    Try
	    oledbCnn.Open()
	    oledbCmd = New OleDbCommand(sql, oledbCnn)
	    Dim oledbReader As OleDbDataReader = oledbCmd.ExecuteReader()
	    While oledbReader.Read
		    cod_momento = oledbReader.Item(0)
		    'MsgBox(cod_momento)
	    End While
    Finally
    End Try
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'Atribuir variavel a numero de processo
    Dim numeroprocesso As Integer = TextBox2.Text
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'saber id_qualitativa e atribuir variavel

    ' Dim abc As Date = Format(datatime.Value.Date, "dd-MM-yyyy")
    Dim abc As String
    abc = Format(DateTimePicker1.Value, "dd-MM-yyyy") & "%"
    'Format(datatime.Value, "dd-MM-yyyy")
    Dim cod_qualitativa As Integer
    Dim oledbCnn1 As OleDbConnection
    Dim oledbCmd1 As OleDbCommand
    'MsgBox(DateTimePicker1.Value.Date)
    Dim sql1 As String = "Select id_qualitativa from avaliacao_qualitativa where validade like '" & abc & "' and n_processo=" & numeroprocesso & ""
    oledbCnn1 = New OleDbConnection(constr)
    Try
	    oledbCnn1.Open()
	    oledbCmd1 = New OleDbCommand(sql1, oledbCnn1)
	    Dim oledbReader1 As OleDbDataReader = oledbCmd1.ExecuteReader()
	    While oledbReader1.Read
		    cod_qualitativa = oledbReader1.Item(0)
		    'MsgBox(cod_qualitativa)
	    End While
    Finally
    End Try
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Dim oledbCnn2 As OleDbConnection
    Dim oledbCmd2 As OleDbCommand
    Dim abcd As String = "Select id_apreciacao from apreciacao_global where id_qualitativa='" & cod_qualitativa & "'"
    oledbCnn2 = New OleDbConnection(constr)
    Try
	    oledbCnn2.Open()
	    oledbCmd2 = New OleDbCommand(sql1, oledbCnn2)
	    Dim oledbReader2 As OleDbDataReader = oledbCmd2.ExecuteReader()
	    While oledbReader2.Read
		    abcd = oledbReader2.Item(0)
		    'MsgBox(abcd)
	    End While
    Finally
    End Try
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Dim oledbCnn22 As OleDbConnection
    Dim oledbCmd22 As OleDbCommand
    Dim a As Integer = "Select count(*) from apreciacao_global"
    oledbCnn22 = New OleDbConnection(constr)
    Try
	    oledbCnn22.Open()
	    oledbCmd22 = New OleDbCommand(sql1, oledbCnn22)
	    Dim oledbReader22 As OleDbDataReader = oledbCmd22.ExecuteReader(
	    'While oledbReader22.Read
	    '    a = oledbReader22.Item(0)
	    '    'MsgBox(a)
	    'End While
    Finally
    End Try
    'If Then
    '    MsgBox("Existem campos obrigatórios vazios. Preencha os campos em branco!")
    'Else
    Dim sql3 As String = "Insert into apreciacao_global ([descr_apreci], [id_qualitativa]) values ('" & txtapreglobquali.Text & "', '" & cod_qualitativa & "')"
    Dim cmd3 As New OleDbCommand(sql3, mydb)
    cmd3.ExecuteNonQuery()
    MsgBox("Apreciação global introduzida!")

Bloquei completamente neste ponto:

    Dim oledbCnn22 As OleDbConnection
    Dim oledbCmd22 As OleDbCommand
    Dim a As Integer = "Select count(*) from apreciacao_global"
    oledbCnn22 = New OleDbConnection(constr)
    Try
	    oledbCnn22.Open()
	    oledbCmd22 = New OleDbCommand(sql1, oledbCnn22)
	    Dim oledbReader22 As OleDbDataReader = oledbCmd22.ExecuteReader(
	    'While oledbReader22.Read
	    '    a = oledbReader22.Item(0)
	    '    'MsgBox(a)
	    'End While
    Finally
    End Try
    'If Then
    '    MsgBox("Existem campos obrigatórios vazios. Preencha os campos em branco!")
    'Else

Alguém me pode dar uma ajuda?

Posted

Qual seria a chave primária da sua tabela? É a Id_apreciacao?

Se for, o que se faz é simplesmente pegar ela quando ele faz uma pesquisa/edição do registro. Ao gravar, se a Id_apreciacao existir, significa que este é um campo já existente, portanto, deve-se exibir a caixa de mensagem e usar o comando UPDATE do SQL, caso contrário é um novo registro e aí basta usar o Insert.

Exemplo:

1) O usuário vai editar um registro, localizando através de um campo, por exemplo Nome

2) Procuro no banco de dados para ver se existe um registro com aquele nome, se houve pego o ID dele

3) Na hora de gravar, se eu tiver obtido um ID no passo 2, trata-se de um UPDATE, caso contrário, ou seja eu não tiver encontrado um ID no passo 2, eu simplesmente insiro o registro com INSERT.

Fernando Lage Bastos - MCP/MCTS/MCPD

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.