Jump to content

Comparar ID's


kazzx
 Share

Recommended Posts

viva,

ora, admitindo que depois de uma pesquisa aparecem vários nomes iguais e eu quero envia-los todos para uma fila de espera, tem lógica que todos possam ser colocados na fila de espera, e isso consigo fazer.

o que não estou a conseguir fazer é por exemplo, se enviar o "José Manuel Silva" para a fila de espera e logo de seguida enviar O MESMO "José Manuel Silva" para a fila de espera, o programa dar-me um aviso dizendo que aquela pessoa já está na fila de espera.

mas se enviar um "José Manuel Silva" para a fila de espera, e enviar outro "José Manuel Silva" o programa validar essa situação, pois são registos diferentes mas com nomes iguais.

quando as pessoas são registadas, eu criei um campo que é o ID, automático e não pode ser repetido.

eu penso que quando efectuar a pesquisa e a colocação na base de dados, tenha de "jogar" com isso.

o meu problema é não saber, mesmo nada.

aceitam-se ajudas úteis  :smoke:

cumps

Link to comment
Share on other sites

Define "lista de espera".

Se estiveres por exemplo a usar uma List(Of) podias criar uma pequena estructura com o nome e id e outras informações que achares relevantes.

Depois é uma questão de ofereceres um objecto que represente a estructura à lista.

Quando fores validar, basta bater ID's no ciclo.

Public Class Form1

    Private Structure Pessoa
        Public ID As Integer
        Public Nome As String
    End Structure

    Private ListaPessoas As New List(Of Pessoa)

    Private Sub AdicionarPessoa(ByVal ID As Integer, ByVal Nome As String)
        For Each P As Pessoa In ListaPessoas
            If P.ID = ID Then MsgBox("Esse gajo já cá mora") : Exit Sub
        Next

        ListaPessoas.Add(New Pessoa With {.ID = ID, .Nome = Nome})

    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        AdicionarPessoa(0, "Marmelo Andrade")
        AdicionarPessoa(1, "Marmelo Andrade")
        AdicionarPessoa(2, "Joaquim Banana")

        Dim Temp As String = String.Empty

        For Each P As Pessoa In ListaPessoas
            Temp &= String.Format("ID: {0} Nome: {1}", P.ID, P.Nome) & vbCrLf
        Next

        MsgBox(Temp, MsgBoxStyle.Information)
    End Sub

End Class

Repara que o Marmelo Andrade existe duas vezes na lista.

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

confesso que sou um pouco novato em ligações a bases de dados.

eu olhando para o código que mostrou, algumas coisas percebo e sei o que faz, outras não.

eu vou mostrar o código que utilizo quando quero colocar alguém na fila de espera.

 Private Sub btncoloca_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btncoloca.Click

        Try
            Dim conn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Projecto\GerirFilas\DataBase\DadosFila.mdb"
            Dim SQL As String = "INSERT INTO Espera ([Nome]) values (?)"

            Using ConnectionState As New OleDb.OleDbConnection(conn)

                Dim command As New OleDb.OleDbCommand(SQL, ConnectionState)

                command.Parameters.Add("Nome", OleDb.OleDbType.VarChar).Value = lv1.SelectedItems(0).Text

                ConnectionState.Open()
                txtverifica.Clear()
                txtverifica.Focus()
                btncriarregisto.Enabled = False
                btncoloca.Enabled = False

                Dim x As Integer = command.ExecuteNonQuery()

                If x <> 1 Then

                    Throw New ArgumentException("Não foi possível...")

                End If

                MsgBox("Colocado em espera!", MsgBoxStyle.Information)


            End Using

        Catch ex As Exception

            MsgBox("Já se encontra na fila de espera ", MsgBoxStyle.Information)

        End Try

    End Sub 

isto permite inserir vários valores repetidos, por exemplo, várias Marias, mas não me avisa quando repito a inserção da mesma Maria na fila de espera  :nono:

cumps

Link to comment
Share on other sites

Bem, isto nem é pré-validação nem stored procedure.

É alguma coisa estranha no meio das duas 🙂

Como estás a usar Access, não podes usufruír de Stored Procedures por isso sugeria uma validação no client-side antes de procederes a armazenamento de dados.

Ou isso, ou antes de inserires, fazes uma consulta para determinar se o ID relativo ao registo do nome que foi encontrado, é o mesmo que estás a tentar meter.

Existem várias abordagens a este problema.

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

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.