kazzx Posted December 4, 2009 at 08:30 PM Report Share #298729 Posted December 4, 2009 at 08:30 PM 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 More sharing options...
ribeiro55 Posted December 4, 2009 at 08:33 PM Report Share #298730 Posted December 4, 2009 at 08:33 PM 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 More sharing options...
kazzx Posted December 4, 2009 at 09:03 PM Author Report Share #298737 Posted December 4, 2009 at 09:03 PM 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 More sharing options...
ribeiro55 Posted December 5, 2009 at 09:42 AM Report Share #298767 Posted December 5, 2009 at 09:42 AM 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 More sharing options...
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