Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: itil07 am Juni 20, 2011, 12:25:04

Titel: Abfragedaten von Formular übernhmen
Beitrag von: itil07 am Juni 20, 2011, 12:25:04
Hallo,

folgenste Konstellation:
Formular - Firmenabfrage
Inhalt = Standort, Bereich, Abteilung, Nachname

In der Abfrage die identischen Daten.
Jetzt geht darum.

Der User wählt über komboboxen im Formular seine wunschabfrage aus und dies solli n die abfrage initalisiert werden und diese soll angezeigt werden.

Beispiel user wählt aus;
Standort: ""
Bereich: ""
Abteilung: "Finanzen"
Nachname: ""

werden alle Mitarbeiter von Finanzen angezeigt

Standort: "Wien"
Bereich: "Controlling"
Abteilung: ""
Nachname: ""

Zeigt alle Controller aus Wien an.

Standort: ""
Bereich: ""
Abteilung: ""
Nachname: "Meier"

Zeigt den Mitarbeiter Meier an.

wie kann ich das umsetzen?
mrin problem ist, wenn ich auch nur ein feld leer lasse, klappt es nicht...


danke schon mal
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: DF6GL am Juni 20, 2011, 12:34:25
Hallo,


am Besten schaust Du Dir mal Beispiel-DBs an:


http://dbwiki.net/images/1/19/AccSampleSuchen.zip
http://dbwiki.net/images/6/6f/AccSampleKombiAuswahl.zip


(kleine Rätselrunde:  Vermutlich muss in den Abfragen  als Kriterium z. B. bei Spalte "Standort" stehen:   Wie Forms!DeinForm!Standort oder Forms!DeinForm!Standort ist Null )
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: itil07 am Juni 21, 2011, 11:40:32
ja also deinen ansatz hatte ich auch. mit dem [Formulare]![Formularname]![Feldname] in "Kriterien" eintragen. jedoch bei Oder mit dem istnull funktioniert leider nicht.

das beispiel funktioniert für sich selbst ja super.. jedoch wenn ich mir die suchen.mdb genauer anschaue und das formular frmadressesuchensimpel anschaue.

Private Sub Suchen_Click()
Dim Krit As String, SQL As String
  Krit = ""
  If Not IsNull(Me!Nachname) Then Krit = Krit & " AND Nachname LIKE '" & Me!Nachname & "*'"
  If Not IsNull(Me!Firma) Then Krit = Krit & " AND Firma LIKE '" & Me!Firma & "*'"
  SQL = "SELECT * FROM tblAdresse "
  If Krit <> "" Then SQL = SQL & "WHERE " & Mid(Krit, 5)
  Me!ufrmAdresseSuchen.Form.RecordSource = SQL
  Me!Nachname.SetFocus
End Sub


