Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: SG05 am Juni 09, 2016, 13:18:42

Titel: Abfrage über Modul
Beitrag von: SG05 am Juni 09, 2016, 13:18:42
Hallo zusammen,

ich selektiere ein UFO über ein Kombinationsfeld. Bei "Klicken" wird folgender Code ausgeführt:

Public Sub Auswahl_001()
Dim strkrit As String

If Not IsNull(Forms!For_Unternehmen!LfdStandortNr) Then strkrit = strkrit & " and [LfdStandortNr] =" & Forms!For_Unternehmen!LfdStandortNr Or Forms!For_Unternehmen!LfdStandortNr = 4
If Len(strkrit) > 0 Then strkrit = Mid(strkrit, 6)
Forms!For_Unternehmen!For_Unternehmen_01.Form.Filter = strkrit
Forms!For_Unternehmen!For_Unternehmen_01.Form.FilterOn = True

End Sub


Ohne meine Erweiterung des Codes um "Or Forms!For_Unternehmen!LfdStandortNr = 4" klappt es gut.

Nun die Fehlermeldung:

Laufzeitfehler 13 "Typ unverträglich"

Erbitte Eure Hilfe....
Titel: Re: Abfrage über Modul
Beitrag von: MaggieMay am Juni 10, 2016, 01:38:16
Hallo,
Zitatich selektiere ein UFO über ein Kombinationsfeld.
Was genau darf man sich darunter vorstellen?

ZitatOhne meine Erweiterung des Codes um "Or Forms!For_Unternehmen!LfdStandortNr = 4" klappt es gut.
Dann vergleiche doch mal den Code vor der Erweiterung mit dem nach der Erweiterung.

Sorry, aber denk doch einfach nochmal ganz genau darüber nach, was du da an SQL-Code mit Hilfe von Strings und Variablen (dazu zählt auch der Bezug auf Formular-Steuerelemente) zusammenschusterst - vielleicht kommst du dann von selbst darauf oder es ergeben sich ganz andere Fragen.

BTW:
Code-Auszüge bitte stets in Code-Tags verpacken, weil sie so einfach besser lesbar und auch leichter kopierbar sind.
Titel: Re: Abfrage über Modul
Beitrag von: bahasu am Juni 10, 2016, 08:20:59
Hi,

wenn z.B. Forms!For_Unternehmen!LfdStandortNr = 3
dann interpretiere ich die Anweisung
strkrit = strkrit & " and [LfdStandortNr] =" & Forms!For_Unternehmen!LfdStandortNr Or Forms!For_Unternehmen!LfdStandortNr = 4
so:
Wenn LfdStandortNr = 3 {also eine Zahl) oder ist gleich wahr.

Oder hattest Du gemeint:
strkrit = strkrit & " and [LfdStandortNr] =" & Forms!For_Unternehmen!LfdStandortNr & " Or " & Forms!For_Unternehmen!LfdStandortNr = 4

Harald
Titel: Re: Abfrage über Modul
Beitrag von: SG05 am Juni 14, 2016, 20:33:22
Hallo bahasu,

sorry für die späte Reaktion....

Ja, Forms!For_Unternehmen!LfdStandortNr ist eine Zahl und kann 1,2 oder 3 sein. Die 4 soll immer angezeigt werden.

Also eine Auswahl mit zwei Werten ( z.B. alle Standorte mit der Nummer 1 und 4 )
Titel: Re: Abfrage über Modul
Beitrag von: MaggieMay am Juni 15, 2016, 00:14:12
Hallo,

deine Aussage ist nicht eindeutig interpretierbar:
Zitat von: SG05 am Juni 14, 2016, 20:33:22
Die 4 soll immer angezeigt werden.
und steht im Widerspruch zu deinen anfänglichen Erklärungsversuchen.

ENTWEDER

es sollen alle Standorte gewählt werden, die der Eingabe entsprechen oder die den Wert 4 haben
strkrit = strkrit & " And ([LfdStandortNr] =" & Forms!For_Unternehmen!LfdStandortNr & " Or [LfdStandortNr] = 4)"

ODER

es sollen alle Standorte angezeigt werden, die der Eingabe entsprechen - oder die Eingabe entspricht dem Wert "4", dann sollen alle angezeigt werden.
strkrit = strkrit & " And ([LfdStandortNr] =" & Forms!For_Unternehmen!LfdStandortNr & " Or " & Forms!For_Unternehmen!LfdStandortNr = 4 & ")"

Was also ist gemeint?

PS:
In jedem Fall sollten hier aufgrund der OR-Verknüpfung Klammern gesetzt werden.
Titel: Re: Abfrage über Modul
Beitrag von: SG05 am Juni 15, 2016, 07:59:49
Hi MaggieMay,

