Neuigkeiten:

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

Mobiles Hauptmenü

Suchformular: Aktualisierung d.Listenfelds auf Basis Mehrfachauswahl Listenfeld

Begonnen von Access_Starter_2010, November 12, 2010, 14:30:14

⏪ vorheriges - nächstes ⏩

DF6GL

Hallo,


Zitatnaja, es gibt Schlimmeres als den Kopf abgerissen zu bekommen... 

---> Dein Standpunkt     ;) ;D ;D




Zum Code:  (Selber) Debuggen ist angesagt.  Setz einen Haltepunkt an den Anfang des Codes und fahre mit Einzelschritt (F8) durch. Prüf dabei den akt. Inhalt der Variablen, bzw. Textfelder.

Lass im Code die Semikola bei
strKrit = strKrit & " or WorlistenFeld Like '*;" & Me!lstListe1.Column(0, itm) & ";*'"weg
->
strKrit = strKrit & " or WortlistenFeld Like '*" & Me!lstListe1.Column(0, itm) & "*'"
damit auch das erste oder letzte Wort gefunden werden kann.

Wortlistenfeld ist der Name der Tabellenspalte, in deren Datensätze diese ominösen Wortlisten drinstehen.


ZitatDie Daten, welche im "Ergebnis"-Listenfeld zu Beginn (bei Aufruf des Formulars) angezeigt werden, werden gelöscht,
sagt aus, dass die Prozedur an sich aufgerufen wird...

Hilfreich wäre, den Rowsource-Inhalt nach der Zuweisung im Direktfenster auszugeben, um den vollständigen SQL-String zu prüfen:

Me!lstListe2.RowSource = "select Feld1 from tblTabelle where " & strKrit
Debug.Print Me!lstListe2.RowSource
End Sub



Hilfreich wäre auch, Deinen verwendeten Code mit copy&paste hier rein zu stellen...


Weiterhin basiert das Ganze auf der Annahme, dass im Tabellen(!)feld auch tatsächlich diese Wortliste drinsteht...

Access_Starter_2010

Hi!

Der Code sieht bei mir also so aus:

Sub btnFilter_Click()
Dim itm, strKrit As String, i As Long
i = 0
For Each itm In Me!Auswahlliste.ItemsSelected
strKrit = strKrit & " or Branchenfokus Like '*" & Me!Auswahlliste.Column(0, itm) & "*'"
i = i + 1
Next
If Len(strKrit) > 0 Then strKrit = Mid(strKrit, 5)
Me!Ergebnisliste.rowsource = "select Branchenfokus from Datentabelle where " & strKrit
Debug.Print Me!Ergebnisliste.rowsource
End Sub


Beim Debuggen kann ich leider nichts entdecken, bin mir auch nicht so sicher worauf ich da achten soll.

Wenn ich jetzt draufdrücke passiert leider immer noch nichts, auch keine Druckausgabe o.ä.

Wie immer: vielen Dank!

DF6GL

Hallo,

der Code erscheint als noch nicht von VBA kompiliert zu sein...

Weiterhin:

Heißt das Listenfeld "Auswahlliste"   genau so?
Heißt das Listenfeld "Ergebnisliste"   genau so?

Heißt das "Wortlistenfeld" in der Tabelle "Branchenfokus"
Welchen Datentyp hat "Branchenfokus" ?


Was wird im Direktfenster angezeigt, nachdem der Code durchlaufen wurde? (Das Direktfenster evtl. einblenden mit Menüleiste/Ansicht/Direktfenster)


Schreib in den Modulkopf
Option Explicit
falls das noch nicht dort steht und kompiliere den Code (Debuggen/Kompilieren).

Hast Du einen Haltepunkt an den Anfang des Codes gesetzt und mit F8 im Einzelschritt durchfahren??

Wenn eine Zeile gelb markiert wird, ist das die akt. Codezeile und man kann durch Überfahren mit der Schreibmarke über eine Variable deren akt. Inhalt bekommen.

(ein bisschen Mitarbeit setze ich schon voraus    ::)  )