mir ist unklar wie ich das für meines übernehmen soll.. bin hier echt etwas überfordert :-( hoffe irh könnt mir helfen, das irgendwie "eifnacher" hinz u rkeigen. ohen eigenes sql scheint es ja nicht zu funktionieren oder?wo auch immer ich da snun eintrage oder? :-(
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: DF6GL am Juni 21, 2011, 15:10:44
Hallo,

"mit dem [Formulare]![Formularname]![Feldname] in "Kriterien" eintragen. jedoch bei Oder mit dem istnull funktioniert leider nicht."


WAS funktioniert nicht? WIE hast Du das eingetragen?  Poste mal die SQL-Ansicht (SQL-String) der Abfrage.

bezgl. dem Code halt an Deine Feldnamen und Verhältnisse anpassen:


.
.
If Not IsNull(Me!Standort) Then Krit = Krit & " AND Standort LIKE '" & Me!Nachname & "*'" 
If Not IsNull(Me!Bereich) Then Krit = Krit & " AND Bereich LIKE '" & Me!Bereich & "*'"
If Not IsNull(Me!Abteilung) Then Krit = Krit & " AND Abteilung LIKE '" & Me!Abteilung & "*'" 
If Not IsNull(Me!Nachname) Then Krit = Krit & " AND Nachname LIKE '" & Me!Nachname & "*'"
.
.
.


Das ist schon einfach genug,  und
"ohen eigenes sql scheint es ja nicht zu funktionieren oder?.."

SQL ist nun mal die DB-Abfragesprache schlechthin.


"wo auch immer ich da snun eintrage oder? :-( "

??

VBA-Code im VBA-Editor

SQL (Strings) im Abfrageentwurf/Ansicht/SQL-Ansicht oder bei irgendeiner Eigenschaft , bzw. irgendeinem Funktions-Parameter, die/der einen SQL-String erwartet.

Und: Rechtschreibfehler sind tunlichst zu vermeiden, Access ist da pingelig und gar nicht tolerant....  ;)
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: itil07 am Juni 22, 2011, 08:06:16
Hallo,

Hier meine SQL-Syntax:

SELECT Status.Statusbezeichnung, Bereich.Bereichsname, Abteilung.Abteilungsname, Personendaten.Nachname, Berechtigungen.Berechtigung, Ber_System.Bezeichnung, Zusätndigkeit.Zuständigkeit
FROM Berechtigungen INNER JOIN (Ber_System INNER JOIN ((Status INNER JOIN (Bereich INNER JOIN (Abteilung INNER JOIN Personendaten ON Abteilung.[Abteilung_ID] = Personendaten.[Abteilung_FK]) ON Bereich.[Bereichsnummer] = Personendaten.[Bereich_FK]) ON Status.[ID_Status] = Personendaten.[Status_FK]) INNER JOIN (Zusätndigkeit INNER JOIN Ber_Haupt ON Zusätndigkeit.[ID_Zustaendigkeit] = Ber_Haupt.[Zuständigkeit]) ON Personendaten.[Konfigurationsnummer] = Ber_Haupt.[Verantwortlicher_FK]) ON Ber_System.ID_Ber_System = Ber_Haupt.System) ON Berechtigungen.ID_Berechtigungen = Ber_Haupt.Berechtigung
WHERE (((Status.Statusbezeichnung)=[Formulare]![Berechtigungsabfrage]![komb_status])  XOR  ((Bereich.Bereichsname)=[Formulare]![Berechtigungsabfrage]![kom_bereich]) XOR ((Abteilung.Abteilungsname)=[Formulare]![Berechtigungsabfrage]![komb_abt])  XOR  ((Personendaten.Nachname)=[Formulare]![Berechtigungsabfrage]![komb_nn])  XOR ((Berechtigungen.Berechtigung)=[Formulare]![Berechtigungsabfrage]![komb_berechtigung])  XOR  ((Ber_System.Bezeichnung)=[Formulare]![Berechtigungsabfrage]![komb_system])  XOR ((Zusätndigkeit.Zuständigkeit)=[Formulare]![Berechtigungsabfrage]![komb_zust])) OR (((Status.Statusbezeichnung)=IsNull([Formulare]![Berechtigungsabfrage]![Statusbezeichnung]))  XOR ((Bereich.Bereichsname)=IsNull([Formulare]![Berechtigungsabfrage]![kom_bereich]))  XOR  ((Abteilung.Abteilungsname)=IsNull([Formulare]![Berechtigungsabfrage]![komb_abt]))  XOR  ((Personendaten.Nachname)=IsNull([Formulare]![Berechtigungsabfrage]![Nachname]))  XOR  ((Berechtigungen.Berechtigung)=IsNull([Formulare]![Berechtigungsabfrage]![komb_berechtigung]))  XOR  ((Ber_System.Bezeichnung)=IsNull([Formulare]![Berechtigungsabfrage]![komb_system]))  XOR  ((Zusätndigkeit.Zuständigkeit)=IsNull([Formulare]![Berechtigungsabfrage]![komb_zust])));


wobei standardmäßig steht dstatt "XOR ein AND, aber mit AND kanns auf keinen fall gehen, aber leider mit XOR auch nicht :-(

eingetragen habe ich:

Kriterium: [Formulare]![Berechtitungsformular]![komb_status]
OdeR: IstNull([Formulare]![Berechtitungsformular]![komb_status])


anbei meine datei.

hoffe du kansnt mir da helfen, vielen dank schon mal herzlichst im voraus.



[Anhang gelöscht durch Administrator]
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: DF6GL am Juni 22, 2011, 10:12:47
Hallo, 


Wie kommst Du auf "XOR" ??




Du sollst eintragen:

(im Abfrageentwurf)
Kriterium:    [Forms]![Berechtitungsformular]![komb_status] Oder [Forms]![Berechtitungsformular]![komb_status] Ist Null


Wobei der Formularname hier vermutlich einen Tippfehler enthält...


http://www.donkarl.com/?FAQ3.14
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: itil07 am Juli 01, 2011, 14:27:27
hallo,

habe das nun bei allen eingetragen. ob "Forms" oder "Formulare" ist dem Access ansich egal nur wenn man formulare eingibt schlägt er alles dann von selbst vor, man kanns ich dann nciht verschreiben - oder irrtisert deutsch das sql? denke nicht.. da es teilweise funktioniert hat..

das jetzige SQL ist echt ultimativ lang.. habe meine datei angehägt.. bitte um prüfung weil es funktioniert noch nicht so ganz wie es sein soll... bitte um etwaiige tipps.
bin aber schon echt ultimativ dankbar :-) vollc ool!!!!!!!!

