Jump to content

Função para verificar se um valor já existe na BD


jobrufali
 Share

Recommended Posts

Estou a fazer um programa para a empresa e pretendia uma função que verificasse se o valor que se está a inserir ja existe na base de dados...

o codigo que tenho actualmente e este mas nao funciona:

Dim strSQL As String = "SELECT nome_documento FROM empresa WHERE nome_documento = " & nome_doc.Text

	Dim conn As New OleDb.OleDbConnection()

conn.ConnectionString= " Provider=Microsoft.Jet.OLEDB.4.0;" & _
	                        " Data Source=C:\BaraScript\cei.mdb;"
	 Dim cmd As OleDb.OleDbCommand = conn.CreateCommand
	 cmd.Connection = conn

cmd.CommandText ="Insert into empresa (nome_documento, nome_ficheiro, url) values('"& nome_doc.Text & "','"& nome_fich.Text & "', '" & link.Text &"')"
     
     
   
     
     
     Try
	 	conn.open()
	 	'DR = Cmd.ExecuteReader

	 	  If (strSQL = nome_doc.Text) Then
                    MsgBox.show("Esse nome ja existe")

	 		else
	 	cmd.ExecuteNonQuery()
	 	messagebox.Show("registo inserido com sucesso)
	 	end if
	 	conn.Close()

	 Catch erro As Exception
	 	messagebox.Show("Erro" & vbCrlf & erro.tostring)
	 End Try
Link to comment
Share on other sites

Não testei mas experimenta assim:

                 Try
                        conn.open()
                        DR = Cmd.ExecuteReader
                       
                          If (DR("nome_documento").tostring = nome_doc.Text) Then
                                 MsgBox.show("Esse nome ja existe")
                       
                           else
                                 cmd.ExecuteNonQuery()
                                 messagebox.Show("registo inserido com sucesso")
                           end if
                           conn.Close()
       
                 Catch erro As Exception
                        messagebox.Show("Erro" & vbCrlf & erro.tostring)
                 End Try

Assim recolhes o valor que te retorna a query e comparas com a tua textbox nome_doc

Vê se ja ficou a funcionar

Link to comment
Share on other sites

esta-me a dar um erro por causa do if. Esta a dizer:

erro

System.indexOutOfRangeException: nome_documento

at System.data.oledb.oledbdatareader.getordinal(string name)

at System.data.oledb.oledbdatareader.get_item(string name)

nao faço ideia do que ta a faltar aqui.....

:S

Link to comment
Share on other sites

Penso que será por não ter feito o read ao DR..

Tenta assim:

Try
                        conn.open()
                        DR = Cmd.ExecuteReader
                       while DR.read
                           If (DR("nome_documento").tostring = nome_doc.Text) Then
                                 MsgBox.show("Esse nome ja existe")
                       
                           else
                                 cmd.ExecuteNonQuery()
                                 messagebox.Show("registo inserido com sucesso")
                           end if
                       end while 
                        
                           conn.Close()
       
                 Catch erro As Exception
                        messagebox.Show("Erro" & vbCrlf & erro.tostring)
End Try
Link to comment
Share on other sites

Que filme que para aí vai..

Basta algo semelhante:

Try
            ' Connexão com a Base de dados;
            Dim myConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & My.Application.Info.DirectoryPath & "\BD.mdb';Persist Security Info=True;"
            ' Criação da query para seleccionar os dados provenientes das tabelas;
            Dim query As String = "SELECT dado1 FROM tabela WHERE [dado1] = @dado1"
            ' Cria a connexão;
            Dim connection As New OleDbConnection(myConnectionString)
            ' Define os parametros a serem mostrados;
            Dim command As New OleDbCommand(query, connection)
            command.Parameters.Add("@dado1", OleDbType.VarChar).Value = TextBox1.Text
            ' Abre a connexão;
            connection.Open()

            ' Caso obtenha um número, então:
            If command.ExecuteScalar > 0 Then
                ' Fazes o UPDATE
            Else
                ' Fazes o INSERT
            End If
            ' Fecha a connexão e limpa as variáveis;
            connection.Close()
            connection = Nothing
            command = Nothing
        Catch ex As Exception
            MessageBox.Show(ex.ToString)
        End Try

Nota: O código é para a base de dados access, troca o que achares necessário.

Link to comment
Share on other sites

Também é valido... 👍

Mas pegando no código dele, eu faria assim....

Dim strSQL As String = "SELECT nome_documento FROM empresa WHERE nome_documento = " &  nome_doc.Text
Dim conn As New OleDb.OleDbConnection()

conn.ConnectionString= " Provider=Microsoft.Jet.OLEDB.4.0;" & _
                                        " Data Source=C:\BaraScript\cei.mdb;"
                 Dim cmd As OleDb.OleDbCommand = conn.CreateCommand
                 cmd.Connection = conn
             Try
                        conn.open()
                        DR = Cmd.ExecuteReader
                       
                          If DR.hasrows = True Then
                    MsgBox.show("Esse nome ja existe")
                       
                                else
   cmd.CommandText ="Insert into empresa (nome_documento, nome_ficheiro, url) values('"& nome_doc.Text & "','"& nome_fich.Text & "', '" & link.Text &"')"
                        cmd.ExecuteNonQuery()
                        messagebox.Show("registo inserido com sucesso")
                        end if
                        conn.Close()
       
                 Catch erro As Exception
                        messagebox.Show("Erro" & vbCrlf & erro.tostring)
                 End Try
    

algo assim....não testei! mas se pusesses aqui o código todo, era melhor!

CUMPS

"use windows, você merece!"

Link to comment
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
 Share

×
×
  • 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.