Neuigkeiten:

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

Mobiles Hauptmenü

Formular mit Vorfilter öffnen

Begonnen von Sonnensalat, Mai 31, 2016, 15:10:45

⏪ vorheriges - nächstes ⏩

Sonnensalat

#45
Hallo zusammen,

@Hallo Klaus
Zitatein Formular ist zum Drucken ungeeignet.

Okay, dann werde ich mal Berichte recherchieren.

Noch was mir in der DB aufgefallen ist und ich nicht weiß wie ich das beheben kann:

1. In dem frmMerkmalZuordnen kann ich zwar die Zuweisungen einstellen, aber im frmErfassen dann nicht korrekt auswählen. Es werden einfach alle Merkmale angezeigt. Ich wollte das Problem lösen, indem ich erstmal alle Test-Datensätze lösche, wobei ich bei Punkt
2. ankomme. Datensätze können nicht gelöscht werden. Das wäre aber schon schön, oder gibt es noch eine Regel von der ich nichts weiß die sagt, DS löscht man nie! :)
3. Als ich die Merkmale den Apparaten zuordnen wollte - in einer sinnvollen Reihenfolge - ist mir aufgefallen, dass der ApparateArtID_F (Behälter, Reaktor usw) nicht so funktioniert wie geplant. Wenn du im frmErfassen Datensatz 1 und 4 vergleichst (Beide vom Typ Behälter) werden unterschiedliche Merkmale in abweichender Sortierung angezeigt. Ich steige da nicht durch.

EDIT: Ich habe die falschen Tabellenbezeichnungen jetzt alle auf einen Stand gebracht, auch im Code: Tippfehler bei tblMerkmalzuApparat und frmErfassungUfoIReparaturÄnderung.

Dachte es lag daran, aber es hat sich nichts geändert.

Gruß

MzKlMu

Hallo,
also bei mir funktioniert Punkt1 mit Deiner DB einwandfrei.
Du machst Du Zuweisung und schleißt dann dieses Formular und wechselst dann zum Formular "frmErfassung".
Dann werden bei Klick auf den Button genau die Merkmale angezeigt die auch passen. Und was willst Du da überhaupt auswählen. da muss doch nichts ausgewählt werden.

Zum Löschen.
In den Beziehungen ist referentielle Integrität ohne Löschweitergabe eingestellt. Das bedeutet, wenn Du einen Apparat löschen willst, müssen erst die abhängigen Daten in der Tabelle "tblMerkmalzuApparat" gelöscht werden. Das kannst Du umgehen, in dem man die Löschweitergabe aktiviert. Dazu dieBeziehungslinie doppelt klicken.

3)
Wenn eine Apparateart gewählt wurde und der Button geklickt wurde, so kann nachträglich die Apparateart erst geändert werden, wenn die Merkmaldatensätze die automatisch erstellt wurden vorher löscht. Wenn man das nicht macht, werden bei Änderung einer Apparateart neue DS angefügt aber die vorherigen sind nicht gelöscht und demzufolge falsch.

Ich habe keinen Fehler in der DB festgestellt.
Du musst das Prinzip unbedingt verstehen, sonst hast Du da Probleme.
Und auch solche Begriffe wie referentielle Integrität solltest Du kennen und verstehen.

Falls Du weiter Probleme hast, beschreibe diese genauer.
Gruß Klaus

Sonnensalat

Hallo,

okay, auch wenn ich mein Problem schlecht geschildert habe, so sind doch nun alle Punkte klar geworden und funktionieren! :)

Ich hatte bei einer Tabellenumbenennung auch einen Eintrag im Code übersehen.

Jetzt habe ich die Schwierigkeit, dass ich die Merkmale im frmErfassung nicht in einer von mir festgelegten Reihenfolge sortieren kann, damit die zusammengehörigen Felder übereinanderstehen.

(Z.Bsp.: die Betriebsdaten Volumina, Druck, Temperatur übersichtlich untereinander.)

