Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: henfoni am Juni 21, 2012, 16:06:40

Titel: Textfelder dynamisch erzeugen
Beitrag von: henfoni am Juni 21, 2012, 16:06:40
Moin,
ich möchte ein Formular basteln, mit dem ich meine komplette Datenbank befülle.
In einer Tabelle kann man Zeiträume zu bestimmten Objekten eintragen, allerdings ist die Anzahl der Zeiträume nicht bekannt (soll also dynamisch gestaltet werden).

Gibt es einen eleganten Weg, dazu jeweils dynamische Textfelder zu erzeugen. Ich könnte das natürlich auch alles über 2 Textfelder lösen, bloß das ist mir zu viel unübersichtliche Klickarbeit.

Meine nächste Frage dazu wäre: Ich habe noch mehr Textfelder (für andere Tabellen). Wenn ich es dann dynamisch mache, müsste ich dann ja quasi alles dynamisch machen, weil ich vorher ja nie genau weiß, wieviel Zeiträume eingetragen werden. Seh ich das richtig?
Ich habe gelesen, dass man auch Reiter in einem Formular erstellen kann. Ich möchte allerdings am liebsten alles auf einer Maske.

Kann mir jmd. viell. Tips oder Links geben?

Danke und Gruß
Titel: Re: Textfelder dynamisch erzeugen
Beitrag von: 69bruno am Juni 21, 2012, 16:13:45
Hm, da ja nicht bekannt ist, wie viele Textboxen das werden, wird der Bildschirmaufbau wohl schwierig werden.

Warum kein Unterformular, von mir aus in Datenblattansicht ?  :-\

Aber dafür sollte dann auch die Tabellenstruktur passen.
Titel: Re: Textfelder dynamisch erzeugen
Beitrag von: henfoni am Juni 21, 2012, 16:23:35
Bin ziemlich neu in access-Formular-Entwicklung. Ein Unterformular klingt nicht schlecht, das wäre ne gute Möglichkeit für ne schnelle Eingabe. Nu muss ich das nur irgendwie aufs Formular bekommen :)
Titel: Re: Textfelder dynamisch erzeugen
Beitrag von: MzKlMu am Juni 21, 2012, 16:33:49
Hallo,
dynamisch Felder hinzufügen sollte in einer korrekten DB niemals erforderlich sein. Du hast mit ziemlicher Sicherheit ein falsches Datenmodell.
Und für ein Ufo muss das Datenmodell stimmen, wie das Bruno auch schon sagte.
Kannst Du die Zusammenhänge mal besser erläutern.
Was sind das für Zeiträume ?
Jeweils auch von bis ?
Titel: Re: Textfelder dynamisch erzeugen
Beitrag von: henfoni am Juni 21, 2012, 16:57:13
Moin,

also ganz einfach gesprochen: ich habe eine Tabelle Stadt und eine Tabelle Periode. Eine Stadt kann mehrere Perioden haben (1:n).

Stadt:        Stadt_ID, Land_ID, Stadt_Name, Kurzbeschreibung
Periode:     Periode_ID, Stadt_ID, von, bis, Parkgebühr

Jede Stadt hat unterschiedlichen Perioden. Wüsste nicht, wie ich die Informationen sonst speichern sollte.. Hast du ne Idee?

Danke und Gruß
Titel: Re: Textfelder dynamisch erzeugen
Beitrag von: MzKlMu am Juni 21, 2012, 16:59:29
Hallo,
ich sehe da keine dynamischen Felder. Welche Felder sollen da noch hinzugefügt werden?
Wenn die Perioden nahtlos ineinander übergehen, ist das "bis" Feld nicht erforderlich.
Titel: Re: Textfelder dynamisch erzeugen
Beitrag von: henfoni am Juni 21, 2012, 17:03:44
Achso, glaub wir haben uns missverstanden.

Ich wollte ja übers Formular zu jeder Stadt die Perioden eintragen. Dabei kann es ja sein, dass eine Stadt 3 Perioden hat, eine andere 5. Also wollte ich Textfelder dynamisch auf die Form laden,  aber sowas geht wahrs. gar nich..

Naja, aber ich werde es ja jetzt sowieso über die gebundenen Formulare alles erledigen.
Titel: Re: Textfelder dynamisch erzeugen
Beitrag von: MzKlMu am Juni 21, 2012, 17:10:59
Hallo,
OK, dann passt es so. Wenn Du mit gebundenen Formlaren arbeitest, was ich unter allen Umständen empfehlen würde, wird das ja alles viel einfacher. Weil im Formular immer ein neuer leerer Datensatz mit den entsprechenden Feldern angezeigt wird.

