Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Kombinationsfelder MIT MEHRAUSWAHL voneinander abhängig

Begonnen von Andi123x4, April 07, 2022, 13:14:57

⏪ vorheriges - nächstes ⏩

Andi123x4

#45
@DF6GL Also das mit dem Anzeigen der Subtasks zu den Tasks mit 2 UFO's hat genauso funktioniert wie Du gesagt hast, Perfekt! Das ist schon mal genauso wie ichs brauche.

Nachtrag: Ich habe es hinbekommen, vielen Dank für die Hilfe!
  •  

Andi123x4

#46
@DF6GL
Seit der Umstrukturierung werden in den Tabellen immer wieder Neue Datensätze eingefügt mit (Ich denke) den ID's von anderen Tabellen. Ich kann nicht genau sagen wann und wie der Fall auftritt, aber vielleicht wisst ihr trotzdem woher das kommt ? (Ich denke es hat was mit meiner Datensatzquelle zu tun im Formular)

Also zB wenn ich ein neues Projekt erstelle und dann ein paar Subtasks hinzufüge und wieder welche lösche über das Formular sieht es so aus ->
  •  

Andi123x4

Nachtrag: Ich habe als Steuerelementinhalt immer das Feld angegeben in dem die Werte gespeichert werden und als Datensatzherkunft eine andere Tabelle, damit der Name angezeigt wird vom Subtask z.B und nicht dessen ID.
Ist hier irgendwo der Fehler ?
  •  

DF6GL

Hallo,

mir ist nicht klar, was Du meinst.

 immer wieder Neue Datensätze eingefügt mit (Ich denke) den ID's von anderen Tabellen.

WO (in welche Tabelle) werden die Ds eingefügt?


Lad die DB hier hier und beschreibe daran genau, was Du machst und dabei passiert.

Andi123x4

Ich habe die Datei jetzt schon mehrmals komprimiert, aber sie hat immernoch 3,4MB also kann ich sie nicht hochladen leider, gibt es da einen Weg ?
  •  

DF6GL

Hallo,

lösche (entferne)  alle Bilder aus den Forms und Reports, falls vorhanden und lösche die Inhalte eventueller OLE-Objekt-Felder. 

Falls schon exzessiv Daten eingeben sind, dann lösche diese bis auf ein paar funktionsfähige Beispieleinträge.

Komprimiere dann nochmals.

Andi123x4

Hallo Ich habe jetzt die ganze zeit versucht die Datei kleiner zu bekommen und habe wirklich so gut wie alles gelöscht, keine Bilder vorhanden und auch so gut wie keine Datensätze, Formulare, es hat sich nichts geändert an der Datengröße

Komischerweise ist die alte Datei sogar kleiner mit mehr Formularen und Daten + Bildern
  •  

HB9876

Zitat von: Andi123x4 am April 28, 2022, 13:15:07Hallo Ich habe jetzt die ganze zeit versucht die Datei kleiner zu bekommen und habe wirklich so gut wie alles gelöscht, keine Bilder vorhanden und auch so gut wie keine Datensätze, Formulare, es hat sich nichts geändert an der Datengröße

Komischerweise ist die alte Datei sogar kleiner mit mehr Formularen und Daten + Bildern
Kompriemieren und reparieren probiert?
Mit jeder Antwort komme ich weiter und lerne.<br /><br />Danke!!!
  •  

Andi123x4

Ja nach jeder Änderung sogar, also habe es bestimmt 30x komprimiert aber irgendwie tut sich nicht wirklich viel
  •  

DF6GL

Hallo,

schick mir mal die DB (gezippt) ausnahmsweise an meine Email-Adresse  d f  6 g  l
(ä t)
ge em ix punkt de e

Andi123x4

  •  

DF6GL

Hallo,


damit alle etwas davon haben,
hier der Wortlaut der EMail und meine Kommentare.


Zitat von: undefinedProblem (1)
Also wenn man im Formular frmProjectOverview den Button ,,New Project Job" drückt und ein neues Projekt erstellt, und dort ein Type of Service auswhält z.B. wird dieser Type of Service mit seiner ID in die Tabelle ,,tblTypeOfService" gespeichert und dann hat man bei der Auswahl immer eine ,,8" z.B
Das selbe Problem hatte ich mal bei Subtasks und Tasks aber aktuell nicht mehr. Ich verstehe ungefähr woher das Problem kommt aber nicht wie man es umgeht.