Ich habe schon viel ausprobiert, aber ich kann kein Schema erkennen, nach welchem Kriterium  die Merkmale angeordnet werden. (Es ist weder alphabetisch, noch die Reihenfolge, die in frmMerkmaleZuordnen eingegeben wurde. Auch ist es nicht die MerkmalID in der tblMerkmale.

Scheint mir ziemlich willkürlich.

Kann ich das irgendwie direkt in der Tabelle festlegen, oder funktioniert das über eine Funktion in der "Aktivierreihenfolge"?


Gruß Thomas

MzKlMu

#48
Hallo,
ZitatScheint mir ziemlich willkürlich.
das ist willkürich. Das gehört zu den von mir in #32 angedeuteten Verbesserungsvorschlägen.
Du benötigst hier eine eigene Sortierung, die die Merkmale in der gewünschten Reihenfolge darstellen. Alphabetisch geht nicht, eine Sortierung nach der ID bzw. Eingabereihenfolge kann auch nicht verwendet werden, da diese starr wäre. Du benötist eine Sortierung die flexibel ist. Und da kommt nur ein eigenes Sortierfeld in Frage. Dazu kommt in die Tabelle "tblMerkmalzuApparatArt" ein zusätzliches Feld "Sortierung" als Zahl (Double). Hier kannst Du bei der Zuordnung der Merkmale zur Apparateart eine Sortierzahl eingeben. Das macht man am besten in 10er Sprüngen. Du kannst dann jederzeit z.B. zwischen 20 und 30 ein neues Merkmal erfassen, das dann die 25 bekommt. Neu sortieren und schon passt es selbst wenn Du 20 und 21 schon hast, kannst Du einem Feld dazwischen dann 20,5 geben (daher Double).
Du kannst so jederzeit die Feldreihenfolge für jeden Apparat getrennt bestimmen. Das ist eine einmalige Sache bei der Zuordnung. Das Einfügen der Merkmale erfolgt in der Reihenfolge der Sortierzahl. Auf dem Ufo Merkmale des Formulars "frmErfassung" ist diese Sortierzahl als Info zu sehen. Die kannst Du auf diesem Ufo löschen. Habe ich jetzt nur zum Verständnis drauf.

Diese Sortiergeschichte ist keine Krücke, sondern die einzige (und auch übliche) Methode einer freien Sortierung.

In der Version 6.3 habe ich das Einfügen der Merkmale zum Apparat geändert. Das geschieht jetzt nicht mehr per Anfügeabfrage, sondern per Recordset und AddNew. Das hat den Vorteil, dass jedes einzelne Merkmal eingefügt wird. Dadurch kannst Du auch vergessene Merkmale nachtragen, in dem einfach der Button noch mal geklickt wird. Bisherige Merkmale bleiben erhalten, auch eventuell erfolgte Einträge. An Hand der Sortierzahl wird auch richtig eingeordnet. Auch bei erneutem Klicken werden keine Merkmale doppelt eingetragen. Es werden aber keine Merkmale entfernt, falls eines falsch zugeordnet war. Dazu gibt es jetzt einen Button "Löschen" der per Doppelklick ein Merkmal löscht falls eines falsch zugeordnet war. Es muss dann aber auch die Zuordnung korrigiert werden.
In die neuen Version habe ich noch eine Fehlerbehandlung eingebaut.
Wenn Du die Sortierung mal ändern willst, die Sortierzahl ändern und noch mal auf den Button "Anfügen..." klicken. Es wird umsortiert.

Neue Version (6.3) anbei.

Bitte einfach mal rum spielen.
Gruß Klaus

MzKlMu

Hallo,
@Thomas
bitte #48 noch mal vollständig lesen (falls Du es gestern schon gelesen hast) , ich habe einiges nachgetragen.
Gruß Klaus

Sonnensalat

Hallo,

schlechte Nachrichten, mein Chef möchte, dass ich die Arbeit an der neuen DB einstelle und lieber die alte DB "optimiere"... :(

Er ist 62 Jahre und möchte sich nicht an ein neues System/Oberfläche gewöhnen. Ich konnte ihn nicht überzeugen, da die alte DB für ihn ausreichend ist, was gleichzeitig einige Widersprüche beinhaltet, da er einige Änderungen wollte, die ich in der alten DB nicht hinbekommen habe... naja das letzte Wort ist gesprochen, immerhin konnte ich ihn überzeugen, dass man den Entwurf der Version 6 nicht verwirft, sondern wenn er in Rente geht sich jemand damit beschäftigen kann.

Das ist echt frustrierend für mich und alle hier so engagierten Administratoren Klaus, Ekkehard, Maggie... Es tut mir leid für die womöglich vergebene Mühe! :( Trotzdem möchte ich mich für eure super Unterstützung danken! Wenigstens habe ich auch etwas von euch lernen können! Danke!


Dennoch stehe ich wieder vor dem alten Problem des Vorfilters in dem Formular... Ich kann einen Formularfilter manuell anwenden, damit er mir nur die Datensätze "Behälter", "Pumpen" etc. anzeigt. Kann man das auch irgendwie einstellen, dass beim Öffnen des Formulars automatisch dieser Filter angewandt wird?

Gruß, Thomas

MzKlMu

Hallo,
schade, dass das nicht weiter geht.

Aber egal, vielleicht kann es jemand anders brauchen, bzw. was daraus übernehmen.

ZitatKann man das auch irgendwie einstellen, dass beim Öffnen des Formulars automatisch dieser Filter angewandt wird?

Du kannst dem OpenForm Befehl eine Where Klausel als Filter übergeben.
In der Access VBA Hilfe findest Du dazu Beispiele.


Gruß Klaus