datenbanke

thecooper

Mitglied
hi,

ich programmier grad das erste mal mit bezug auf db's in vb und nun hab ich 2 probleme bie denen ich hilfe gebrauchen könnte: also 1. ich hab in der datenbank mehrere tebellen, alle haben 5 spalten und unterschiedlieche zeilen anzahl, sagen wei test1, test2 und test3, nun wird der user aufgefordert in einer combo-box eine der tabellen auszuwählen. ok, mit dem was der user ausgewählt hat setze ich data1.recordsource und aktualisiere data1. nun soll die erste spalte der ausgewählten tabelle in eine liste angezeigt werden. sollte nicht schwer sein aber bei mir hakts. und jetzt zu meinem 2ten problem. wenn der user einen datensatz aus der liste ausgewählt hat. sollen die infos zu diesem aus den restlichen 4 spalten in 4 textfeldern dargestellt werden.
im prinziep klingt das einfach aber ich habe keine ahnung. na dann, schon mal danke im vorraus.

bye, coop.
 
Servus!

Wenn ich dich korrekt verstanden habe, sollte das recht einfach sein ...

Du hast eine Liste der 5 versch. Tabellen Namen einer Combobox.

Wenn du jetzt einen Namen ausgewählt hast, benutzt du diesen Namen als Parameter für den Open-String eines Neuen Recordsets ...

Code:
Dim rs as adodb.recordset

... 

set rs = new Adodb.recordset

with rs

.ActiveConnection = DER_CONNECTION_STRING
.lockType = adLockOptimistic
.cursorType = adOpenDynamic
.cursorLocation = adUseClient
.open "Select  * from " +  cboTabellen.value

end with

... nun hast du alle Zeilen und Spalten der Tabelle im Speicher ... 

jetzt könntest du Beispielsweise mit einer Schleife über das recordset gehen :

if not ( rs.EOF AND rs.BOF) then

while(not rs.EOF)
  msgbox "" &  rs!Spalte1
  ' hier könntest du deine Liste bzw. Tabellen ansicht füllen 
  rs.moveNext
wend
end if

... merke dir zu jedem Satz in einem Array seine "Datensatznr" ... entweder nimmst du die aus der Tabelle oder zählst einfach selber ...

Dann überprüfst du im Click-Ereignis der Liste, welche Nr. der Datensatz hat, der ausgewählt wurde. Darauf hin

kannst du mit rs.seek an die entsprechende Stelle im recordset springen:

Seek-Methode
      

Durchsucht den Index eines Recordset-Objekts, um schnell die Zeile zu finden, die den angegebenen Werten entspricht und ändert die aktuelle Zeilenposition entsprechend.

Syntax

recordset.Seek KeyValues, SeekOption

Parameter

KeyValues   Ein Array von Werten vom Datentyp Variant. Ein Index besteht aus einer oder mehreren Spalten, und das Array enthält einen Wert, der mit jeder dieser Spalten verglichen werden kann.

SeekOption   Ein SeekEnum-Wert, der die Art des durchzuführenden Vergleichs zwischen den Indexspalten und den entsprechenden KeyValues angibt.

.... dann wird das mit dem Datensatzzählen überflüssig .. ^^

Ok, wenn du nun den gewünschten Datensatz angesprungen hast, kannst du mittels

txtFeld2 = rs!Spalte2
txtFeld3 = rs!Spalte3
txtFeld4 = rs!Spalte4
txtFeld5 = rs!Spalte5

Die Textfelder füllen ...

fertig!

Gruß Tom
 
naja, das was du da machst sieht ein bisschen umständlich aus. ich hab da noch eine frage wenn man mit dem datensteuerelement eine db läd dann kann man mit den pfeilen durch die datensätze springen. wie lässt man sich anzeigen bei welcher datensatz nummer man ist?
 
um erhlich zu sein versteh ich deinen code nicht ganz. wie gesagt meine erste erfahrung mit datenbanken. im prinzip möchte ich nur wissen wie ich eine spalte einer tabelle in eine listbox lade. und wie ich dann zu dem listeneintrag die passenden info lade. das geht doch eigentlich mit sql hab ich gehört. nur hab ich davon och keine ahnung.
 
Original geschrieben von thecooper
um erhlich zu sein

Würdest Du Dich bitte an unsere Netiquette halten?

-> Aussagekräftige Betreff-Zeilen für neue Themen
-> Keine durchgehende Kleinschreibung in Betreff und Beiträgen
-> Korrekte Rechtschreibung u. Grammatik beachten

Gelbe Karte und zugleich die letzte Verwarnung. :(
 
Zuletzt bearbeitet von einem Moderator:
Zurück