Das Kombi ist falsch eingestellt.  Zwei Spalten und nur eine Spaltenbreite. Der Steuerelementinhalt muss das entspr. Fremdschlüsselfeld (Proj_TypeOfService) aus  tblProject sein. Konsequenterweise sollte das Feld ,,Proj_ToSID_F"  heißen. Die ,,8" (Schlüsselwert) ist richtig und muss so sein.



Entferne grundsätzlich alle Abfrage-Strings aus den Eigenschaften ,,Datenherkunft" der Formulare und schreibe lediglich den Tabellennamen dort hinein, auf den sich das Formular bezieht. Vor allem verknüpfende Abfragen  (inner Join, left join, etc) sind in aller Regel anfänglich nicht erforderlich und sorgen eher für unerklärliche Fehlersituationen, wenn z. B. die Abfrage dadurch nicht aktualisierbar ist.



(Manche Kollegen plädieren für das Gegenteil, m. E. macht es aber das Leben in der ersten Entwicklungsphase einfacher, weil man sich nicht um Tabellenfeld-Änderungen in der Datenherkunft zu kümmern braucht.  Das Formular meckert schon lautstark, wenn es ein geändertes oder zusätzliches Feld nicht findet).

Das gilt aber nicht für die SQL-Strings in der Datensatzherkunft von Kombifeldern.


Zusätzlich ist es zweckmäßig, vor allen Dingen, wenn keine grundlegenden Benamsungsregeln vorliegen, die Steuerelementnamen in Forms und Reports gleich dem zugeordnetem Tabellenfeld zu benennen.

Auch dies geht gegen die Meinung vieler Kollegen, aber mich nervt es ungemein, wenn ich bei jedem Tabellenfeld, das ich im Code oder anderswo benutzen will, erst mal den zugehörigen Steuerelementnamen suchen muss (bzw. umgekehrt)  Die DB ist dahingehend nicht von mir modifiziert 😉
.


