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

kazzx

Comparar ID's

4 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora