Anzeige

 Tabcontrols Seite dynamisch erweitern

#1
Hallo bin zwar nicht neu in VB aber VBA-Access ist was anderes als VB.
Meine Frage.
Tabcontrols sind eigentlich eine Tolle Sache, nur eins hat sich mir noch nicht erschlossen, dazu folgendes Beispiel.
Ich habe ein Tabcontrol auf dem sich auf einer Seite 3 Control Elemente befinden, die Gefüllt werden können. 2 Textfelder und eine Checkbox. Gleichzeige habe ich auch einen Datensatz der mir diese drei Felder mit Werten abdeckt.
So far so good, die Befüllung ist bis hier her keine Problem, wohl gemerkt ein Datensatz.
Jetzt zu meinem Problem.
Für diese Seite auf dem tabcontrol können allerdings auch mehr als ein Datensatz zurückgegeben werden.
Wie erweitere ich, in abhängigkeit der anzahl der Datensätze die zurück gegeben werden, die tabcontrol Seite die es betrifft.
Soll heißen ich bekomme Zwei Datensätze aus der Tabelle geliefert und die sollen jetzt auf einmal auf der entsprechenden Seite des Tabcontrols angezeigt werden.
Meine Idee dazu war so ewtas wie eine Option group und die dann dynamisch auf der Seite darstellen.

Ich weiß nicht weiter
Gruß
Willi
 

Yaslaw

n/a
Moderator
#2
Mach ein Endlosformular mit den Daten drin.
Dann machst du ein Formular mit dem TabControl. In das TabControl kannst du dein Endlosformular als Unterformular einfügen.
 
#3
gibt es keine andere Möglichkeit, oder hast du mal ein kurzes Beispiel. In Vb hab ich das ohne subformulare hinbekommen. Ich muss aber VBA-Access nehmen und da funzt das nicht. Das Problem ist das ich ein Recordset zurückbekomme und keine Datanebank Tabelle, da die Abfrage auf einen SQL-Server geht und auch von dort das Recordset.
 

Yaslaw

n/a
Moderator
#4
Beispiele zu meinem einfachen Fall gibt es viele.
Aber das entspricht nicht deinem Problem. Das scheint anders zu sein. Deine Erklärung ist recht komplex. Ich denke, ich habe nur ein Bruchteil verstanden.

Also. du hast ein DAO oder ADODB Recordset. Kannst du nicht über ODBC die Tabelle/View als Datenquelle einbinden? Dan könntest du die Stärken von Access auch nutzen.
Wenn du nur das Recordset hast und damit mit Formularen arbeiten willst, dann wird das sehr komplex.

Am Einfachsten eine Tabelle in Access anlegen, die die gleiche Struktur hat.
Die Records hineinkopieren.
Mit dieser Tabelle im Access arbeiten.
Bei Veränderungen (Events auf dem Form) reagieren und die Änderungen an den Server schicken.
Beim verlassen des Forms die Tabelle wieder leeren.

Aber einfacher währe eine ODBC-Verknüpfung....
 
#5
So sah die Ursprüngliche Verision unter Access aus. Mittlerweile hat diese Access DB ein unkontroliierbares Eigenleben entwickelt, viele kopien unterwegs keine Konsistenz in den Daten und jede kopie gibt unterschiedliche Informationen zurück. (RiesenProblem). Die Hauptdaten werden nun auf den SQL-Server importiert und von dort werden auch die Antworten zur Verfügung gestellt. Ich weiß man kann links zu solchen Datenbanken bauen. DIes funktioniert aber aus Performance gründen nicht mehr. Für eine kleien Abfrage gehen bis zu 10 sekunden ins Land bis die Antwort kommt. Access ist ausserdem nicht dazu geeignet, so unsere Erfahrung in einem Netzwerk mit Multiuser-Access benutzt zu werden. Je mehr User aud Access rumwurschteln ums Langsamer wird das Teil und das geht nicht.
Ich weiss das das Arbeiten mit Recordssets sehr komplex ist aber es ist um einen großen Fakto Schneller.
 

Yaslaw

n/a
Moderator
#6
Aber was spricht gegen die ODBC-Verknüpfung anstelle des Recordsets?

Acces ist dazu gemacht, auf einer "Tabelle" (kann auch ein verküpfte View eines Servers sein) die Formulare aufzubauen.
 

Yaslaw

n/a
Moderator
#8
Pech.
Ist es ein DAO oder ein ADODB Recordset? Beim ersteren kannst du ev das Recordset direkt an ein Form hängen.

Hab das folgende getestet. Funktioniert.
Code:
Private Sub Form_Load()
    Dim rs As DAO.Recordset
    Set rs = CurrentDb.openRecordset("select * from t_ch")
    Set Me.Recordset = rs
End Sub
 
Anzeige

Neue Beiträge

Anzeige