Zitat von: undefinedProblem (2)
Wenn man in selbigen Formular (,,frmProject/Job") einen Doppelklick auf ,,Roles" macht, öffnet sich ein Popup mit dem die Rollen, Personen und Equipments zugeteilt werden sollen zum Subtask, welche dann Idealerweise in den vorgesehenen Feldern im Formular ,,frmProject/Job"  erscheinen.  Dort habe ich schon einiges Probiert mit Beziehungen etc. aber ich schaffe es nicht das es klappt.
Das Feld für die Rolle (in Form ,,subfrmSubtask") muss in ein Kombifeld geändert werden, das seine Daten aus tblPersonalroles bezieht und ,,PRID" als Fremdschlüsselwert in tblProSubTaskRoles ablegt.  (Prinzipiell wie bei den anderen Auswahl-Kombis.)


In einen solchen Datensatz ist das Feld ,,Persons" (PR_PersID_F) nicht sinnvoll, weil die Personen schon in einer Rolle hinterlegt sind und mehrere Personen umfassen kann.



Bei Kombi ,,PT_TaskID_f"  habe ich zur Demo die ,,Not in List"-Ereignisprozedur so geändert, als dass ein neuer Task in  tblTasks aufgenommen wird, wenn der neue Name in das Kombifeld eigegeben wird.

Das Tabellenfeld ,,Task_Status" ist sinnlos und sollte aus der Tabelle entfernt werden. Allenfalls macht ein Status in tblProjektTasks und/oder tblProjectSubTasks  Sinn.



Zitat von: undefinedProblem (3)
Beim erstmaligen Öffnen eines Berichts (Hier z.B. ,,rptChecklist") Friert Access für ca. 30 Sekunden ein und geht dann wieder. Sobald es einmal geöffnet wurde kann ich alle berichte immer öffnen ohne Probleme, bis ich einmal die Datei schließe und wieder öffne. Dann selbes Spiel.
Hängt das vielleicht damit zusammen, dass das Programm versucht den Bericht zu drucken ? Weil ich kann mich erinnern, dass ich mal einfach einen Bericht geöffnet hatte (Damals über VBA) und er diesen dann direkt drucken wollte.
Aktuell ist kein Drucker angeschlossen, daher findet er vielleicht keinen und sucht für 30 sek ?

Das Problem tritt bei mir nicht auf, ich habe allerdings Drucker in Betrieb.  Es kann gut sein, dass es sich um ein Drucker-TimeOut handelt.

Du hast doch sicher einen Pseudodrucker, wie z. B. MicroSoft PDF-Drucker?

Weiterhin:  Sortiere/Gruppiere Daten im Bericht selber und nicht in der Berichtsabfrage. Dieses wird vom Bericht in dieser Beziehung ignoriert.


Die DB habe ich mit Schalter /Decompile verarbeitet und damit die Dateigröße stark reduziert. Das Gleiche passiert, wenn die Db mit allen ihren Objekten in eine neue leere Datenbank importiert wird.





Zitat von: undefinedVielen Dank dass du mir so intensiv hilfst, ich habe wirklich schon einiges gelernt!
Ist aber trotzdem noch viel was ich nicht verstehe :D

Andi123x4

Hallo,

Zu (1):
- Genau das wars mit dem Kombi, danke!
- Das mit den Spalten, dachte ich dass man so macht, dass man die erste(Primärschlüsselspalte) auf 0 setzt, damit sie nicht sichtbar ist und man anhand des Namens auswählen kann und nicht anhand des Primärschlüssels, der einem nicht viel sagt
- Name des Feldes wurde geändert

- Vielen Dank für die Anmerkung, werde ich so umsetzen. Lediglich im "subfrmSubtask" habe ich die Verknüpfte Abfrage gelassen, damit ich die ID des zugehörigen "Tasks" daneben einblenden kann um direkt zu sehen, ob die Subtasks den richtigen Tasks zugewiesen sind.

-Das mit den geänderten Feldern ist sehr oft vorgekommen während des Erstellens, darum bin ich sehr dankbar über diesen Tipp mit der Datensatzquelle, das habe ich so nicht gewusst.

-Auch das mit den Steuerelementnamen ist sehr einleuchtend, werde ich umsetzen.

Zu (2):
- Wenn ich es zu einem Kombifeld ändere, dann habe ich aber wieder das Problem mit dem Filtern, weil ich ja eine Mehrauswahl benötige. Deswegen wurde ja extra das "frmTaskAcquisition" erstellt. Das funktioniert auch soweit, nur die Beziehungen passen noch nicht, damit die Zuweisung zum Subtask stimmt.
Das Listenfeld sollte eigentlich nur für die Darstellung sein, und das Formular für die Zuteilung.

-Das mit dem Feld PR_PersID_F, da verstehe ich leider nicht was du meinst. Ich weiß nicht ob ich es richtig ausgedrückt habe, aber es soll erst ausgewählt werden welche Rollen notwendig sind, und dann welche Person für diese Rolle verwendet wird (Von Auswahl der möglichen Personen mit dieser Rolle)

- Das mit dem Kombi Not-in-List: Ich muss zugeben der Code ist wesentlich kürzer und verständlicher für mich, aber wenn man ein zusätzliches Modul verwendet mit einer allgemeinen Methode, kann man diese auch gleich für Subtask verwenden ohne redundanten Code zu schreiben oder nicht ?

-Das mit Task Status stimmt wohl, das werde ich ändern

Zu (3):
- Perfekt das wars! Es war als Standarddrucker einer ausgewählt, der nicht einscgalten ist, habe jetzt den "Microsoft Print to PDF" als Standard markiert und jetzt öffnet es wieder ganz normal! Danke

- Danke, habe ich geändert.

- Was ist mit "Schalter Decompile" gemeint ? Das mit dem "in eine neue leere Datenbank kopieren" werde ich das nächste mal testen :)

  •  

DF6GL

Hallo,

Zitatdass man so macht, dass man die erste(Primärschlüsselspalte) auf 0 setzt, damit sie nicht sichtbar ist und man anhand des Namens auswählen kann

Ja, so macht man es klassisch, nur müssen halt dann auch die Spaltenanzahl und die Spaltenbreiten definiert werden.

ZitatWenn ich es zu einem Kombifeld ändere, dann habe ich aber wieder das Problem mit dem Filtern, weil ich ja eine Mehrauswahl benötige.


Warum? WAS und WIE willst Du denn filtern? Was heißt "Mehrauswahl" bei Dir?



ZitatNur die Beziehungen passen noch nicht, damit die Zuweisung zum Subtask stimmt.

Eher umgekehrt: Die Beziehungen stimmen, nur Deine "Zuweisungen" nicht.. Du musst genauer erklären, was genau Du machen willst.

Zitates soll erst ausgewählt werden welche Rollen notwendig sind, und dann welche Person für diese Rolle verwendet wird (Von Auswahl der möglichen Personen mit dieser Rolle)


In diesem Fall ist das Speichern der Rolle (Fremschlüssel) nicht richtig.( Beziehungen ändern!)

Es muss mit einem Vor-Auswahlkombi eine Rolle ausgewählt werden, die dann dafür sorgt, dass in einem MA-Auswahlkombi einer der dazugehörenden MAs ausgewählt und dessen MAID als Fremdschlüsselwert in der entspr. Tabelle gespeichert wird.



Zitatgleich für Subtask verwenden ohne redundanten Code zu schreiben oder nicht ?

Könnte man machen, aber bei nur einer Codezeile, die auch noch Variablen enthält, würde ich noch nicht  von Redundanz reden wollen.


ZitatWas ist mit "Schalter Decompile" gemeint ?

Das ist ein Kommandozeilen-Parameter, der dem Aufruf von Access mitgegeben wird und der u. a. dafür sorgt, dass Leichen und überflüssig gewordener Code entfernt und damit die Dateigröße verkleinert wird. Ähnliches passiert beim Imort in eine neue, leere DB-Datei

Andi123x4

ZitatJa, so macht man es klassisch, nur müssen halt dann auch die Spaltenanzahl und die Spaltenbreiten definiert werden.
Alles klar, ja das wusste ich nicht, hab es mal so in einem Video gesehen, dachte wenn man die erste (Schlüsselspalte) ausblendet und dann die Größe auf Automatisch stellt, dass es dann von alleine angepasst wird. Die Anzeige hatte ja soweit gestimmt, aber dann mache ich das in Zukunft, danke!

ZitatWarum? WAS und WIE willst Du denn filtern? Was heißt "Mehrauswahl" bei Dir?
Ahh sorry hatte da was verwechselt im Kopf das kannst du ignorieren.

ZitatEs muss mit einem Vor-Auswahlkombi eine Rolle ausgewählt werden, die dann dafür sorgt, dass in einem MA-Auswahlkombi einer der dazugehörenden MAs ausgewählt und dessen MAID als Fremdschlüsselwert in der entspr. Tabelle gespeichert wird.

Sieh dir mal das Formular "frmTaskAcquisition" an, da ist das ganze ja schon umgesetzt so wie du meinst denke ich, dieses würde ich auch gerne hernehmen für die Rollen + Personen und Equipments.
Nur die Datensatzquelle stimmt noch nicht, weil ich bei jeder Auswahl neue Datensätze in "tblPersonalRoles" anlege, was ja nicht gewollt ist, ich will lediglich aus dieser Tabelle auswählen und nicht hinzufügen. Habe aber noch keine Lösung dafür gefunden. Eigentlich müsste ja die Tabelle "tblProSubTaskRoles" die Datensatzquelle sein oder? weil darin will ich ja die Rollen und Personen speichern welche ich aus "tblPersonalRoles" ausgewählt habe, oder geht das mit der aktuellen Struktur nicht was ich vorhabe ?

ZitatKönnte man machen, aber bei nur einer Codezeile, die auch noch Variablen enthält, würde ich noch nicht  von Redundanz reden wollen.
Okay dann werde ich das auch so umsetzen für die Subtasks

ZitatDas ist ein Kommandozeilen-Parameter, der dem Aufruf von Access mitgegeben wird und der u. a. dafür sorgt, dass Leichen und überflüssig gewordener Code entfernt und damit die Dateigröße verkleinert wird. Ähnliches passiert beim Imort in eine neue, leere DB-Datei
Alles klar sowas in der Art hatte ich in Google gefunden danke!
  •