In Deinem Fall würde ich die Stadt in einem Hauptformular und die Perioden in einen Endlosunterformular anzeigen. Hafo und Ufo werden über die Schlüsselfelder verknüpft. Dann wird die Stadt_ID automatisch übertragen. Du kannst dann zu jeder Stadt beliebig viele Perioden erfassen, die Du im Ufo auch immer alle passend siehst. Geht mit gebundenen Formularen alles ohne einen einzigen Buchstaben VBA Code, ganz automatisch.
Und wie gesagt, das Bis Feld halte ich für überflüssig. Wenn die Perioden nahtlos sind.
Titel: Re: Textfelder dynamisch erzeugen
Beitrag von: henfoni am Juni 21, 2012, 17:19:02
Hi,

ja stimmt, das bis-Feld kann eigentlich weg.
Mit Hauptformular und Unterformular habe ich gestern schon rumgespielt. Das wär echt ne gute Möglichkeit.

Ich habe noch ein weiteres "Problem" (siehe Mail). Ich möchte, dass ein User später ein Hotel anlegen kann.
Das Hotel hat die folgende Struktur: Hotel_ID, Land_ID, Waehrung_ID, Hotel_Name, Kurzbeschreibung

Wie mache ich das Formular am besten, so dass der User auch sieht welches Land und welche Waehrung er auswählt (es werden ja nur die IDs gespeichert)? Die Tabellen Hotel, Land und Waehrung habe schon in Beziehung gesetzt mit ref. Integrität, der User kann also nur vorhandene Werte eintragen. Die Länder und Währung-Tabellen befülle ich selbst bzw. habe ich schon befüllt.

Danke und Gruß
Titel: Re: Textfelder dynamisch erzeugen
Beitrag von: MzKlMu am Juni 21, 2012, 17:28:02
Hallo,
so reicht das:
ZitatHotel_ID, Stadt_ID, Hotel_Name, Kurzbeschreibung
Land und Währung ist völlig überflüssig. Diese ergeben sich völlig problemlos über die Stadt.
Stadt>Land>Währung.
Der User legt das Hotel an, wählt die Stadt aus einem Kombi aus und fertig.
Um es für den User einfacher zu machen, könnte man noch ein ungebundenes Kombi zur Vorauswahl des Landes machen.
Aber ob das notwendig ist?
Die Auswahl eines Kombis verfeinert sich immer weiter, mit jedem Buchstaben, sodass man sehr schnell bei der Stadt ist. Das Land sollte man im Kombi mit anzeigen.
Titel: Re: Textfelder dynamisch erzeugen
Beitrag von: henfoni am Juni 21, 2012, 17:35:49
Hey,

also die Tabelle Stadt gibt es nicht ;-) hatte ich nur als Beispiel vorhin, weil ich dachte es wär verständlicher.
Gibt nur Hotel, Land, Währung. Die Währung kann aber in zwei Hotels im gleichen Land unterschiedlich sein, deswegen ist sie nur abhängig vom Hotel.

Mir geht es wirklich, um die grundlegenden Schritte (sorry dass ich so wenig Plan hab). Also welches Formular muss ich auswählen? Ich will ja nicht die schon vorhandenen Hotels anzeigen lassen.

Dank dir
Titel: Re: Textfelder dynamisch erzeugen
Beitrag von: henfoni am Juni 21, 2012, 18:09:33
zu Hafo und Ufo noch ne Frage:
die Beziehung zwischen den Formularen, kann ich die über die Oberfläche herstellen? Habs bisher nur im VBA-Code mit LinkChildFields..

Gruß
Titel: Re: Textfelder dynamisch erzeugen
Beitrag von: MzKlMu am Juni 21, 2012, 18:24:21
Hallo,
Zitatalso die Tabelle Stadt gibt es nicht ;-) hatte ich nur als Beispiel vorhin, weil ich dachte es wär verständlicher.
ich finde es ärgerlich, wenn man hier Beispiele zeigt die man gar nicht hat. Du musst doch bedenekn, dass Du hier völlig falsche Vorraussetzungen schaffst. Wie Du ja an meiner Antwort gesehen hast.
Unter den neuen Bedingungen brauchst Du kein Ufo.
Formular zum Anlegen der Hotels mit 2 Kombis für Währung und Land.

Zitatdie Beziehung zwischen den Formularen, kann ich die über die Oberfläche herstellen?
Ja, natürlich. Du brauchst für diese Grundfunktionalitäten von Access kein VBA. Ich sehe da bis jetzt noch nirgends eine Notwendigkeit.
Titel: Re: Textfelder dynamisch erzeugen
Beitrag von: henfoni am Juni 25, 2012, 19:30:54
Hey,