[Anhang gelöscht durch Administrator]
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: itil07 am Juli 01, 2011, 15:08:34
also bei status und berechtigung funktioniert das einwandfrei. danach gar nicht mehr..
woran liegt denn das?

mit der bitte um tipps/hilfe

herzlichsten danks chon mal!
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: DF6GL am Juli 01, 2011, 18:29:47
Hallo,

es ist nicht egal, ob "Formulare" oder "Forms2 geschrieben wird, auch wenn Access "Forms" wieder nach "Formulare" im Abfrageentwurf zurückwandelt.


Deine hochgeladene accdb kann ich nicht öffnen (mit A2007).
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: database am Juli 02, 2011, 21:03:34
Hallo,

...außerdem solltest du das Kennwort aus der hochgeladenen DB entfernen wenn du Hilfe bekommen möchtest - das VBA-Projekt ist gesperrt.

Vorab nur soviel:
Ich vermute, dass du die 'abfr_Berechtigungen' mit deinem Beitrag besprechen willst.
Um das Ergebnis des Suchformulars 'Berechtigungsabfrage' auf 7 verschiedene Kriterien einzuschränken kannst du die Kriterien entweder UND oder ODER verknüpfen.
Wie es letztendlich zu lösen sein wird hängt vom erwarteten Ergebnis ab - willst du alle aus dem 'Bereich 3' UND den Namen 'Kleber' haben oder möchtest du alle aus dem 'Bereich 3' ODER den Namen 'Kleber' haben.
Deiner ersten Anfrage nach gehe ich davon aus, dass die Kritereien AND-verknüpft werden sollen. ("Alle Controller aus Wien" - ist AND-verknüpft)

Wie auch immer diese Entscheidung ausfallen mag - die Horror-SQL der Abfrage 'abfr_Berechtigungen' ist dazu jedenfalls m.E. NICHT notwendig.
Ich würde eher dazu neigen eine ganz neutrale Auswahl-Abfrage zu erstellen und die WHERE-Klausel dynamisch im Formular nach den ausgewählten Kriterien zusammenzustellen.


Dim strKrit As String
Dim strSQL as String

'Abfragefundament erstellen
strSQL = "SELECT Status.Statusbezeichnung, Bereich.Bereichsname, Abteilung.Abteilungsname, Personendaten.Nachname, " & _
        "Berechtigungen.Berechtigung, Ber_System.Bezeichnung, Zusätndigkeit.Zuständigkeit " & _
        "FROM Berechtigungen INNER JOIN (Ber_System INNER JOIN ((Status INNER JOIN (Bereich INNER JOIN " & _
        "(Abteilung INNER JOIN Personendaten ON Abteilung.[Abteilung_ID] = Personendaten.[Abteilung_FK]) " & _
        "ON Bereich.[Bereichsnummer] = Personendaten.[Bereich_FK]) ON Status.[ID_Status] = Personendaten.[Status_FK]) " & _
        "INNER JOIN (Zusätndigkeit INNER JOIN Ber_Haupt ON Zusätndigkeit.[ID_Zustaendigkeit] = Ber_Haupt.[Zuständigkeit]) " & _
        "ON Personendaten.[Konfigurationsnummer] = Ber_Haupt.[Verantwortlicher_FK]) ON Ber_System.ID_Ber_System = Ber_Haupt.System) " & _
        "ON Berechtigungen.ID_Berechtigungen = Ber_Haupt.Berechtigung"

'Auswahlkriterien sammeln +++(siehe Bemerkung nach dem Codeausschnitt)
If Not IsNull(Me!komb_Status) Then
   strKrit = "Status_FK=" & me!komb_Status
End If

If Not IsNull(Me!kom_Bereich) Then
   If strKrit <> "" Then
       strKrit = strKrit & " AND Bereich_FK=" & Me!kom_Bereich
   Else
       strKrit = "Bereich_FK=" & Me!kom_Bereich
   End If
End If

...
..
.

'Kriterienstring zusammensetzen
If strKrit <> "" Then
   strKrit = " WHERE " & strKrit & ";"
Else
   strKrit = ";"
End If

'Abfragefundament und Kriterien zusammensetzen
strSQL = strSQL & strKrit

'die SQL der 'abfr_Berechtigungen' zuweisen
CurrentDb.QueryDefs("abfr_Berechtigungen").SQL = strSQL


