Hallo,
Würde bitte gern wissen wie man am besten ein gutes design für Formulare erstellt.
Also ich habe eine Db die aus einigen Tabellen besteht.
Unter anderem tblKunden, diese Tabelle ist mit tblRechnungen, tblKorrespondenz, tblProjekte und mehreren anderen verlinkt.
Da ich jetzt mit den formularen erstellen begonnen habe bin ich mir nicht sicher wie ich es am besten designen kann.
Einige Daten müssen noch kontrolliert werden, sprich projekte da viele Daten von früheren Excel tabellen und dergleichen übernommen worden sind.
Also ich denke da an eventuell register steuerelemente mit den verschiedenen Formularen. Das problem ist nur ich bin mir nicht sicher wie ich dann wenn daten geändert werden müssen vorgehen soll.
Kann man aus dem Register sagen wir ich erstelle eine Kunden Form als register und dann verschiedene reiter mit Rechnungen, Projekten und dergleichen.
Wie würde ich die einzelnen Formulare erstellen müssen damit ich diese mit hilfe eines Kombinationsfeld auswählen kann.
Oder welche Erfahrungen habt Ihr damit was wäre hier die beste Option um am schnellsten und effektivsten zum Ergebniss zu kommen.
Wäre Euch dankbar wenn Ihr vieleicht Tipps und Tricks bezüglich meines Anliegen hättet.
Oder vieleicht gibt es ja Formular Beispiele wie man eine etwas größere Db mit formularen bestücken soll oder kann.
Vielen Dank schon mal im Voraus!!
Lg Albert
			
			
			
				Hallo, guten Morgen Albert,
ZitatAlso ich habe eine Db die aus einigen Tabellen besteht
... der war nicht schlecht - im Ansatz ...  :D
Formulare mit Registerkarten sind Formularen mit Unterformularen recht ähnlich.
Sie bieten dem gegenüber noch die Möglichkeit mehrere Unterformulare in übersichtlicher Form einzusetzen.
Trotz dieser Möglichkeit(en) soll man aber nicht den Fehler machen und auf ein solches Formular jede Menge Register draufzuklatschen,
die Übersichtlichkeit ist dann schnell Vergangenheit und solche überladnene Formulare sind permanent Quelle von Fehlern.
Im Prinzip gibt das zu bearbeitende Themengebiet der Applikation in Verbindung mit dem Beziehungsfenster Auskunft darüber,
welche Daten in einem Formular mit Registern abgebildet werden können / sollen.
So kannst du einen zentralen Themenschwerpunkt in deinem Modell festlegen oder dieser ist von Anfang an schon festgelegt.
Ausgehend von diesem - nehmen wir konkret eine Kundentabelle her - liefert das Beziehungsfenster eindrucksvoll Informationen darüber,
welche weiteren Tabellen und somit Informationen mit einem Kunden in Beziehung stehen.
Soll nun ein Formular mit Registerkarten zur Datenpflege erstellt werden, schlage ich vor, den Kreis der fortführenden Informationen,
welche in den Registern abgebildet werden sollen, auf die erste Beziehungstiefe zu beschränken.
Somit wird recht schnell klar, dass nicht wirr und warr jede Menge Tabellen an einem solchen Formular beteiligt sein können.
Bei umfangreichen Datenbanken - so wie bei deiner - wird es mehrere unterschiedliche Schwerpunkte zu finden geben.
Das werden im Einzelnen die Kunden, die Lieferanten, die Projekte und die Rechnungen sein, wobei Projekte und Lieferanten den größten Informationsanteil
(bezogen auf die Anzahl der in Beziehung stehenden Informationen) ausmachen und somit diese 4 Themengebiete die Grundlage für 4 Formulare mit Registern sein KÖNNEN.
Prinzipiell ist es dann so, dass auf einem Hauptformular die zentralen Informationen abzulegen sind - um bei den Kunden zu bleiben - die wichtigsten Felder der Kundentabelle inkl. Primärschlüsselfeld.
Beinhaltet die Kundentabelle recht viele Felder, kann die erste Registerkarte dazu verwendet werden Felder der Kundentabelle aufzunehmen.
Für die weiteren Register gilt dann aber dass diese nur noch Unterformulare zur Kundentabelle enthalten sollten und keine Register vorhanden sein sollen, die auf Unterformulare Bezug nehmen.
Also nur Informationen die in erster Ordnung mit der Kundentabelle in Beziehung stehen.
Zum Design der Oberflächen allgemein ist zu sagen, dass es einerseits Vorgaben von einem Kunden geben kann, wenn du selbst aber dein Kunde bist gebe ich dir den Rat,
halte dich bei Farben und graphischen Elementen zurück, packe zusammengehörige Informationen vielleicht in Rahmen ein um sie rein optisch von anderen zu trennen.
Es gibt ein Menge von Tipps zur Formuargestaltung allgemein, in der Regel aber musst du selbst herausfinden - und wirst das auch - wie die Gestaltung am Besten
zu deinem Arbeitsstil passt (die rein technische Funktionalität ist davon NICHT betroffen, die MUSS gegeben sein)
Microsoft stellt hierzu einige Informationen und Richtlinien zur Verfügung:
http://msdn.microsoft.com/en-us/library/aa511258.aspx (http://msdn.microsoft.com/en-us/library/aa511258.aspx)
Im Anhang findest du zwei Screenshots eines Registerformulars als Beispiel, wie man es lösen KANN mehrere Informationsschwerpunkte
auf EINEM Formular unterzubringen ohne den Überblick zu verlieren.
HTH 
[Anhang gelöscht durch Administrator]
			
 
			
			
				Guten Morgen Peter,