Ich hoffe nur, dass Access (2007/2010, hast Du auch noch nicht beantwortet) bei diesen Mehrfachauswahl-Kombis auch tatsächlich die entstehende Liste als String im Tabellenfeld speichert und nicht etwa da einen "Algorithmus" zwischen dem gespeicherten und dem angezeigten Wert dazwischen geschaltet hat.


Access_Starter_2010

#18
Hi!

ZitatHeißt das Listenfeld "Auswahlliste"   genau so?
Heißt das Listenfeld "Ergebnisliste"   genau so?
Heißt das "Wortlistenfeld" in der Tabelle "Branchenfokus"?

Ja
Ja
Ja --> bzw. der Spaltenname heißt so. D.h.: In der Tabelle "Datentabelle" gibt es eine Spalte mit dem Namen "Branchenfokus".

ZitatWelchen Datentyp hat "Branchenfokus" ?
--> Folgende Werte: Agrar, Industrie, Infrastruktur, etc.... (also: Text).

ZitatWas wird im Direktfenster angezeigt, nachdem der Code durchlaufen wurde?
select Branchenfokus from Datentabelle where Branchenfokus Like '*Cleantech*'


Das "Option Explicit" habe ich nun in den Modulkopf geschrieben, dafür musste ich aber "Compare Database" rauslöschen, sonst kam eine Fehlermeldung beim Kompilieren.

Das mit dem Haltepunkt habe ich gemacht und hab auch alles durchlaufen, der aktive Inhalt ist:
1. Bis zum "Next": strKrit = ""
2. Nach dem "Next":
Len(strKrit) = 36
strKrit = " or Branchenfokus Like '*Cleantech*"


Das sind die einzigen Sachen die er anzeigt.

Was Access mit den Eingaben bei dem Mehrfachauswahlfeld genau macht weiß ich natürlich nicht. Benutze Accesss 2007 wie im allerersten Beitrag oder auch dem von gestern 17:07Uhr erwähnt.

Danke!!!

DF6GL

Hallo,,


wenn das so ist:

Zitat--> Folgende Werte: Agrar, Industrie, Infrastruktur, etc.... (also: Text).

dann kann er "Cleantech"  ja auch nicht finden, wenn "Cleantech" nicht auch mal als Wert in o. g. Feld auftauchen kann. Soll heißen: kann "Cleantech" überhaupt ein Begriff in "Branchenfokus" sein?


Ich würde sagen, dass der Code funktioniert, aber die "Datenzusammenhänge" nicht ganz astrein sind.

Access_Starter_2010

Doch natürlich ist Cleantech drin.
Es gibt auch genügend Firmen mit dem "Cleantech"Eintrag in der Spalte.

Ich hab nur nicht alle aufgezählt! Soll ich die ganzen Branchen aufzählen?

DF6GL

Hallo,

naja, ich(!) weiß doch nicht , was für Werte  für einen Branchenfokus bei Dir gelten können...   ::)


Mindestens die der Lösung des Problems dienenden könntest Du auflisten.


Ich sehe ehrlich gesagt, hier keine Korrelation zwischen einem "Branchenfokus" wie z. B. "Industrie"  und einem Firmennamen (so es denn einer ist ? )  , wie z. B. "Cleantech"   ??? ???

Oder ist "Cleantech" eine Branche?