+++ Verwende für die Abfragekriterien die Fremdschlüssel und nicht die Bezeichungsfelder aus den verknüpften Tabellen!

Die Abfrage selbst dient dann als Datenherkunft für einen Bericht, der die Auswahlergebnisse formatiert anzeigt oder du öffnest die Abfrage halt dann per VBA um die Daten anzuzeigen.

Dann würde ich dir noch gerne wärmstens ans Herz legen
dass du die Tabellen allesamt überarbeitest,
Tabellen und Felder OHNE Rechtschreibfehler benennst,
vermeide Sonderzeichen und Leerzeichen sowie reservierte Worte bei Feldbezeichnugen (auch MINUSZEICHEN = Sonderzeichen),
dass du dich entscheidest ob du Umlaute verwendest oder nicht (ich empfehle NEIN) und dieses nicht vermischt verwendest,
dann solltest du das Datenmodell gründlich überarbeiten - es befindet sich nicht in der 3. Normalform
und letztendlich definiere deine Tabellenbeziehungen (setzte die referenzielle Integrität!)
Für deine Formulare gilt das oben gesagte 1:1 z.B. lege dich fest wie du die Felder benennst 'komb_Status' und 'kom_Bereich' - bei solchen Bezeichnungen bekommst du garantiert eine Menge Ärger!

HTH
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: itil07 am Juli 05, 2011, 11:47:57
hallo,

anbei mein neue version mit eingefügten coding und ohne passwort -sorry hatte ich vergessen, alle passwörter lauten "test" falls noch irgendwo eines ist.

nun zu den tabellen.
3. normalform = funktionale abhängigkeiten bei nichtschlüssel attributen...
nehme an du meinst hier berechtigung, zuständigkeit, system... jedoch weiß ich nciht, wie ich das sonst lösen soll :-(.

ansonsten
ok sind:
abteilung, anhänge, bereich, handy, mobiles internet, standorte, status, user, zuständigkeit, ber_system

bin mir nicht sicher bei:
ber_haupt, ber_system, berechtigungen, personendaten

aber was soll ich hier ändern, dass ich dennoch die selbe funktionalität habe.. echt schwierig :-(.
habe auch nichts dagegen komplett neu an zu fangen, aber mir fällt keine bessere lösung ein..

danke schon mal vielmals

lg
itil






[Anhang gelöscht durch Administrator]
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: DF6GL am Juli 05, 2011, 12:33:34
Hallo,


welches Format hat die DB? Ich kann sie immer noch nicht mit A2007 öffnen...    ("Nicht erkennbares DB-Format")
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: database am Juli 05, 2011, 13:05:52
Hallo,

@Franz

Access 2010

NACHTRAG:
Speichern als 2003-mdb nicht möglich, da verschiedene Features in der DB vorhanden sind...  blablabla
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: itil07 am Juli 05, 2011, 15:39:12
ich wüsste aber nicht, was ich genommen hätte.. das es nur im 2010 gibt.. die mehrfachauswahlkomboboxen habe ich ja schon lange alle entfernt..
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: DF6GL am Juli 05, 2011, 15:50:09
Hallo,

mhmm, es würde mir das A2007-Format reichen....
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: database am Juli 05, 2011, 16:02:57
Hi Franz,

hier ist sie, die solltest du öffnen können

[Anhang gelöscht durch Administrator]
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: DF6GL am Juli 05, 2011, 17:56:51
Hallo,

ok, danke, kann sie öffnen..



@ itil07 :

Gleich meine Kommentare:

1) erntferne die 1:1-Beziehung, bzw. überprüf die Datenzusämmenhänge zwischen Handy und Personendaten, ob die wirklich so sind. Dito für "Mobiles Internet" (Leerzeichen entfernen!)

2) entferne aus allen Tabelle alle Nachschlagefelder (Kombifelder)

3) vermeide (und ändere entspr.)  Sonder- und Leerzeichen in Objektnamen

4) wenn "Ber_Haupt" ("schlechte" Benamsung) Berechtigungs-Levels darstellen soll, dann sollte eine Beziehung zwischen Ber_Haupt.ID_Berechtigung und Personendaten.Berechtigung erstellt werden.
(Die Frage ist aber, was denn nun "Berechtigungen" eigentlich sind und für welchen Zweck die gebraucht werden)

5) Die Beziehungen der  "Untertabellen" zu "Ber_Haupt sollten mit RI versehen werden.


Erst wenn das alles erledigt ist, rede(n) ich (wir) weiter ...  ;)
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: itil07 am Juli 11, 2011, 09:52:53
heio,