vielen Dank für Deine mail und Deine Tipps und Tricks ;) ich hoffe ich werde es so in dieser Form umsetzen können :)
Wünsche noch einen schönen Tag!
Albert
			
			
			
				Hallo zusammen,
habe nun mit meinen Formularen angefangen und komm da wieder mal auf einige Probleme :( 
Momentan habe ich Tabellen die miteinander verlinkt sind da sind 1:N beziehungen und m:N beziehungen enthalten.
Leider komme ich da schon noch etwas durcheinander wie man das auf Formularen realisieren kann.
Es ist leider so das ich mich etwas im Kreis drehe :(
Wer kann mir denn bitte einen Tipp geben wie man solche etwas komplexen verknüpfungen von Tabellen richtig in Formularen verpackt.
Danke
Albert
			
			
			
				Hier habe ich eine Bild angehängt um die Struktur zu zeigen.
Vieleicht könnte mir nun jemand helfen richtig anzufangen.
Wäre Euch wie immer sehr dankbar!
Lg Albert
[Anhang gelöscht durch Administrator]
			
			
			
				Hallo,
habe nun eine Abfrage erstellt die mir alle Daten zurückgibt und in ein Formular gegeben mit dem Assistenten.
Wenn ich nun neue Datensätze eingeben möchte funktioniert das aber nicht obwohl ich bei allen ein(Neu) stehen habe.
Was mach ich denn falsch?
Danke
Albert
			
			
			
				Hallo Albert,
welches Formular möchtest du erstellen, was soll erfasst bzw. abgebildet werden?
			
			
			
				Hallo Peter ma Du bist meine Rettung :)
Also ich hätte mir die Werkzeuge und dergleichen gern vorgenommen :)
Aber ich komm immer irgendwie nicht zurecht.
Habe eine Abfrage erstellt wo Werkzeug Typ, Werkzeug Hersteller und Model enthalten sind das hab ich über den Assistenten dann in ein Formular gestellt und na ja ansehen kann ich es aber einfügen nichts.
Komm einfach nicht weiter immer irgendwo ein problem.
			
			
			
				Hallo Albert,
im Anhang ein kleines Beispiel mit Formular aufbauend auf die Tabellen in deiner DB.
Mittels des Formulars ist es möglich die Tabelle tblHerWerk mit Daten zu befüllen und die getätigten Eingaben in einer Liste darzustellen.
HTH
[Anhang gelöscht durch Administrator]
			
			
			
				Hallo Peter,