Wenn es eine Branche ist, (soll heißen, dieser Text kommt im Feld "Branchenfokus" in irgendeinem Datensatz vor , dann wird de entspr. Datensatz im Listenfeld auch angezeigt.


Außer , wenn meine vorher gesagte Vermutung zutrifft und diese Textwerte gar nicht in der Tabellenspalte als solche stehen, sondern die Tabellespalte mit dem Nachschlageassistenten erstellt wurde, so dass der Spalteninhalt nicht dem entspricht, was angezeigt wird, sondern auf eine weitere interne n-Tabelle zeigt , die die IDs der ausgewählten "Brachenfokus"se speichert.


Da kann ich aber im Moment keine Lösung anbieten.

oma

Hallo,

ich kenne mich mit Access2007 nicht aus, aber ein  Mehrfachauswahl-Kombinationsfeld möchte ich tatsächlich mal sehen!?

Gruß Oma
nichts ist fertig!

Access_Starter_2010

Hi!

Ja stimmt das konntest du nicht wissen, und ist auch gut, dass du nachgefragt hast!
Aber Cleantech ist kein Firmenname, sondern eine Branche (= Firmen, welche z.B. Wasseraufbereitungs-Technik entwickeln/produzieren).
Kommt also wirklich vor.

ZitatAußer , wenn meine vorher gesagte Vermutung zutrifft und diese Textwerte gar nicht in der Tabellenspalte als solche stehen, sondern die Tabellespalte mit dem Nachschlageassistenten erstellt wurde, so dass der Spalteninhalt nicht dem entspricht, was angezeigt wird, sondern auf eine weitere interne n-Tabelle zeigt , die die IDs der ausgewählten "Brachenfokus"se speichert.

Diese Vermutung habe ich so vorher nicht begriffen/kam nicht rüber. Denn ich glaube die ist richtig.
Die Eintragungen in der Spalte variieren von Firma zu Firma. Diese Eintragungen wurden mit einem Formular erstellt, welches ein Mehrfachauswahl-Kombifeld enthält. Dieses Kombifeld wurde mit einem Assistenten erstellt und holt sich die Werte aus einer Abfrage. Diese Abfrage holt sich die Werte aus einer extra-Tabelle, in welcher nur die Branchen eingetragen werden.


Meintest du das? Dann is natürlich blöd wenn es dafür nix gibt... Schade...

Trotzdem danke!

Access_Starter_2010

#24
Zitatich kenne mich mit Access2007 nicht aus, aber ein  Mehrfachauswahl-Kombinationsfeld möchte ich tatsächlich mal sehen!?

--> Siehe Bild im Anhang  ;)

[Anhang gelöscht durch Administrator]

DF6GL

Hallo,

öffne mal das Beziehungsfenster und mach einen Screnshot davon. Man sieht dann die "neue" Tabellenverknüpfung.

Vermutlich muß man eine verjointe Abfrage über die beteiligten Tabellen einsetzen und in der "Kombitabelle" die entsp. Spalte mit dem Kriteriumstext vergleichen.

Access_Starter_2010

#26
Hier mal der Screenshot.
Ich hab zwecks Vereinfachung die anderen Beziehungen mal rausgenommen. Es geht jetz aber nur um die Branchen, deswegen!

NACHTRAG: ach ja, nicht täuschen lassen von dem Namen "Accessimport", das stimmt schon so wie ich es in den bisherigen Posts gesagt habe, nämlich "Datentabelle".

[Anhang gelöscht durch Administrator]

DF6GL

Hallo,

ok, und wie man sieht, hat Branchenfokus eine interne Untertabelle...

Ich kann aber hier jetzt und im Moment nicht weiterhelfen...

Access_Starter_2010

Ok!
Aber nochmal danke für die viele Mühe!
Find's immer wieder toll, dass einem in Communities schnell, kostenlose und unkompliziert geholfen wird!

Dafür helf ich gern kostenlos in der Finanzbuchführung:-)

Access_Starter_2010

Wenn ich das jetzt für eine neue DB (andere Tabellen/Verwendungszweck) verwende, dann funktioniert der Code echt super!
Ein Problem verstehe ich aber nicht ganz:
Das Ergebnis-Listenfeld hat bspw. 5 Spalten. Bevor der Code ausgeführt wird, ist das Ergebnis-Listenfeld voll ausgefüllt, inkl. aller Spalten 1-5. Der Code bezieht sich im Beispiel nur auf die Variablen aus Spalte 1.
Nach Codeausführung zeigt er mir zwar die "Matches" in Spalte 1 an, allerdings ohne die zu den jeweiligen Datensätzen passenden Werte in den Spalten 2-5 an.
Der Code zeigt mir also wie gesagt die richtigen Matches an, allerdings werden die Werte aus den Spalten 2-5 dabei gelöscht/nicht mit angezeigt.

Was mache ich falsch?

Danke!!!