also keine ahnugn wieso ich keine .mdb machen konnte habe jetzt eine neue DB gemacht und alles importiert - funktioniert. echt seltsam.

zu 1, theoretisch könnte 1 mitarbeiter N Mobile InetSticks und auch N handys haben. Praktisch ist nur ein einziges möglich. ABER mom was mir gerade einfällt.. die alten handys sollen ja auch drinen stehen bleiben - oke, werde ich bei der nächsten DB dann mitändern.

zu 2. alle kombifelder gelöscht :-)

zu 3, berechtigungsfelder von personendaten gelöscht - haben dort nichts zu suchen.

zu 4, habe alles in reverentielle integrität gesetzt :-)

anbei die datei als .mdb

[Anhang gelöscht durch Administrator]
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: DF6GL am Juli 11, 2011, 10:34:04
Hallo,

zu 1) :  die 1:1-Beziehungen sind  (unabhängig von Deinem Einwand) immer noch vorhanden und gehören in 1:n umgewandelt . Wenn die 1:1-Beziehung logistisch bleiben soll (nur ein Handy zu einer Person) , dann gehören die einzelnen Felder in die Personen-Tabelle eingebaut.

1:1-Beziehungen sind nur in sehr wenigen Einzelfällen brauchbar.


insofern warten wir mal die 1:n-Ausführung ab....  ;)
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: itil07 am Juli 12, 2011, 07:58:08
heio,

habe anbei nun die handy und mobiles intenret beziehungen zu 1:n gemacht. jeodch.. blicke ich mich nciht merh ganz druch was ich noch alles ändern muss, dass es 1 mitarbeiter n Handys haben kann. irgendwie zeigts mir das nicht im utnerformular an
... :-(

bitte um hilfe.
danke schon im voraus

[Anhang gelöscht durch Administrator]
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: DF6GL am Juli 12, 2011, 10:02:06
Hallo,

ich nehme an, Du meinst das (Haupt-) Formular "Personendaten"...


Zunächst kann man ein Register-Steuerelement nicht auf einer Registerseite eines anderen Reg.-Steuerlementes unterbringen.

Wenn Deine Beziehungen zwischen  Handy (bzw. Mobiles_Internet) zu Personendaten stimmen  (was ich nicht ganz glaube) dann ist ein UFO in dieser Konstruktion fehl am Platz.  (Richtig wäre:  Hauptformular zu Tabelle Handy und UFO zur Anzeige der dazugehörenden Personendaten.



Wenn aber einer Person ein Handy zugewiesen werden soll, dann sollte "Personendaten" die 1-Tabelle und "Handy" die N-Tabelle sein.
Dabei könnte die Zuweisung eines Handy an eine Person über ein Kombi geschehen, das seine Listendaten aus "Handy" bezieht.

Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: itil07 am Juli 13, 2011, 14:39:01
hallo,

habe den fehler schon gefunden :-) die beziehungen müssen ja umgekehrt gesetzt werden.
anbei die datei.
aber ganz komisch bericht (ber_geräte).. funktioneirt nicht so wie er sollte zeigt dann zweimal die utnerformulare an...
?!?! strange?

super tipps danke!

[Anhang gelöscht durch Administrator]
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: DF6GL am Juli 13, 2011, 18:07:14
HAllo,

da ist nichts komisch...


Die Abfrage liefert pro Person zwei DS (hier insgesamt 4) und weil die beiden Unterformulare im Detailbereich platziert sind, gibt es auch 4 * 2 Ufos...


Du muß im Bericht nach Personendaten gruppieren....
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: itil07 am Juli 15, 2011, 09:50:22
okedoke, alles geändert wie gesagt geändert und auch der bericht funktioniert jetzt.


aber das mit der abfrage (berechtigungne) läuft noch immer nicht.
was kann ich da tun, damit er alles vom formular berechtigung übernimmt

user wählt im formular berechtigung über kombobox aus wie er die abfrage sehen will und jenachdem was für daten er dort wählt
wird die abfrage angepasst.

danke schon mal
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: itil07 am Juli 15, 2011, 12:43:51
heio,

ähm.. jetzt habe ich aber ein echt seltsames verhalten bei den hadnys.
wollte die auch als utnerformular im
.. handys werden richtig angezeigt aber jetz that er 3 mal das selbe mobile internet aber im selben unterformular.

wie das?..
pls. help

[Anhang gelöscht durch Administrator]
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: DF6GL am Juli 15, 2011, 17:09:13
Hallo,

wie/was meinst Du ??

Jede Konfig-Nr hat ihre zugehörenden "Handys" und auch ihre "Mobiles Internet".


Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: itil07 am Juli 18, 2011, 10:21:40
hallo,

formular personendaten geräte drucken.
da wird 3 mal das identische mobile internet ausgegeben... seltsam..

lg
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: DF6GL am Juli 18, 2011, 11:42:47
Hallo,


die Abfrage "abf_Geräte" ist nicht geeignet für die Versorgung der Unterberichte.  Setz die Datenherkunft der UBs lediglich auf die entspr. Tabelle.

Außerdem sollten die UBs im Detailbereich des Hauptberichtes platziert werden.
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: itil07 am Juli 18, 2011, 12:59:56
oke super, auch soweit gelöst.
kanns jetzt an die abfrage bezügilch berechtigungen gehen?

also über das formular mit dem komboboxen soll ausgewählt werden und entsprechend nach den getroffenen entscheidungen
die abfrage ausgeführt werden. möglich ists bestimmt, aber wie? danke schon mal!

lg
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: DF6GL am Juli 18, 2011, 14:11:01
Hallo,

bau erst mal die Db soweit fertig, dass es keine sonstigen Probleme gibt und lad die anschliessend hier hoch. Dann beschreib nochmal anhand der Formular-/Abfrage- und sonstigen Namen, was genau passieren soll.
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: itil07 am Juli 20, 2011, 11:00:53
hallo,

anbei die datenbank.
denke, dass sie jetzt bis auf die abfrage fertig ist. kleinigkeiten muss ich noch machen aber ansich funktionsfähig wie ich sie mri vorgestellt habe :-). nochmals vielen dank für die vielen tipps!!!



