kazzx Posted December 7, 2009 at 03:48 PM Report Share #299068 Posted December 7, 2009 at 03:48 PM Viva, tenho dois formulários. um faz pesquisas, outro está a 'receber' os valores seleccionados na listbox do formulário de pesquisa. a minha questão é, como faço para depois da pesquisa e imaginando que aparecem várias pessoas com o mesmo nome, permitir enviar as várias pessoas com o mesmo nome mas não permitir enviar a mesma pessoa duas vezes. eu já coloquei esta questão aqui no P@P mas não deu resultado. essas pessoas têm um ID, eu a fazer apresentar o ID em vez do nome consigo fazer essa operação de evitar enviar duas vezes a mesma pessoa, mas na listbox aparecem os IDs, e eu queria o nome.. ajudas são bem vindas 😉 Link to comment Share on other sites More sharing options...
vasco16 Posted December 7, 2009 at 04:04 PM Report Share #299071 Posted December 7, 2009 at 04:04 PM Viva, tenho dois formulários. um faz pesquisas, outro está a 'receber' os valores seleccionados na listbox do formulário de pesquisa. a minha questão é, como faço para depois da pesquisa e imaginando que aparecem várias pessoas com o mesmo nome, permitir enviar as várias pessoas com o mesmo nome mas não permitir enviar a mesma pessoa duas vezes. eu já coloquei esta questão aqui no P@P mas não deu resultado. essas pessoas têm um ID, eu a fazer apresentar o ID em vez do nome consigo fazer essa operação de evitar enviar duas vezes a mesma pessoa, mas na listbox aparecem os IDs, e eu queria o nome.. ajudas são bem vindas 😉 Verificas se o nome em vez do ID Link to comment Share on other sites More sharing options...
kazzx Posted December 7, 2009 at 04:08 PM Author Report Share #299074 Posted December 7, 2009 at 04:08 PM não, isso já fiz e não pode ser. então, imagina que aparecem duas "Anas" depois da consulta. se eu quiser colocar a primeira Ana duas vezes o programa vai permitir, e isso não quero. Link to comment Share on other sites More sharing options...
vasco16 Posted December 7, 2009 at 04:11 PM Report Share #299076 Posted December 7, 2009 at 04:11 PM Então ou nao estou a perceber o que queres ou entao é impossivel, claro que vai sempre existir mais que uma Ana na BD mas nesse caso uso entao o ID :S se puderes explica-te melhor.. Link to comment Share on other sites More sharing options...
kazzx Posted December 7, 2009 at 04:19 PM Author Report Share #299079 Posted December 7, 2009 at 04:19 PM pah, é assim, tenho um form que faz consultas à BD e apresenta numa listview o nome inserido numa caixa de texto, se existirem vários nomes iguais claro que aparecem esses vários nomes, como se escrever "João" na caixa de texto e na BD existirem vários "João" tem de apresentar esses vários "João" e isso está a fazer correctamente. agora, eu tenho de seleccionar por exemplo um "João" e ao clicar num botão esse nome é colocado numa outra tabela da BD e por sua vez é apresentado numa listbox de outro form. agora é assim, não faz sentido colocar duas vezes a mesma pessoa na listbox do outro tal formulário. mas faz sentido que seja possível colocar na listbox do outro form nomes iguais. já percebeste? ou seja, se eu quiser colocar duas vezes o mesmo Manel não pode deixar, mas se quiser colocar outro Manel então que seja possível. Link to comment Share on other sites More sharing options...
vasco16 Posted December 7, 2009 at 04:27 PM Report Share #299080 Posted December 7, 2009 at 04:27 PM ..agora, eu tenho de seleccionar por exemplo um "João" e ao clicar num botão esse nome é colocado numa outra tabela da BD e por sua vez é apresentado numa listbox de outro form. Então antes de apresentares na listbox, vais verificar se nessa nova tabela existe o nome, para nao o repetir, se existir avisa, senao insere-o nessa "nova" tabela e coloca-o na listbox do outro form. É isso? Link to comment Share on other sites More sharing options...
kazzx Posted December 7, 2009 at 04:46 PM Author Report Share #299082 Posted December 7, 2009 at 04:46 PM é mais ou menos. basicamente quero poder inserir nomes iguais mas de pessoas diferentes, e não poder inserir da mesma pessoa. xD Link to comment Share on other sites More sharing options...
kazzx Posted December 7, 2009 at 04:48 PM Author Report Share #299083 Posted December 7, 2009 at 04:48 PM estou a usar este código para inserir na tabela da BD o nome encontrado 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 e este para fazer apresentar os nomes colocados, isto no outro form.. Dim conn As New OleDbConnection() conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Projecto\GerirFilas\DataBase\DadosFila.mdb" Dim cmd As OleDbCommand = conn.CreateCommand cmd.CommandText = "Select Nome from Espera" btnremoveespera.Enabled = False conn.Open() lstpessoasespera.Items.Clear() Dim leitor As OleDbDataReader = cmd.ExecuteReader() Try While leitor.Read() lstpessoasespera.Items.Add(leitor("Nome")) End While Catch ex As Exception End Try conn.Close() Link to comment Share on other sites More sharing options...
paulo silva Posted December 7, 2009 at 04:56 PM Report Share #299084 Posted December 7, 2009 at 04:56 PM podes simplesmente atribuir dois valores à listbox, o que se vê que será o text e o que fica oculto que será o value, e assim trabalhas com o value em vez do text que vês. cumps Paulo Silva Link to comment Share on other sites More sharing options...
kazzx Posted December 7, 2009 at 05:11 PM Author Report Share #299086 Posted December 7, 2009 at 05:11 PM podia explicar melhor ? Link to comment Share on other sites More sharing options...
paulo silva Posted December 7, 2009 at 05:17 PM Report Share #299087 Posted December 7, 2009 at 05:17 PM Tu numa listbox, podes ter dois valores a o listbox.text ; e o Listbox.value ou item, klk coisa do genero não se de cor, mas pesquisa, e depois fazes a comparação pelo value. em vez do texto que é mostrado. Link to comment Share on other sites More sharing options...
vasco16 Posted December 7, 2009 at 05:31 PM Report Share #299090 Posted December 7, 2009 at 05:31 PM Tu numa listbox, podes ter dois valores a o listbox.text ; e o Listbox.value ou item, klk coisa do genero não se de cor, mas pesquisa, e depois fazes a comparação pelo value. em vez do texto que é mostrado. Sim tem logica, porque pode haver o Manel Pereira e o Manel Silva com os Id's 1 e 2 respectivamente, e ao comparar pode usar a parte oculta (os id's (values)). Link to comment Share on other sites More sharing options...
ribeiro55 Posted December 7, 2009 at 05:38 PM Report Share #299092 Posted December 7, 2009 at 05:38 PM Eu já disse isto, provavelmente umas 5 vezes, e sempre a ti 😉 Listbox aceita OBJECT. Tu podes listar instâncias de forms se te apetecer. Repara no seguinte exemplo, onde adiciono à listbox uma instância da estructura Pessoa: Public Class Form1 Public Structure Pessoa Public ID As Integer Public Nome As String Public Overrides Function ToString() As String Return Nome End Function End Structure Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim P As New Pessoa P.ID = 1 P.Nome = "Cocas o sapo" ListBox1.Items.Add(P) End Sub Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged If Not ListBox1.SelectedItem Is Nothing Then Dim P As Pessoa = ListBox1.SelectedItem MsgBox("Olá. Sou o " & ListBox1.SelectedItem.ToString & " e o meu ID é o " & P.ID) End If End Sub End Class É uma questão de fazeres uma estructura, ou uma classe com as propriedades que precisas e adicionas à listbox instâncias da estructura, ou classe. Podes passar todos os valores que te apetecer para lá, e consequentemente, vais ter todos esses valores disponíveis para quando precisares deles. Aparte: O override ao método ToString, na estructura, serve para que a representação String daquele objecto seja exactamente o que pretendes, neste caso, pretendes mostrar o NOME mas ter também a informação do ID. 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 9, 2009 at 03:00 PM Author Report Share #299476 Posted December 9, 2009 at 03:00 PM eu fiz umas pequenas adaptações, para ficar a dar à minha maneira. mas sim, obrigado : ) Link to comment Share on other sites More sharing options...
ribeiro55 Posted December 9, 2009 at 03:03 PM Report Share #299479 Posted December 9, 2009 at 03:03 PM Era mesmo para adaptares. Eu não adivinho o que para aí tens 😄 Mas ficou mesmo resolvido? Senão aborda-se de outra forma, mais fácil talvez. 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 13, 2009 at 06:35 PM Author Report Share #300186 Posted December 13, 2009 at 06:35 PM tipo, agora eu defini para aparecer o ID em vez do nome e ao colocar na lista de espera já consigo fazer o que quero, ou seja, não permitir a mesma pessoa duas vezes, mas permitir nomes iguais de diferentes pessoas. o problema é que em vez de aparecer o nome aparece o ID. não há nenhuma maneira de quando fazer a pesquisa na base de dados, tipo associar o ID à pessoa? acho que me fiz entender. Link to comment Share on other sites More sharing options...
ribeiro55 Posted December 13, 2009 at 08:04 PM Report Share #300197 Posted December 13, 2009 at 08:04 PM Então percebeste ou não percebeste o código que te meti? Resolve exactamente isso. A menos que estejas a usar binds e coisas do género. Aí basta meteres a datasource para o que pretendes, o displaymember para o nome e o valuemember para o ID. 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