Einfache DB Ansteuerung ListBox ÜbergabeID


Mircot

Mitglied
Hallo liebe Gemeine


kämpfe schon seit Stunden mit den verschiedensten Lösungen um eine ListBox mit Werten zu füllen die aus einer Access DB Kommen.

ConString, Verbindungsherstellung usw. stellt kein Problem da, was mich aber Kopfzerbrechen bereitet ist die Datenanbindung an die Listbox und die Übergabe der ID (PrimayKey) aus der Tabelle. Sicherlich wurde das Thema schon 1000 mal besprochen aber ich habs immernochnicht verstanden.

Also ich habe eine Klasse SQLAbfragen:
Code:
        	public class SQLAbfrage
        	{
        		public string SQLStringIntern;
        
        		public ArrayList StartAbfrage()
        		{
        			SysVar SysVar = new SysVar();
 			string ConString = "Provider=Microsoft.Jet.OLEDB.4.0;........ usw...";
 			OleDbConnection Verbindung = new OleDbConnection(ConString);
 			OleDbCommand sqlCommand = new OleDbCommand(SQLStringIntern, Verbindung);
 			ArrayList Liste = new System.Collections.ArrayList();	// Bereitstellend der ArrayList
        
 				Verbindung.Open();	
 		 	OleDbDataReader DataReader = sqlCommand.ExecuteReader();	
 				while (DataReader.Read())	
        				{	
 		 		Liste.Add( new CBoxAllgemein( DataReader.GetInt32(0) , DataReader.GetString(1)));
        				}
 				Verbindung.Close();	
        				return Liste;
        		}
        	}

Diese ich gebe nach dem Instanzienen dem String SQLStringIntern den entsprechenden SQL-Befehl (SELECT a, b FROM XY). Der dataReader füllt mir dann eine ArrayList(e) mit den Daten der Abfrage. Die will ich dann an ein ListBox-Objekt binden.

Code:
this.listBox1.DataSource=Abfrage.AbfrageStart();
        			this.listBox1.Sorted= true;
        			this.listBox1.ValueMember="a";
Das funktioniert auch soweit mit Hilfe des Structs:

Code:
        	public struct CBoxAllgemein
        	{
        		public int ID;
        		public string Bezeichnung;
        		
        		public CBoxAllgemein(int Id, string Bezeichnung)
        		{
        			this.ID = Id;
        			this.Bezeichnung = Bezeichnung;
        		}
        
        		public override string ToString() 
        		{
 			// return base.ToString (); (Statndart-Methode wird überschrieben)
        			return string.Format(this.Bezeichnung);
        		}
        	}
Es funktioniert alles bis auf die Zuweisung der ID (SelectedValue) der Listbox. Die soll nämlich immer den PK des Datensatzes haben, damit ich ach entsprechende Zuweisungen machen kann.


Der gesamte o.g. Bausatz scheint mir irgendwie zu Aufwendig für das Problem. Ist irgendwie so als wenn man einen Baukran braucht um ein Gartenhäuschen aufzustellen.:suspekt:


Grundlegend will ich nur eins. Eine SQL-Abfrage bringt Werte aus eine DB. Die will ich über bspw. eine Listbox zur Auswahl bereitstellen. Der Nutzer soll den entsprechenden Datesatz auswählen, der über den PK in der DB identifiziert wird. So wie es in PHP/HTML gelöst ist. Nach dem der Nutzer den DS ausgewählt hat, soll nun ein weiteres Form geöffnet werden, in dem Die restlichen Daten hineingeladen werden um sie zu bearbeiten und wieder abzuspeichen. Beispielsweise eine AdressDB. Ich bekomme zuerst alle Namen sortiert nach Aplhabet, wähle einen aus und alle entsprechenden Daten werden mir dann bereitgestellt.


Klingt doch ganz einfach, und ich kann mir nicht vorstellen das es so schwer und kompliziert ist, dass einige Funktionen überschrieben werden müssen bspw. ToString().

Hat jemand eine Idee? Denke Ich falsch und zu viel in Richtung PHP:suspekt::confused:

Am besten währe ein kleines Beispiel.