das ist wirklich total nett von Dir!! 
Das Du mir so viel hilfst!!
Aha verstehe das Formular! Sieh ja gut aus!
Ich muss leider jetzt weg aber könntest Du mir vieleicht erklären wie man ein Formular richtig aufbaut.
Was ich damit meine ich habe grosse schwierigkeiten Formulare zu erstellen wenn viele verschiedene Tabellen zueinander verlinkt sind.
Da weis ich nie wie oder wo ich anfangen muss oder soll damit das auch etwas wird.
Bin wie gesagt jetzt einige Stunden leider nicht da aber vieleicht gibt es ja da eine kleine Anleitung die ich dann auch umsetzen kann.
Heute war leider nicht grad produktiv :( 
 
Vielen vielen Dank!!!
Schönen Abend wünsch ich Dir noch!
Albert
			
			
			
				Hallo Albert,
folgende Grundlegende Infos zu Formularen - natürlich vollkommen unvollständig, da sich so ein komplexes Thema nicht mal in einem dicken Buch vollständig abhandeln läßt.
Soll aber einfach ein paar Gedanken anregen...
Das Wichtigste beim Erstellen eines Formulars ist es zu wissen, was es leisten soll.
Somit ergibt sich automatisch die Grundlage, also das Wissen, welche Tabelle(n) beim Erstellen
des Formulars vewendet werden sollen.
Nun ist es so, dass bei Formularen, die auf Tabellen aufsetzen, welche in 1:n Beziehungen stehen,
eine der Tabellen die Hauptrolle spielen wird.
Im konkreten Fall war es die Tabelle tblHerWerk, in der Informationen zu Herstellern,
Werkzeugen und Modellen derselben gespeichert werden sollen. Die hier eingetragenen Daten können dann 
wiederum selbst zu einer Nachschlagetabelle werden, die bei der Erfassung erweiterter Informationen herangezogen wird.
Zurück zu den 1:n Beziehungen - diese spielen jedenfalls eine wichtige Rolle, da aus diesen Tabellen (man kann sie auch als Nachschlagetabellen bezeichenen)
die Fremschlüssel stammen, welche in der 'zentralen' Tabelle gespeichert werden.
Wie du am Beispiel sehen kannst, werden in deinem Formular zur Datenerfassung nur Kombifelder verwendet,
da alle zu erfassenden Daten für die tblHerWerk aus Fremdschlüssel bestehen.
Die Kombifelder cboWerkzeugTyp und cboWerzeug stellen hierbei sg. abhängige Kombifelder dar.
Dieses bedeutet, dass nach Auswahl eines Werkzeugtyps nur noch jene Werkzeuge
im Kombi cboWerkzeug zur Auswahl stehen, deren Typ der zuvor getroffenen Auswahl entspricht.
Da das Formular auch in seiner Funktionalität absolut einfach gehalten ist, sind in diesem keinerlei Fehlerbehandlungen integriert.
Am Beispiel der angezeigten Werkzeugliste, die alle erfassten Werkzeuge nach
Herstellern sortiert ins Bild bringt, kannst du sehen wie aus den Fremdschlüsseln die passenden
Texteinträge der Herkunftstabellen gewonnen und dann in diesem Listenfeld angezeigt werden.
Statt dem gezeigten Listenfeld kann natürlich auch ein Unterformular verwendet werden,
wobei mit diesem dann noch umfangreichere Datenmanipulationen ermöglicht werden.
So ist in deinem Formular keine Möglichkeit enthalten einmal eingegebene Daten nachzubearbeiten oder zu löschen.
 
Puncto Funktionalität sind bei einem Formular kaum Grenzen gesetzt. Durch den Einsatz von VBA kann
so eine echt anspruchsvolle Oberfläche gestaltet werden, die alle Möglichkeiten der Datenbearbeitung
erlaubt. Dies kann abseits einer einfachen Datenerfassung durch gut ausgeklügelte Prozeduren eine Eingabeüberprüfung zur Verfügung stellen,
durch die Kombination mit benutzerdefinierten Funktionen umfangreiche Berechnungen anstellen und die ermittelten Werte in die Tabelle übernehmen,
als Basis für den Mailversand und vielen anderen Funktionalitäten dienen.
Am Besten wird sein, du versuchst dich an den einfachen Dingen zuerst.
Erstelle kleine einfache Formulare zum Erfassen der Nachschlagewerte.
Implementiere in diesen die Möglichkeit die Eingaben zu editieren und versuche mal eine Funktionalität einzubauen,
die es verbietet Datensätze zu löschen, die in anderen Tabellen als Fremdschlüssel eingetragen sind und
KEINE Access Standardmeldung beim Versuch ausgibt dieses dennoch zu tun.
Zeige in einem Listenfeld auf diesen Formularen die eingetragen Werte an und verhindere, dass gleiche Daten mehrfach eingegeben werden können.
Bei der Größe Deiner Datenbank denke ich, hast du da einige Zeit zu tun damit und kannst eine Menge dazulernen, speziell auch deswegen, weil die 
Aufgabenstellung recht übersichtlich ist und die Funktionalität der Formulare überschaubar bleibt.
HTH
			
			
			
				Hallo Peter,
danke für die Erklärung bin grad auf den Sprung aber wollte mich gern schnell bei Dir bedanken!
Das hilft mir sicherlich weiter zusammen mit deinen Formular bin ich mir sicher das ich wieder ein Stück näher gekommen bin.
Bin Heute den ganzen Tag unterwegs aber werde es mri am Abend näher ansehen und wieder weiter probiere.
Schönen Tag wünsche ich Dir!
Grüße aus Tirol :)
Servus 
			
			
			
				Guten Morgen Peter,