[Anhang gelöscht durch Administrator]
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: itil07 am Juli 22, 2011, 07:36:09
Guten Morgen,

alsoo das Codeing der Abfrage habe ich bereits angepasst. keine fehlermeldung, keine reaktion :-(


Private Sub cmd_start2_Click()


'Abfragefundament erstellen
strSQL = "SELECT Status.Statusbezeichnung, Personendaten.Nachname, Abteilung.Abteilungsname, Bereich.Bereichsname, " & _
         "Ber_System.Systembezeichnung, Berechtigungen.Berechtigung, Zustaendigkeit.Zustaendigkeit " & _
         "FROM Zustaendigkeit INNER JOIN (Status INNER JOIN ((Bereich INNER JOIN (Abteilung INNER JOIN Personendaten " & _
         "ON Abteilung.Abteilung_ID = Personendaten.Abteilung_FK) ON Bereich.Bereichsnummer = Personendaten.Bereich_FK) " & _
         "INNER JOIN (Berechtigungen INNER JOIN (Ber_System INNER JOIN Ber_Haupt ON Ber_System.ID_System = Ber_Haupt.System_FK) " & _
         "ON Berechtigungen.ID_Berechtigungen = Ber_Haupt.Berechtigung_FK) " & _
         "ON Personendaten.Konfigurationsnummer = Ber_Haupt.Verantwortlicher_FK) " & _
         "ON Status.ID_Status = Personendaten.Status_FK) " & _
         "ON Zustaendigkeit.ID_Zustaendigkeit = Ber_Haupt.Zustaendigkeit_FK"

'Auswahlkriterien sammeln
'status
If Not IsNull(Me!komb_status) Then
    strKrit = "Status_FK=" & Me!komb_status
End If
'bereich
If Not IsNull(Me!komb_bereich) Then
    If strKrit <> "" Then
        strKrit = strKrit & " AND Bereich_FK=" & Me!komb_bereich
    Else
        strKrit = "Bereich_FK=" & Me!komb_bereich
    End If
End If
'abteilung
If Not IsNull(Me!komb_abteilung) Then
    If strKrit <> "" Then
        strKrit = strKrit & " AND Abteilung_FK=" & Me!komb_abteilung
    Else
        strKrit = "Abteilung_FK=" & Me!komb_abteilung
    End If
End If
'nachname
If Not IsNull(Me!komb_nachname) Then
    If strKrit <> "" Then
        strKrit = strKrit & " AND Nachname=" & Me!komb_nachname
    Else
        strKrit = "Nachname=" & Me!komb_nachname
    End If
End If
'berechtigung
If Not IsNull(Me!komb_berechtigung) Then
    If strKrit <> "" Then
        strKrit = strKrit & " AND Berechtigung=" & Me!komb_berechtigung
    Else
        strKrit = "Berechtigung=" & Me!komb_berechtigung
    End If
End If
'System
If Not IsNull(Me!komb_system) Then
    If strKrit <> "" Then
        strKrit = strKrit & " AND System=" & Me!komb_bsystem
    Else
        strKrit = "System=" & Me!komb_system
    End If
End If
'zuständigkeit
If Not IsNull(Me!komb_zustaendigkeit) Then
    If strKrit <> "" Then
        strKrit = strKrit & " AND Zustaendigkeit=" & Me!komb_zustaendigkeit
    Else
        strKrit = "Zustaendigkeit=" & Me!komb_zustaendigkeit
    End If
End If

'Kriterienstring zusammensetzen
If strKrit <> "" Then
    strKrit = " WHERE " & strKrit & ";"
Else
    strKrit = ";"
End If

'Abfragefundament und Kriterien zusammensetzen
strSQL = strSQL & strKrit

'die SQL der 'abfr_Berechtigungen' zuweisen
CurrentDb.QueryDefs("abrf_Berechtigungen").SQL = strSQL
End Sub


liegt hier der fehler?

lg
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: database am Juli 22, 2011, 10:27:33
Hallo,

kann es sein, dass hier der Name der Abfrage nicht stimmt?

'die SQL der 'abfr_Berechtigungen' zuweisen
CurrentDb.QueryDefs("abrf_Berechtigungen").SQL = strSQL
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: itil07 am Juli 22, 2011, 14:31:58
hallo,

ansich hätte das geschimmt, habe aber jetzt ie abfrage in abfr. umbenannt und es wie empholen geändert.. aber noch immer absolut gar keine reaktion :-(.

in der abfrage selbst muss ja jetzt unter den werten nciht mehr stehen wo sie sich die daten herholen sollen (forms.berechtigungsabfrage.usw) oder? weil ist ja alles im codeing angegeben oder?

anbei die aktuelle DB.
hoffe ihr könnt helfen...

[Anhang gelöscht durch Administrator]
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: itil07 am Juli 22, 2011, 14:40:41
habe den fehler selbst gefudnen :-)).
die abfrage muss dann noch geöffnet werden.. :-)
und da wirds dann so angezeigt wie ausgewählt :-)
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: itil07 am August 01, 2011, 10:15:27
hallo,

