AnaGPSI Posted June 8, 2012 at 02:23 PM Report #461422 Posted June 8, 2012 at 02:23 PM 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?
petvetbr Posted June 8, 2012 at 03:09 PM Report #461449 Posted June 8, 2012 at 03:09 PM 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
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