wenn man glaubt zu wissen was mach möchte, ist die Erklärung für Dritte schwer.....

Im Kombinationsfeld kann einer von drei Standorte gewählt werden ( 1,2 und 3 ). Es werden dann im Ufo die Firmen des jeweiligen Standortes angezeigt.
Der Standort 4 beinhaltet alle Firmen, die an allen Standorten tätig sind.
Somit möchte ich die Auswahl eines Standortes (1,2 oder 3 ) und immer 4

Titel: Re: Abfrage über Modul
Beitrag von: DF6GL am Juni 15, 2016, 08:27:39
Hallo,

hier frage ich mich auch nach dem Sinn, bzw. der Logik..


Zitatund immer 4


Wozu brauchst Du eine Einschränkung (1,2,3) , wenn immer alle (4)  Standorte mit deren Firmen angezeigt werden sollen??

Vermutlich meinst Du aber, dass  die StandortFirmen 1, 2 und 3 nicht in  den Standortfirmen 4    enthalten sind...
Zitat.
.
.
strkrit = "LfdStandortNr = 4"
If Not IsNull(Forms!For_Unternehmen!LfdStandortNr) Then strkrit = strkrit & " Or [LfdStandortNr] =" & Forms!For_Unternehmen!LfdStandortNr
If Len(strkrit) > 0 Then strkrit = Mid(strkrit, 5)
Forms!For_Unternehmen!For_Unternehmen_01.Form.Filter = strkrit
.
.
Titel: Re: Abfrage über Modul
Beitrag von: bahasu am Juni 15, 2016, 10:37:00
Vorschlag:
If Len(strkrit) > 0 Then strkrit = Mid(strkrit, 5)

ansonsten bleibt übrig: "andortNr = 4"

Harald
Titel: Re: Abfrage über Modul
Beitrag von: DF6GL am Juni 15, 2016, 11:39:31
Hallo,

in der Tat... 8)
Titel: Re: Abfrage über Modul
Beitrag von: MaggieMay am Juni 15, 2016, 16:26:08
Hi,
Zitat von: SG05 am Juni 15, 2016, 07:59:49
Somit möchte ich die Auswahl eines Standortes (1,2 oder 3 ) und immer 4
das wäre dann also meine "Entweder"-Lösung.
Titel: Re: Abfrage über Modul
Beitrag von: SG05 am Juni 15, 2016, 20:57:03
Hi zusammen,

ich versuche, es genauer zu erklären:

Standorte:
LfdNr= 1 ( Hamburg )
LfdNr= 2 ( Berlin )
LfdNr= 3 ( München )
LfdNr= 4 ( Deutschland )

Jede Stadt hat seine Dienstleister. Die Dienstleister, die an mehr als an einem Standort tätig sind, werden unter Standort "Deutschland" (LfdNr= 4 ) geführt und sollen dann von allen Standorten verwaltet werden, da das Kombifeld gesperrt ist und über Standardwert die LdfNr 1,2 oder 3 über den jeweiligen User vorgegeben wird.

Wenn ich die Auswahl nicht über VBA sondern als Kriterium in der Datensatzquelle des Ufo eintrage, funktioniert es mit:

Forms!For_Hfo!LfdStandortNr Oder 4

Ich hoffe, die Erklärung bringt Licht ins Dunkle und wir kreisen das Problem ein...
Titel: Re: Abfrage über Modul
Beitrag von: MaggieMay am Juni 15, 2016, 22:05:48
Das ist dann aber immer noch meine "Entweder"-Lösung aus Beitrag #4 - oder wo siehst du ein Problem damit?

Zitatsondern als Kriterium in der Datensatzquelle des Ufo eintrage
Was genau ist damit gemeint? Die Entwurfsansicht einer Abfrage?
Dann wechsle mal in die SQL-Ansicht und schau dir dort das Kriterium an!
Titel: Re: Abfrage über Modul
Beitrag von: DF6GL am Juni 16, 2016, 08:23:25
Hallo,

ich weiß nicht, wo das Problem liegen sollte, wenn man von der ungenügenden Normalisierung der Daten und der plötzlichen Formularname-Änderung absieht...

dieser Code:
Zitat
strkrit = "LfdStandortNr = 4"
If Not IsNull(Forms!For_Unternehmen!LfdStandortNr) Then strkrit = strkrit & " Or [LfdStandortNr] =" & Forms!For_Unternehmen!LfdStandortNr


oder die "Entweder"-Lösung von MaggieMay


ist doch mit diesem Kriterium (in der Abfrage)
ZitatForms!For_Hfo!LfdStandortNr Oder 4   '??

identisch....