hmm leider läufts noch immer nicht so wie ichs mir vorstelle.
berechtigugnsabfrage.
status: funktinioert einwandfrei!
bereich: Laufzeitfehler 3075, Syntaxfehler (fehlender Operator) in Abfrageausdruck "WHERE Bereich_FK=2"
abteilung: funktioniert einwandfrei!
nachname: Datentypenkonfligt in Kriterienausdruck. (OK) ODER: Laufzeitfehler 3075 wie oben nur "WHERE Nachname=11223"
Berechtigung: Laufzeitfehler 3075 "Where Berechtigung=2"
System = Kommt inputbox zum eingeben von system..
zustaendigkeit.. laufzeitfehler 3075 where system=3

habe nichts geändert, es hat nur nie funktinioert.. habe imme rnur mit status bisher gearbeitet.

hoffe ihr könnt mir helfen worans liegt weil where sollte doch stimmen denke ich..?

danke schon mal, anbei die jetzige version meiner datenbank.


[Anhang gelöscht durch Administrator]
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: DF6GL am August 01, 2011, 10:37:44
Hallo,

--Bei Textvergleichen muss der Kriteriumswert in Hochkommata stehen.

If Not IsNull(Me!komb_nachname) Then
    If strKrit <> "" Then
        strKrit = strKrit & " AND Nachname='" & Me!komb_nachname & "'"
    Else
        strKrit = "Nachname= '" & Me!komb_nachname & "'"
    End If
End If




--Name "System" falsch geschrieben ---> "System_FK"



If Not IsNull(Me!komb_system) Then
    If strKrit <> "" Then
        strKrit = strKrit & " AND System_FK  =" & Me!komb_system
    Else
        strKrit = "System_FK  =" & Me!komb_system
    End If
End If
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: database am August 01, 2011, 12:20:48
Hallo,

wobei das ...

If Not IsNull(Me!komb_nachname) Then
   If strKrit <> "" Then
       strKrit = strKrit & " AND Nachname='" & Me!komb_nachname & "'"
   Else
       strKrit = "Nachname= '" & Me!komb_nachname & "'"
   End If
End If


... auch nicht richtig laufen wird, da die gebundene Spalte im komb_nachname die Konfigurationsnummer der Tabelle 'Personendaten' ist.

Daher SOLLTEST du entweder als Kriterium


If Not IsNull(Me!komb_nachname) Then
    If strKrit <> "" Then
        strKrit = strKrit & " AND Konfigurationsnummer=" & Me!komb_nachname
    Else
        strKrit = "Konfigurationsnummer=" & Me!komb_nachname
    End If