hab Dein Formular nun in meiner aktuellen Db eingefügt.
Wenn ich nun den Werkzeug Typen in diesen formular ändern will bekomme ich einen Laufzeitfehler...
Sie wollten den Null Wert einer Variablen zuweisen, die nicht den Datentyp Varian hat.
Der Fehler tritt im cboMe.werkzeug = ""
Private Sub cboWerkzeugTyp_AfterUpdate()
    Dim rst As DAO.Recordset
    Dim strListe As String
    
    Set rst = CurrentDb.OpenRecordset("SELECT * FROM tblWerkzeug WHERE Werk_Typ_id_f=" & Me.cboWerkzeugTyp)
    
    If rst.RecordCount > 0 Then
        rst.MoveFirst
        Do While Not rst.EOF
            strListe = strListe & rst!Werk_ID & ";" & rst!WerkName & ";"
            rst.MoveNext
        Loop
    End If
    
    With Me.cboWerkzeug
        .ColumnCount = "2"
        .ColumnWidths = "0cm;4cm"
        .RowSourceType = "Value List"
        .RowSource = strListe
    End With
    
    Me.cboWerkzeug = ""
    Set rst = Nothing
    
End Sub
Was soll denn in diesen Code geändert werden damit dieser Fehler nicht mehr auftritt?
Vielen Dank
Albert
			
			
			
				Guten Morgen,
bin nur ganz kurz angebunden ...
Me.cboWerkzeug = Null
			
			
			
				Guten Morgen ist schon ok""
