PDA

Vollständige Version anzeigen : Datenbankzugriff


AJK
13.07.2001, 14:55
Wer kann mir helfen?
Ich möchte gern zwei Spalten in einer ComboBox anzeigen und die Daten möglichst aus einer Tabelle holen. Wie geht das und welche Datenbanken kommen in Frage?

Ich verwende A00 und vb5.0

Danke im Voraus
Arne

Stefan Kulpa
13.07.2001, 16:58
<font face="Verdana" size="2">Hallo,

das ist schon etwas aufwendiger.
Da Du nichts zu den Daten in der Datenbank geschrieben hast, gehe ich mal von einer Standard-Adressverwaltung aus.
In Access kannst Du dann eine Tabelle</font> <font face="Courier New" size="2">tblAdressen</font> <font face="Verdana" size="2">erstellen, die folgende Felder hat:
fldNName (Text) für den Nachnamen</li>
fldVName (Text) für den Vornamen</li>
usw.</li>
Die Datenbank selbst könnte dann Adressen.mdb heißen.
Der Datenzugriff in VB erfolgt am einfachsten mit der DAO-Technologie, dazu muss ein Verweis auf die entsprechende Bibliothek gesetzt werden (Projekt -> Verweise -> Microsoft DAO 3.6 Object Library). Die 2-spaltige Darstellung in einer ComboBox ist allerdings ein Problem, da dieses Control in VB nicht mehr als eine Spalte anzeigen kann. Die Werte können aber beispielsweise mit einem Komma getrennt dargestellt werden - oder Du benutzt ein anderes Control (ListView o.ä.).

In VB selbst geht's dann so:</font>

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Private Sub</span> Form_Load()
<span class="REM">'** Objektvariablen f&uuml;r den Datenbankzugriff</span>
<span class="TOKEN">Dim</span> objWks <span class="TOKEN">As</span> DAO.Workspace <span class="REM">'** Arbeitsbereich</span>
<span class="TOKEN">Dim</span> objDbs <span class="TOKEN">As</span> DAO.Database <span class="REM">'** Datenbank</span>
<span class="TOKEN">Dim</span> objRst <span class="TOKEN">As</span> DAO.Recordset <span class="REM">'** Datenbereich</span>
<span class="REM">'** DAO Arbeitsbereich bestimmen</span>
<span class="TOKEN">Set</span> objWks = DAO.DBEngine.Workspaces(0)
<span class="REM">'** Datenbank &ouml;ffnen (Pfad anpassen!)</span>
<span class="TOKEN">Set</span> objDbs = objWks.OpenDatabase(&quot;I:\WINNT\Temp\Adressen.mdb&quot;, <span class="TOKEN">True</span>)
<span class="REM">'** Auf die Tabelle zugreifen</span>
<span class="TOKEN">Set</span> objRst = objDbs.OpenRecordset(&quot;tblAdressen&quot;, dbOpenDynaset)
<span class="REM">'** Die Combobox f&uuml;llen</span>
<span class="TOKEN">With</span> objRst
<span class="REM"> '** Pr&uuml;fen, ob es Daten gibt</span>
<span class="TOKEN">If</span> <span class="TOKEN">Not</span> .BOF <span class="TOKEN">And</span> <span class="TOKEN">Not</span> .EOF <span class="TOKEN">Then</span>
<span class="REM"> '** In einer Schleife die Datens&auml;tze durchgehen</span>
<span class="TOKEN">Do</span> <span class="TOKEN">Until</span> .EOF
cboNamen.AddItem !fldNName &amp; &quot;, &quot; &amp; !fldVName
.MoveNext <span class="REM">'** n&auml;chster Datensatz</span>
<span class="TOKEN">Loop</span>
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">End</span> <span class="TOKEN">With</span>
<span class="REM">'** Objekte zerst&ouml;ren</span>
objRst.Close: <span class="TOKEN">Set</span> objRst = <span class="TOKEN">Nothing</span>
objDbs.Close: <span class="TOKEN">Set</span> objDbs = <span class="TOKEN">Nothing</span>
objWks.Close: <span class="TOKEN">Set</span> objWks = <span class="TOKEN">Nothing</span>
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span></pre></div>

<font face="Verdana" size="2">Ok, das ganze ist recht simpel gestrickt und es fehlt ein Fehlerhandling, aber das Prinzip sollte vielleicht klar sein.

HTH</font>

dialsc
10.10.2001, 09:39
Hallo Stefan,

ich schlage mich momentan damit rum, dass ich ein, für mich recht aufwendiges Programm, auf Access aufsetzend realisieren muss.

Ich war schon am verzweifeln, weil Dim-Anweisungen wie "xxx As Database" nicht angenommen wurden. Um so dankbarer bin ich Dir dafür, dass Du als erster in all den Beiträgen, die ich bis jetzt gelesen habe, mal erwähnst, dass man das man die DAO Object Library hinzufügen muss.


DDDDAAAAAANNNNNKKKKKKEEEEEE.... ;-)

Grüße...
dialsc