End If

um den Vergleich per Primärschlüssel zu erledigen,

oder


If Not IsNull(Me!komb_nachname) Then
    If strKrit <> "" Then
        strKrit = strKrit & " AND Nachname='" & Me!komb_nachname.Column(1) & "'"
    Else
        strKrit = "Nachname= '" & Me!komb_nachname.Column(1) & "'"
    End If
End If

um den Namen zu vergleichen, angeben

HTH
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: itil07 am August 11, 2011, 08:47:56
hallo,

alsoooo das mit dem nachnamen klappt jetzt echt super :-)) bin echt happy.
jetzt habe ich nur noch zwei kleine problemchen:

Problem mit Zustaendigkeit (Beispiel: ITIL) = Datentypenkonflikt in Kriterienausdruck
Problem mit Berechtigung (Beispiel: Remote) = Datentypenkonflikt in Kriterienausdruck (Where Berechtigung=4)

'berechtigung
If Not IsNull(Me!komb_berechtigung) Then
    If strKrit <> "" Then
        strKrit = strKrit & " AND Berechtigung=" & Me!komb_berechtigung
    Else
        strKrit = "Berechtigung=" & Me!komb_berechtigung
    End If
End If

If Not IsNull(Me!komb_zustaendigkeit) Then
    If strKrit <> "" Then
        strKrit = strKrit & " AND Zustaendigkeit=" & Me!komb_zustaendigkeit
    Else
        strKrit = "Zustaendigkeit=" & Me!komb_zustaendigkeit
    End If
End If


danke schon mal!

lg
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: DF6GL am August 11, 2011, 09:09:15
Hallo,


Wenn es sich bei "Berechtigung" und "Zustaendigkeit" um Text handelt , dann lies nochmal meinen letzten Beitrag...

Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: itil07 am August 11, 2011, 09:21:23
danke für den tipp.
habs jetzt unter hochkomma gesetzt, klapper aber nochi mmer nicht :-(

'berechtigung
If Not IsNull(Me!komb_berechtigung) Then
    If strKrit <> "" Then
        strKrit = strKrit & " AND Berechtigung='" & Me!komb_berechtigung & "'"
    Else
        strKrit = "Berechtigung='" & Me!komb_berechtigung & "'"
    End If
End If
'System
If Not IsNull(Me!komb_system) Then
    If strKrit <> "" Then
        strKrit = strKrit & " AND System_FK=" & Me!komb_system
    Else
        strKrit = "System_FK=" & Me!komb_system
    End If
End If
'zuständigkeit
If Not IsNull(Me!komb_zustaendigkeit) Then
    If strKrit <> "" Then
        strKrit = strKrit & " AND Zustaendigkeit='" & Me!komb_zustaendigkeit & "'"
    Else
        strKrit = "Zustaendigkeit='" & Me!komb_zustaendigkeit & "'"
    End If
End If
Titel: Re: Abfragedaten von Formular übernhmen
Beitrag von: database am August 11, 2011, 10:04:20
Hallo,

das kann auch so nicht funktionieren, da du in der Spaltenliste der Abfrage die Textfelder der verbundenen Tabellen stehen hast und nicht deren Fremschlüssel!

Versuche daher mal folgendes:


'berechtigung
If Not IsNull(Me!komb_berechtigung) Then
   If strKrit <> "" Then
       strKrit = strKrit & " AND Berechtigung='" & Me!komb_berechtigung.Column(1) & "'"
   Else
       strKrit = "Berechtigung='" & Me!komb_berechtigung.Column(1) & "'"
   End If
End If
'System
If Not IsNull(Me!komb_system) Then
   If strKrit <> "" Then
       strKrit = strKrit & " AND Systembezeichnung='" & Me!komb_system.Column(1) & "'"
   Else
       strKrit = "Systembezeichnung='" & Me!komb_system.Column(1) & "'"
   End If
End If
'zuständigkeit
If Not IsNull(Me!komb_zustaendigkeit) Then
   If strKrit <> "" Then
       strKrit = strKrit & " AND Zustaendigkeit='" & Me!komb_zustaendigkeit.Column(1) & "'"
   Else
       strKrit = "Zustaendigkeit='" & Me!komb_zustaendigkeit.Column(1) & "'"
   End If
End If



HTH

p.s. Die obige Variante funktioniert mit der DB aus #35 Wenn die restlichen Einstellungen ebenfalls auf die Abfragefelder angepasst wurden (Statusbezeichnung, Abteilungsname, ...) !!