ja war nicht so klug, so ein Beispiel auszudenken ;)
Genau, das eine Formular mit den beiden Kombis hat ich ja schon.
Nun gibt es noch verschiedene Perioden zu den Hotels, die Hotels können unterschiedliche Anzahlen von Perioden haben.
An dem Punkt hapert es nun leider. Du hast mir ja hier als Tipp gegeben mit gebundenen Formularen zu arbeiten, da ich ja nicht genau weiß, wieviel Perioden hinzugefügt werden. Ich weiß leider nicht, wie ich dies umsetzen kann.

Schönen Gruß
Titel: Re: Textfelder dynamisch erzeugen
Beitrag von: MzKlMu am Juni 25, 2012, 19:46:21
Hallo,
vermutlich fehlt hier noch eine Tabelle.
Zeige mal ein Bild der aktuellen Beziehungen, oder lade die aktuelle DB mal hoch.

Was sind denn das für Perioden, Haupt, Nebensaison etc. ?
Titel: Re: Textfelder dynamisch erzeugen
Beitrag von: Beaker s.a. am Juni 25, 2012, 21:47:36
Hallo Henfoni,
ZitatNun gibt es noch verschiedene Perioden zu den Hotels, die Hotels können unterschiedliche Anzahlen von Perioden haben.
An dem Punkt hapert es nun leider. Du hast mir ja hier als Tipp gegeben mit gebundenen Formularen zu arbeiten, da ich ja nicht genau weiß, wieviel Perioden hinzugefügt werden. Ich weiß leider nicht, wie ich dies umsetzen kann.
Hast Du #7 nicht gelesen?
ZitatStadt:        Stadt_ID, Land_ID, Stadt_Name, Kurzbeschreibung
Periode:     Periode_ID, Stadt_ID, von, bis, Parkgebühr
Diese Tabellen setzt Du 1:n in Beziehung über die Stadt_ID, -
Tabelle "Stadt" = 1 - Tabelle "Periode" = n
Hauptformular gebunden an Tabelle "Stadt" mit einem UFo, das an die
Tabelle "Periode" gebunden ist, und mit dem HFo über die Felder mit
der/den Stadt_IDs verknüpft ist.
1 : n heisst: EINE (1) Stadt mit BELIEBIG VIELEN (n) Perioden.
hth
gruss ekkehard
Titel: Re: Textfelder dynamisch erzeugen
Beitrag von: MzKlMu am Juni 25, 2012, 22:23:45
@ekkehard
lies mal #10.
Die Tabelle Stadt gibt es ja gar nicht. Er erklärt hier Tabellen, die er gar nicht hat, was ich besonders ärgerlich fand. (siehe #12). Wobei nach den neueren Erklärungen er doch wieder ein Ufo braucht für die Perioden. Und damit natürlich Deine Antwort sinngemäß auch für Hotelperioden zutreffend ist.
Titel: Re: Textfelder dynamisch erzeugen
Beitrag von: Beaker s.a. am Juni 25, 2012, 23:27:56
Hallo,
@MzKlMu
Ja, ich hatte nur noch den zitierten Post gelesen, und
gedacht, das ist doch schon beantwortet. Die anderen
Posts hatte ich da nicht mehr im Kopf/noch mal gelesen.

@henfoni
Replace( _
          Expression:="MeinPost", _
          Find:="Stadt", _
          Replace:="Hotel")

gruss ekkehard
Titel: Re: Textfelder dynamisch erzeugen
Beitrag von: henfoni am Juni 28, 2012, 14:37:27
Moin,

danke für eure Mühen. Ja ich weiß ich sollte reale Beispiele verwenden, mach ich in Zukunft! ;)
Folgenden Tabellen möchte ich befüllen: Hotel, Land, Währung, Perioden.
Die Beziehungen habe ich schon über die IDs hergestellt.

Ein Hotel gehört zu genau einem Land und hat genau eine Währung. Ein Hotel hat mehrere Perioden, dies sind Zeiträume von 1-2 Monaten, variiert je Hotel. Die Tabellen Land und Währung sind von mir bereits gefüllt. Zu jedem Hotel soll über eine Combobox jeweils das Land und die Währung gewählt werden.

Ich habe wie ihr es vorgeschlagen habt, gebundene Hafos und Ufos mal erstellt. Das Problem ist nur, ich möchte ein Hotel gleichzeitig mit den Perioden in einem Schritt anlegen. Da kann ich ja nicht gebundenen Formularen arbeiten, da ich ja noch keine vergebene Hotel_ID habe...

Gruß

Titel: Re: Textfelder dynamisch erzeugen
Beitrag von: DF6GL am Juni 28, 2012, 15:11:08
HAllo,

"ich möchte ein Hotel gleichzeitig mit den Perioden in einem Schritt anlegen."   ??


Wenn Du ein Formular mit Basis zu Tabelle "tblHotels" (an diese Tabelle "gebunden")  machst, dann wird/kann

