Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Vorauswahl Formular

Begonnen von julle, Dezember 29, 2015, 10:00:45

⏪ vorheriges - nächstes ⏩

DF6GL

Hallo,

wenn der Benutzername im Auswahlkombi in der 2. Spalte der Kombiliste steht, dann halt diesen Spaltenwert übergeben:

DoCmd.OpenForm Me!cmbFormulare, , , , , , Me!cmbBenutzer.Column(1)
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

julle

Eine weitere Sache noch:

kann man die Auswahlmöglichkeiten des Kombifelds "cmbFormulare" im Formular "frmStart" abhängig vom Benutzer gestalten?
Also wenn Benutzer "Hans" seinen Namen in "cmbBenutzer" auswählt hat er andere Auswahlmöglichkeiten (Formulare) als Benutzer "Otto".

vielen Dank für die Hilfe bisher!

viele Grüße,
Julian

MaggieMay

Hallo Julian,

selbstverständlich kann man das machen, aber dazu musst du dir erstmal überlegen wie du das steuern willst, d.h. wonach willst du entscheiden, welche Formulare für welchen Benutzer angeboten werden? Man könnte dazu Tabellen einsetzen, die Benutzer evtl. auch noch Gruppen zuordnen, die Formulare entsprechend benennen...

Wie also stellst du dir das vor?
Freundliche Grüße
MaggieMay

julle

Zitat von: MaggieMay am Januar 14, 2016, 15:47:52
Hallo Julian,

selbstverständlich kann man das machen, aber dazu musst du dir erstmal überlegen wie du das steuern willst, d.h. wonach willst du entscheiden, welche Formulare für welchen Benutzer angeboten werden? Man könnte dazu Tabellen einsetzen, die Benutzer evtl. auch noch Gruppen zuordnen, die Formulare entsprechend benennen...

Wie also stellst du dir das vor?

Ich stelle mir das folgendermaßen vor:
ich habe ja bereits die Tabelle mit den Benutzern, da steht ja bisher nur der Name drin. Da würde ich gerne das Kriterium "Abteilung" hinterlegen. Nun müssen die Formulare den "Abteilungen" zugeordnet werden. Aber wie das funktioniert weiß ich nicht genau...

MaggieMay

Also brauchst du eine Tabelle mit den Formularen und eine weitere für die Zuordnung Formular - Abteilung.
Mit Hilfe einer Abfrage kannst du dann die Formulare der Abteilung des aktuellen Benutzers auslesen.
Freundliche Grüße
MaggieMay

julle

Zitat von: MaggieMay am Januar 14, 2016, 16:16:08
Also brauchst du eine Tabelle mit den Formularen und eine weitere für die Zuordnung Formular - Abteilung.
Mit Hilfe einer Abfrage kannst du dann die Formulare der Abteilung des aktuellen Benutzers auslesen.

Ja so weit bin ich vom Kopf her, aber leider scheitere ich an der technischen umsetzung... Wie ordne ich das in bestehendes Gefüge ein? da muss ich ja jetzt bei dem cmbFormular nochwas reinpacken, aber bin mir unsicher was!

MaggieMay

Das Kombifeld braucht als Datensatzherkunft die besagte Abfrage.
Vorher musst du aber die Hilfstabellen anlegen und mit Inhalten füllen.

Die Abfrage könnte dann bspw. so aussehen:
Select f.formName From tblFormulare As f Inner Join tblFormZuAbt As z ON f.Abt = z.Abt
Where z.User = getCurrentUser()

wobei der aktuelle Benutzer über die selbst definierte Funktion "getCurrentUser" in die Abfrage geholt wird.
Freundliche Grüße
MaggieMay

julle

Zitat von: MaggieMay am Januar 14, 2016, 17:18:44
Das Kombifeld braucht als Datensatzherkunft die besagte Abfrage.
Vorher musst du aber die Hilfstabellen anlegen und mit Inhalten füllen.

Die Abfrage könnte dann bspw. so aussehen:
Select f.formName From tblFormulare As f Inner Join tblFormZuAbt As z ON f.Abt = z.Abt
Where z.User = getCurrentUser()


wobei der aktuelle Benutzer über die selbst definierte Funktion "getCurrentUser" in die Abfrage geholt wird.

das hilft mir schonmal, allerdings hat besagtes Kombifeld ja schon eine Datensatzherkunft:

Kombifeld "cmbFormulare"
Steuerelementinhalt:  leer
Datensatzherkunft:  Select  Name, Left(Name,1) from MSysObjects where Type =-32768 and Left(Name,1) ="~"
gebundene Spalte: 1
Spaltenanzahl: 2
Spaltenbreiten: 0cm; 6cm

wobei ich mich auch frage, für was die -32768 steht

MaggieMay

Hi,

Zitatallerdings hat besagtes Kombifeld ja schon eine Datensatzherkunft
nun, wenn du die Formularauswahl benutzerabhängig steuern willst, reicht es nicht mehr die Systemtabelle auszulesen, das sollte eigentlich klar sein.

Zitatwobei ich mich auch frage, für was die -32768 steht
Das sollte sich herausfinden lassen, wenn du dir die Tabelle einfach mal genauer anschaust.