Leider war es das nicht :(
Immer noch ein fehler.
Kein Stress aber natürlich!
			
			
			
				Hallo Albert,
vielleicht liegt's an der Bergluft ...   ;) :D :D
sieh mal im Anhang!
[Anhang gelöscht durch Administrator]
			
			
			
				Danke Peter,
aber es ist schon zum verrückt werden hab Deinen Code in meinen formular eingegeben den Du hattest und bekam immer noch den Fehler.
Hab dann Dein formular exportiert und hat geklappt :)
DAnke für Deine Mühe !!!
Hab jetzt ein Formular mit Kunden erfasst.
Ein Registersteuerelement mit Kunden Projekte Rechnungen also die drei Reiter auf dem Steuerelement.
In Kunden habe ich folgendes 
Kunden Stammdaten und zwei Unterformulare
1UF Kunden Gruppe wo ich anhand eines Datenblattes die Kundengruppe des jeweiligen Kunden erfassen kann.
2UF Korrespondenz 
Projekte 
Dort werden nun die Kunden Projekte erfasst auch mittels datenblatt 
Rechnungen 
1UF Rechnungen des ausgewählten Kundens
2UF Rechnungs Details synchronisiert mit dem 1UF
Also das funktioniert mal schon :) Deine Meinung dazu bitte? Ist das so ok oder nicht gut?
Nun sollte ich ja diese Rechnungen mit Rechnungs Details auf KontoLink übertragen.
Aber bei dieser Tabelle steh ich nun an.
Leider verstehe ich die tabellen die folgenden Tabelle nicht ganz :(
tblKontoLink
1. Sollte dort nicht das Datum enthalten sein wo ich diese Rechnung vom Kunden bezahlt bekomme?
2. Wie soll den diese Tabelle genau funktionieren? Soll hier die Rechnung eingetragen natürlich mit link. werden und dann in das feld Soll eingetragen werden? Und dann das dazugehörige Konto eingefügt werden.
3. Was ist mit den anderen Feldern? Die werden ja dann im diesen Fall zunächst nicht gebraucht oder?
tblBestellungen & tblBetriebsausgaben
Bei den Bestellungen habe wir ja immer einen Steuersatz 20% in diesen Fall wäre da nicht besser dort den link zu Steuern herzustellen?
Wenn diese Bestellungen in die tblKontoLink fliesen wie werden die dort erfasst?
Hab leider noch immer meine Steuern nicht abgeben können :( sollte es aber bald machen ... hab ja die Excel informationen schon fertig mehr oder weniger aber ich verstehe die Tabellen verknüpfung leider noch nicht ganz hundertprozentig.
Ich weis das Du sehr viel Arbeit hast aber ich wäre Dir sehr dankbar wenn Du vieleicht mir wieder einmal auf die Sprünge helfen könntest.
Zumiendest kann ja a schon ein paar formulare gestallten und synchronisieren ggg also auch ein blindes Huhn finde mal..... :)
Wirklich herzlichen Dank!!!
Werden da so
3. 
			
			
			
				Guten Morgen liebe Access Profis!!
Erstelle gerade ein Suchformular.
cboTyp zeigt mir die datensätze aus tblWerkzeugTyp an 
cboWerkzeug zeigt mir die datensätze der tblWerkzeug an und ist synchronisiert mit dem cboWerkzeugTyp combofeld.
So weit hab ich es auch mal geschafft ggg!! 
Jetzt möchte ich zusätzlich auswählen können welcher Hersteller welche Werkzeuge verkauft.
Wichtig ist aber auch zu wissen welcher Lieferant diese Werkzeuge verkauft. Also noch ein Filter kriterium.
Würde hoffen jemand könnte mir weiterhelfen.
Vielen Dank
Albert
			
			
			
				Ich glaub ich bin jetzt auf den richtigen Weg.
Habe eine Abfrage erstellt und diese in ein Formular mit Unterformular gespeichert.
Nun habe ich das UF in das HF eingefügt mit Assistenten.
In meinem HF sind zwei Comboboxen die synchronisiert sind.
Also wie schon besprochen Typ auswahl filtert Werkzeug.
Jetzt soll wenn das Werkzeug selectiert wird das UF gefiltert werden.
Code habe ich hier.
Private Sub cboWerzeug_AfterUpdate()
frmWerkTyp.Form.Filter = "[Werk_id] ='" & cboWerkzeug & "'"
Supplier.Form.FilterOn = True
End Sub
Da fehlt aber noch eine Variable denk ich weis aber leider nicht welche ich für eine Form brauche.
Vielen Dank für Eure Hilfe!!
			
			
			
				Hallo,
Du mußt Dich bei dieser Filtermethode  jedesmal auf dasselbe Form beziehen.  
Private Sub cboWerKzeug_AfterUpdate()
Me!frmWerkTyp.Form.Filter = "[Werk_id] ='" & cboWerkzeug & "'"     'falls Werk_ID wirklich vom Datentyp  Text  ist...
Me!frmWerkTyp.Form.FilterOn = True
End Sub
			
			
			
				Hallo"
Danke für Deine Antwort!
Hab die cbobox richtig benannt.
Leider gibt es mir noch immer eine Fehler Meldung.
Werk_id... bin mir leider nicht sicher ob es Datentyp Text ist.
Hab nur in HF ein combobox aus tblWerkzeug eingefügt mit Werk_id und WerkzeugName
			
			
			
				Hallo,
"Werk_id... bin mir leider nicht sicher ob es Datentyp Text ist."
dann schau halt mal nach....  ::)
			
			
			
				:( ja also in der tblWerkzeug ist die Werk_id
und dort ist sie das Autofeld.
Oder was verstehe ich da wieder mal nicht ??? 
Das ist ja LongInteger.
			
			
			
				Hallo,
dann muß  der Code so aussehen:
Me!frmWerkTyp.Form.Filter = "[Werk_id] =" & Me!cboWerkzeug  
wiederum unter der Voraussetzung, dass in der Kombifeldliste der Wert für Werk_ID in der ersten (Spalte 0) steht.
(btw.: Der Verweis auf das akt. Form-(Objekt)  (--> ME)  sollte nie unterschlagen werden)
			
			
			
				Hallo danke nochmals für die Antwort.
Es wird besser aber es filtert mir leider die subform noch nicht :(
Habe die Subform mittels Assistenten eingefügt.
Der hat mir die Verknüpfung von bzw. Verknüpfung mit automatisch eingefügt. (Access 07)
Den Code habe ich nun in meiner combobox eingetragen.
Private Sub cboWerkzeug_AfterUpdate()
Me!subfrmModel.Form.Filter = "[Werk_id] =" & Me!cboWerkzeug & ""
Me!subfrmModel.Form.FilterOn = True
End Sub
Wenn ich die Form nun aufmache und in den beiden ersten comboboxen eine auswahl treffe kommt eine Parameter eingabe...
Leider weis ich nicht was ich da falsch habe :(
Danke
			
			
			
				Hallo an alle!!
Ich habe es geschafft und jetzt funktioniert es!!
Hatte meinen Code falsch  :o bin aber selbst nun drauf gekommen yohooo ;)
Lg bis bald gg 
Albert
			
			
			
				Ma jetzt kenn ich mich aber dann gar nicht mehr aus :( 
DAchte es wäre geritzt aber leider noch nicht ....
Jetzt filtert er mir zwar das UF aber nur die erste Werk_id ???
Was kann denn da jetzt mal wieder nicht stimmen?
Also ich wähle den Typen aus der filtert mir die zweite combobox. Und diese zweite combobox filtert mir nun auch das UF aber zeigt mir nur den ersten Werk_id_f an.
Ich glaub da könnt Ihr mir nicht helfen oder weil ich weis nicht wie ich es besser erklären könnte :(
			
			
			
				Hallo,
"Jetzt filtert er mir zwar das UF aber nur die erste Werk_id"   
ja, das soll doch auch...  Warum aber "ERSTE" Werk_id...   es dürfte nur EINE Werk_ID geben mit einem bestimmten Wert (der im Kombo ausgewählt wurde)...
"zeigt mir nur den ersten Werk_id_f an" 
jetzt plötzlich "Werk_id_f"  ???
vermutlich wirfst Du die Felder durcheinander und willst sowas:
Me!subfrmModel.Form.Filter = "[Werk_id_f] =" & Me!cboWerkzeug & ""
			
			
			
				Ja ich kenn mich ja auch nicht mehr aus ggg das ist ja das problem.
Was ich meinte das UF ändert sich schon und gibt mir auch keine Fehlermeldung mehr an aber es sollte sich mir doch die daten anzeigen und das macht es halt nicht.
Hier ist mein geänderter Code
Private Sub cboWerkzeug_AfterUpdate()
Me!subfrmModel.Form.Filter = "[Werk_id_f] =" & Me!cboWerkzeug & ""
Me!subfrmModel.Form.FilterOn = True
End Sub
Danke
			
			
			
				Zitat von: silentwolf am April 21, 2011, 15:16:10
Me!subfrmModel.Form.Filter = "[Werk_id_f] =" & Me!cboWerkzeug & ""
N'abend
unter der Annahme: die id ist eine Zahl: was passiert ohne den roten Teil?
unter der Annahme: die id ist ein String: Me!subfrmModel.Form.Filter = "[Werk_id_f] ='" & Me!cboWerkzeug & "'"
Harald
			
 
			
			
				Hallo Harald,
danke für Deine Nachricht!
Jetzt hab ich es doch noch allein zusammen gebracht :) 
Habe nur das UF mit dem Werk_id_f feld eingebunden gesichert und dann in mein HF eingefügt.
Der AfterUpdate Code blieb dabei unverändert :)
Trotzdem vielen Dank an alle die mir immer so viel helfen!!!!
Frohe Ostern ;)
Albert