Neuigkeiten:

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

Mobiles Hauptmenü

Abfrage über Modul

Begonnen von SG05, Juni 09, 2016, 13:18:42

⏪ vorheriges - nächstes ⏩

SG05

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....

MaggieMay

#1
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.
Freundliche Grüße
MaggieMay

bahasu

#2
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
Servus

SG05

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 )

MaggieMay

#4
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.
Freundliche Grüße
MaggieMay

SG05

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


DF6GL

#6
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
.
.
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

bahasu

Vorschlag:
If Len(strkrit) > 0 Then strkrit = Mid(strkrit, 5)

ansonsten bleibt übrig: "andortNr = 4"

Harald
Servus

DF6GL

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

MaggieMay

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.
Freundliche Grüße
MaggieMay

SG05

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...

MaggieMay

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!
Freundliche Grüße
MaggieMay

DF6GL

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....
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