PS:
Was willst du denn wohl mit dem Ergebnis dieser Abfrage anfangen:
Select  Name, Left(Name,1) from MSysObjects where Type =-32768 and Left(Name,1) ="~"
???
Insbesondere wenn man bedenkt, dass lediglich die zweite Spalte der Abfrage zur Ansicht kommt!
Freundliche Grüße
MaggieMay

Beaker s.a.

Hallo Maggie,
ZitatPS:
Was willst du denn wohl mit dem Ergebnis dieser Abfrage anfangen:

Code: [Auswählen]

Select  Name, Left(Name,1) from MSysObjects where Type =-32768 and Left(Name,1) ="~"
Siehe #6

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

MaggieMay

#25
Ok, die Frage hätte dann wohl an Franz gehen müssen - ala "Was hast du dir dabei gedacht?"! Aber es hätte doch inzwischen auch dem Fragesteller schon aufgefallen sein müssen, dass bei den vorgegebenen Einstellungen im Kombifeld stets nur die Tilde zur Anzeige kommt, anstelle des Formularnamens. Welchen Sinn mag das denn wohl haben?

BTW:
Ausgerechnet die Tilde als Kennzeichen zu wählen halte ich für eher ungünstig, da dieses Zeichen von Access intern für temporäre Objekte vergeben wird. Normalerweise wählt man also genau die Objekte aus, die nicht mit einer Tilde beginnen.
Freundliche Grüße
MaggieMay

DF6GL

Hallo,

zur Tilde:
geschrieben habe ich:

ZitatErstelle die 25 Formulare mit einem verwendbaren Sonderzeichen am Anfang des Namens (z. B. "~Druckformular1")

Select  Name, Left(Name,1) from MSysObjects where Type =-32768 and Left(Name,1) ="~"


wobei sich beim Select ein Fehler eingeschlichen hat (sorry)  und es so heißen sollte:
Select  Name, Mid(Name,2) from MSysObjects where Type =-32768 and Left(Name,1) ="~



Stimmt schon, das das Tilde-Zeichen auch von internen (und evtl. auch temporären) Objekten verwendet wird. Das ist aber kein "reserviertes"  Zeichen, und bei Formularen ist mir das noch nicht begegnet. Bei anderen Sonderzeichen meckert Access öfter mal, sprich will es nicht akzeptieren.



Zum Problem (vermutlich aber eh schon geklärt):
Letztendlich kann man aber ganz auf ein Sonderzeichen verzichten, wenn man die betroffenen Formulare, die im Kombifeld auftauchen sollen, halt anderweitig strukturiert und filterbar benennt, d. h. kennzeichnet, z. B:

D_Druckformular1
D_Druckformular2

so dass es dann so lauten muss:
Select  Name, Mid(Name,3) from MSysObjects where Type =-32768 and Left(Name,2) ="D_"
Spaltenanzahl: 2
Spaltenbreite: 0cm; 4cm
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Beaker s.a.

Hallo,
Vielleicht sollte man da lieber auf eine eigene Tabelle für die Formulare zurück greifen. Da lässt sich dann auch eine n:m zwischen diese und die MA-Tabelle schalten (ich weiss nicht ob das mit Systemdateien auch geht), die dann  als RowSource des Kombis dient.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

MaggieMay

Hi,
Zitat von: Beaker s.a. am Januar 17, 2016, 18:38:04
Vielleicht sollte man da lieber auf eine eigene Tabelle für die Formulare zurück greifen.
Dazu würde ich eher nicht raten, wenn es sich vermeiden lässt.
ZitatDa lässt sich dann auch eine n:m zwischen diese und die MA-Tabelle schalten (ich weiss nicht ob das mit Systemdateien auch geht)
Sicher nicht.
Freundliche Grüße
MaggieMay

julle

Zitat von: MaggieMay am Januar 16, 2016, 23:55:14
Ok, die Frage hätte dann wohl an Franz gehen müssen - ala "Was hast du dir dabei gedacht?"! Aber es hätte doch inzwischen auch dem Fragesteller schon aufgefallen sein müssen, dass bei den vorgegebenen Einstellungen im Kombifeld stets nur die Tilde zur Anzeige kommt, anstelle des Formularnamens. Welchen Sinn mag das denn wohl haben?

BTW:
Ausgerechnet die Tilde als Kennzeichen zu wählen halte ich für eher ungünstig, da dieses Zeichen von Access intern für temporäre Objekte vergeben wird. Normalerweise wählt man also genau die Objekte aus, die nicht mit einer Tilde beginnen.

Das stimmt so nicht, es ist sehr wohl zu sehen um welches Druckformular es sich handelt. Jeweils Tilde+Formularname.


Die Bedingung welcher Benutzer welches Formular sieht werd ich erstmal auslassen, die erste Version wird erstmal getestet.

Wobei ich noch einen Kniff nicht herausbekomme, auch nach durchforsten des Internets nicht...
Ich möchte das Formular an zwei unterschiedliche Drucker senden. Über die Druckeinstellungen werd ich nicht schlauer, es scheint wohl einen Druckerpool zu geben, der lässt sich allerdings von mir (und meinen Berechtigungen am PC) nicht weiter bedienen.
Gibt es ein VBA Makro was diesen Job erledigen kann? ich hab geschaut und versucht, bekomme es allerdings nicht gebacken!