1) der Primärschlüssel (sofern Autowert) von Access automatisch eingesetzt.
2) die Auswahl des zugehörenden Landes über ein Kombifeld geschehen, das an das Feld "Hotel_LandID" in Tabelle "tblHotels" gebunden ist und seine Listenfelddaten aus Tabelle "tblLaender" bezieht.
3) dito für die Währung: Ein an Feld "Hotel-Waehrung" in "tblHotels" gebundenes Kombifeld eingebaut werden, das die Auswahl aus den  Währungen, die in "tblWaehrungen" gespeichert sind ermöglicht.

Für die "Perioden" eines Hotels wird eine weitere Zuordnungs-Tabelle "tblHotelPerioden" benötigt, die mind. folgende Felder haben sollte:

HPID (PK,Autowert)
HP_PID  (Zahl, Long , Fremdschlüsselfeld für die Perioden-ID  aus "tblPerioden")
HP_HID  (Zahl, Long, Fremdschlüsselfeld für die Hotel-ID  aus "tblHotels"

Auf Basis dieser Tabelle wird ein Endlosform erstellt, das im (Haupt)-Form "frmHotels" als Unterformular(-Steuerelement) eingebaut wird. Die Eigenschaften "Verknüpfen von/Nach" dieses UFO-St.-El. werden jeweils auf die Felder "HP_PID" und "HPID" gesetzt.

Titel: Re: Textfelder dynamisch erzeugen
Beitrag von: MzKlMu am Juni 28, 2012, 15:18:09
Hallo,
ZitatDa kann ich ja nicht gebundenen Formularen arbeiten, da ich ja noch keine vergebene Hotel_ID habe...
Selbstverständlich kannst Du da mit gebunden Formularen wie gehabt arbeiten. Sobald ein Hotel im Hafo angelegt ist, ist die ID bekannt und wird autoamtisch im Ufo zum Anlegen der Perioden verwendet. Du musst nur die Reihgenfolge einhalten, erst Hotel dann Perioden, was ja auch Sinn macht.

Und außerdem fehlt noch die von Franz vorgeschlagene Tabelle zur Herstellung der n:m Beziehung zwischen Hotel und Perioden.
Wie ich bereits in #14 vermutet habe.

Und löse Dich von dem Gedanken irgendwo ungebundene Formulare einsetzen zu müssen. Das geht ausnahmslos alles mit gebundenen Formularen, ohne Einschränkung.
Titel: Re: Textfelder dynamisch erzeugen
Beitrag von: henfoni am Juni 28, 2012, 15:54:18
Hey Leute,

danke für eure Hilfe. War ne schwere Geburt, aber habs nun hinbekommen! Ich kam die ganze Zeit nicht auf die Idee, dass ich die gebundenen Formulare ja auch beliebig anpassen kann mit den Komboboxen... 
Eine Frage hätte ich dann aber noch. Wie kann ich Bedingungen fürs Unterformular einbauen? Im Sinne von: der nächsteingetragene Wert bei den Perioden muss weiter in der Zukunft liegen als der vorherige?

Danke und Gruß
Titel: Re: Textfelder dynamisch erzeugen
Beitrag von: henfoni am Juni 28, 2012, 16:03:45
Zitat von: MzKlMu am Juni 28, 2012, 15:18:09
Und außerdem fehlt noch die von Franz vorgeschlagene Tabelle zur Herstellung der n:m Beziehung zwischen Hotel und Perioden.
Wie ich bereits in #14 vermutet habe.
hier mal die Beziehungen zur Verdeutlichung

[Anhang gelöscht durch Administrator]
Titel: Re: Textfelder dynamisch erzeugen
Beitrag von: MzKlMu am Juni 28, 2012, 16:11:40
Hallo,
hat eine Periode keinen Namen oder Bezeichnung?
Welchen Sinn soll es haben, einfach das Datum zu erfassen, wenn man nicht weis, was das für eine Periode ist.

Vieleicht erklärst Du mal die Bedeutung einer Periode.
Titel: Re: Textfelder dynamisch erzeugen
Beitrag von: henfoni am Juni 28, 2012, 16:35:03
Hier nun mal alle Beziehungen. Ein Hotel hat mehrere Perioden, in jeder Periode gibt es zu unterschiedlichen Zimmerkategorien Einzel- und Doppelzimmerkosten sowie Dritte-Person-Kosten. Diese hängen von einer Altersstaffelung ab, die pro Hotel variabel ist (0-4, 4-11, 11-100 z.B.).
Es gibt dann noch Transferkosten, die nur vom Hotel abhängig sind.
Die Verpflegungskosten variieren von Periode zu Periode. Hierbei kann es allerdings sein, dass es verschiedene Altersstaffelung im Hotel bzgl. 3. Person und Verpflegung gibt.
EK steht in den Tabellen jeweils für Einkaufspreis


[Anhang gelöscht durch Administrator]