Ik ben nog niet al te lang bezig met VB, maar ik wil graag een rij van 15 comboboxen vullen met databasegegevens uit 1 tabel.
Dit om producten in te voeren.
Alle producten staan in 1 tabel en die moet dus uitgelezen worden.
Nu is dit gelukt op de volgende manier:
visueel ingesteld:
DataSource = DataSet3.productnaam
DisplayMember = productnaam
name = product1 (en verder t/m 15)
Dit werkt allemaal prima, totdat je een van de comboboxen wilt veranderen, zodra je dat namelijk doet veranderen ze allemaal, en dat is niet wat ik wil. In iedere combobox moet bij wijze van spreken gewoon een apart product kunnen staan.
Hoe verwezenlijk ik dit?
Daarnaast zou ik ook graag willen dat de eerste keuze een lege regel is en daarna pas de lijst met producten komt om zo bij het invoeren in de db degene die nog leeg zijn niet in te voeren.
11 antwoorden
Gesponsorde links
Abbas - 19/06/2007 20:49 (laatste wijziging 19/06/2007 20:51)
Crew .NET
CodeTags gebruiken, anders gaat de crew zagen...
Ik kan niet echt aan je probleem uit, post eens wat meer code indien mogelijk en zeg waar het fout/helemaal niet gaat.
Maar dat is de enige code die ik heb, want de rest is allemaal via dat visuele gedeelte ingesteld, ik wil wel de 'windows generated code' posten.
windows generated code: http://plaatscode.be/5693/
(let op, enkele duizenden regels)
Maar volgens mij is dit alleen maar voor het layout gedeelte, dus of je er nu zoveel aan hebt.
EDIT: ik heb even het volledige bestand in een zipje online gezet zodat degenen die visual studio hebben het even kunnen downloaden en alles kunnen zien. http://www.euro...estand.zip
Abbas - 19/06/2007 21:09 (laatste wijziging 19/06/2007 21:09)
Crew .NET
Dank je, aan het zipje heb ik meer Ik zal het eens bekijken en dan iets laten weten!
En zoals je zegt: die Windows Generated Code is alleen maar het visuele gedeelte...
Abbas - 19/06/2007 22:21 (laatste wijziging 19/06/2007 22:22)
Crew .NET
Met de methode hoe jij werkt kom je een aantal problemen tegen.
- Ze veranderen allemaal omdat ze dezelfde DataSource hebben
- Met jouw methode kan je niet 1 product per ComboBox
-> Stel je hebt 15 Boxen en 15 producten moet je met een query oid werken om er 1 per Box te krijgen en dat gaat niet aangezien je met een DataSet werkt
- En de eerste regel kan niet blank zijn omdat je er een DataSource
hebt op gezet...
Dim item As ListItem
item = new ListItem()
item.Text = ""
item.Value = ""
product1.Items.Add(item)
Dim query As String
query = "SELECT productnaam FROM producten"
Dim myComm As OleDbCommand = new OleDbCommand(query, uw_verbinding)
Dim myReader As OleDbDataReader
Try
uw_verbinding.Open()
myReader = myComm.ExecuteReader()
While myReader.Read()
item = new ListItem()
item.Value = myReader.GetString(0)
item.Text = myReader.GetString(0)
'product1 is de naam van ComboBox
product1.Items.Add(item)
End While
myReader.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
uw_verbinding.Close()
End Try
Dim item As ListItem
item =new ListItem()
item.Text =""
item.Value =""
product1.Items.Add(item)
Dim query As String
query ="SELECT productnaam FROM producten"
Dim myComm As OleDbCommand =new OleDbCommand(query, uw_verbinding)
Dim myReader As OleDbDataReader
Try
uw_verbinding.Open()
myReader = myComm.ExecuteReader()
While myReader.Read()
item =new ListItem()
item.Value = myReader.GetString(0)
item.Text = myReader.GetString(0)
'product1 is de naam van ComboBox
product1.Items.Add(item)
End While
myReader.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
uw_verbinding.Close()
End Try
Zo worden de gegevens vanuit de DB in je ComboBox geplaatst en heb je 1 leeg item voor alle andere items.
Al die dingen met een lijntje zijn zaken die je moet declareren, in de code die ik je heb gegeven staan deze gedeclareerd. Met het stukje code dat je geeft vul je alle lijsten met alle producten, wil je voor elke lijst 1 product, dan moet je voor elke rij een aparte query maken en uitvoeren.