Neuigkeiten:

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

Mobiles Hauptmenü

Datensätze über kombinierte Kriterien in mehreren Spalten filtern

Begonnen von Churian, Mai 26, 2015, 13:14:13

⏪ vorheriges - nächstes ⏩

Churian

Hey

die Idee hatte ich auch, die Artikel in einer Tabelle zu erfassen aber das sind im Laufe der Jahre mehrere tausend Stück geworden die sich teilweise auch gar nicht so einfach klassifizieren lassen.
Die Idee ist natürlich super aber wenn der Benutzer dann aus einer Liste mit 200-500 Artikeln wählen muss halte ich das für zu viel. Es ist auch so das es sowohl Z320078 als auch Z32078 gibt und dann trotzdem ein Fehler eingegeben wird.

Ich hatte die Suche bisher über eine Abfrage gemacht in die ich alle Spalten die ich brauchte eingegeben habe. Wenn ich mir jetzt dann alle Ergebnisse anzeigen lasse stehen ja je nach Anzahl der Ausfälle und Artikelnummern mehrfach die Einsätze nur mit je anderen Ausfällen und Artikeln.

MzKlMu

Hallo,
Du solltest unbedingt eine Tabelle für die Artikel anlegen. Ein Kombi hat die Eigenschaft "Automatisch ergänzen" wenn die auf Ja steht, bist Du auch mit 100erten von Artikel sehr schnell bei dem gewünschten Artikel, Ein Z eingeben und schon bist Du bei Z.....
ZitatEs ist auch so das es sowohl Z320078 als auch Z32078 gibt und dann trotzdem ein Fehler eingegeben wird.
Dann ist das ja ein sachlicher Fehler und kein Tippfehler. Jeder Tippfehler erzeugt einen Artikel den es nicht gibt. Außerdem ist es ein Haufen Schreibarbeit jedes mal Artikelnummer und Bezeichnung einzugeben. Und dann auch noch Tippfehler bei Bezeichnung, das gibt ein grausliger Datenwust.

Dein Suchproblem habe ich jetzt nicht verstanden.
Gruß Klaus

Churian

Hallo,

das mit den Kombis werde ich mir nochmal durch den Kopf gehen lassen. Wahrscheinlich mache ich mir die Arbeit nochmal. Das Hauptproblem ist das fast alle Artikelnummern mit Z oder F anfangen und dann mit einer Zahl weiter gehen. Das sind dann pro Buchstabe enorm viele.

Ich beschreibe mein Problem mal anschaulicher. Ich habe 3 Datensätze eingegeben. Der Erste hat einen Ausfall und einen Artikel,
der zweite hat 3 Ausfälle und 3 Artikel und
der letzte hat keinen Ausfall und Artikel.
Die Abfrage/Suche zeigt mir nun 8 Einträge an: Einmal Einsatz 1, 6 mal Einsatz 2 und 1 mal Einsatz 3.

MaggieMay

Freundliche Grüße
MaggieMay

Churian

Hallo,

hier der Code meiner Abfrage:

SELECT tbl_Serviceverzeichnis.Mitarbeiter, tbl_Serviceverzeichnis.RV_Nummer, tbl_Serviceverzeichnis.Herstellnummer, tbl_Serviceverzeichnis.Datum, tbl_Maschinentyp.Maschinentyp, tbl_Bezeichnung.Bezeichnung, tbl_Einsatzart.Einsatztyp, tbl_Techniker_v_Servicepartner.Techniker_Name, tbl_GvFvK.GvFvK, tbl_Serviceverzeichnis.Stundensatz, tbl_Serviceverzeichnis.[Arbeitszeit in Stunden], tbl_Serviceverzeichnis.Fahrtkosten, tbl_Serviceverzeichnis.[Anfahrt in km], tbl_Serviceverzeichnis.Zusatzkosten, tbl_Serviceverzeichnis.Materialkosten, tbl_Serviceverzeichnis.Gesamtkosten, tbl_Serviceverzeichnis.Aufschlag, tbl_Ausfälle.Ausfall, tbl_Artikelnummer.Artikelnummer, tbl_Artikelnummer.Menge
FROM tbl_Antriensart INNER JOIN (tbl_Maschinentyp INNER JOIN ((tbl_EigenFremd INNER JOIN tbl_Techniker_v_Servicepartner ON tbl_EigenFremd.ID_EF = tbl_Techniker_v_Servicepartner.ID_EF) INNER JOIN (((tbl_Bezeichnung INNER JOIN (tbl_GvFvK INNER JOIN (tbl_Einsatzart INNER JOIN tbl_Serviceverzeichnis ON tbl_Einsatzart.ID = tbl_Serviceverzeichnis.Einsatztyp) ON tbl_GvFvK.ID = tbl_Serviceverzeichnis.GvFvK) ON tbl_Bezeichnung.ID_Bezeichnung = tbl_Serviceverzeichnis.Modell) LEFT JOIN tbl_Artikelnummer ON tbl_Serviceverzeichnis.ID = tbl_Artikelnummer.Service_ID) LEFT JOIN tbl_Ausfälle ON tbl_Serviceverzeichnis.ID = tbl_Ausfälle.Service_ID) ON tbl_Techniker_v_Servicepartner.ID_Techniker = tbl_Serviceverzeichnis.Techniker) ON tbl_Maschinentyp.ID_Typ = tbl_Bezeichnung.ID_Typ) ON tbl_Antriebsart.Antriebs_ID = tbl_Maschinentyp.Antriebs_ID
ORDER BY tbl_Serviceverzeichnis.Datum;

MaggieMay

Na, wenn du alle Tabellen und auch deren Datenfelder mit in die Abfrage nimmst, brauchst du dich nicht zu wundern, dass die Abfrage alle Datensätze liefert.
Freundliche Grüße
MaggieMay

Churian

#36
Wundern tue ich mich eigentlich auch nicht. Geht das auch anders? Also das ich alles zu einem Einsatz sehe ohne das mir Kosten Techniker etc. mehrfach angezeigt werden? Oder anders gefragt kann ich nur die Ausfälle und Artikelnummern mehrfach anzeigen?

MaggieMay

Hi,

wie stellst du dir das vor? Du könntest die Einsätze in einem Hauptformular und die Ausfälle und Artikelnummern in Unterformularen anzeigen. Wäre das eine Lösung für dich?

Anstelle der Unterformulare wären auch Listenfelder möglich.
Freundliche Grüße
MaggieMay

Churian

Hallo,

ich hätte schon ganz gerne ein Endlosformular. Die Einzelformulare sind nicht übersichtlich wenn man mehrere Datensätze  schnell vergleichen möchte.
Ich dachte an sowas:
1. Eintrag: Herstellnummer1 Techniker1 Ausfall1   Artikelnummer1
                                                           Ausfall2  Artikelnummer2
                                                                         Artikelnummer3
2. Eintrag: Herstellnummer2 Techniker2 Ausfall3    Artikelnummer4
3. Eintrag: Herstellnummer3 Techniker3 Ausfall4   Artikelnummer5
                                                                          Artikelnummer6
                                                                          Artikelnummer7

Ist das möglich?
Denn wenn das nicht funktioniert muss ich zu meinem alten Modell zurück und die Anzahl der möglichen Artikel und Ausfälle begrenzen und alles in eine Zeile, in der gleichen Tabelle speichern.


Grüße

MaggieMay

Hi,

wenn es dir genügt, die Daten nur zu sehen und nicht ändern zu können, kannst du die Funktion "SQLLIste" aus dem dbWiki einsetzen, um die Ausfälle und Artikel pro Eintrag zusammenzufassen, entweder kommagetrennt oder auch mit Zeilenvorschub.

Zum alten Modell solltest du auf keinen Fall zurückkehren.
Freundliche Grüße
MaggieMay

Churian

Hi,

Ist das der Link den du meintest?
http://dbwiki.net/wiki/VBA_Tipp:_Liste_per_SQL_aufbauen

Ich muss die Daten auch Filtern können.
Mein Problem mit der Abfrage die 6 Datensätze für einen Einsatz anzeigt ist das ich evtl. nur nach dem Techniker filtern möchte und so plötzlich 6 Einsätze bekomme die alle gleich sind.

Ich ziehe später aus der Abfrage und dem Filter einen Bericht der Kosten aufsummiert. So bekomme ich ja 6 mal den Einsatz verrechnet anstatt einmal.

Mein vorheriges Modell. Nicht Datenmodell sondern das ich höchstens 4 Artikel und 4 Ausfälle habe, kann das was ich will. Das neue nicht

MaggieMay

Ja, das ist der Link den ich meinte.

Was das neue Datenmodell betrifft, so musst du nur lernen, richtig damit umzugehen. Wenn du eine Beispiel-DB mit ein paar Testdaten hochlädst, ist es leichter, dir dabei zu helfen.
Freundliche Grüße
MaggieMay

Churian

#42
Hey,

kann ich diese Liste dann auch Filtern?
das Datenmodell funktioniert ja und ändern will ich das nicht nochmal. Es ist aber so das meine Suche mir mit der Abfrage jetzt die Datensätze mehrfach wiedergibt und nur die Artikel bzw. Ausfälle ändert.
Wenn ich nun die Artikel oder Ausfälle nicht rausfiltere und mir mal die arbeiten des Technikers Müller ansehen will erscheinen die Einsätze ja mehrfach.
Anschließend im Bericht wird dann für einen Einsatz der meinetwegen 40 Euro gekostet hat, aber 4 Ausfälle hat 160€ verbucht dar ich ja diese Mehrfachnennung habe.
Kann ich in der Abfrage was verändern um das zu umgehen oder ein Listenfeld erstellen in dem dann zu jedem Einsatz die entsprechenden Artikel oder Ausfälle angezeigt werden. Die Listenfeldidee finde ich recht gut nur muss auch hier am ende ein Filter funktionieren um nach Artikel zu filtern.
Nochmal was anderes ich kann in dem Endlosformular nicht nach dem Datum filtern wegen dem amerikanischen Datumsformat. Ich habe versucht folgenden Code in mein Suchformular einzugeben:

Public Function CDateSQL(vardatum As Variant) As String

    If IsDate(vardatum) Then

        CDateSQL = Format(CDate(vardatum), "'yyyy-mm-dd'")

    End If

End Function

aber ohne Erfolg

Liebe Grüße

Churian[/code]

MaggieMay

#43
Es ist ganz natürlich, wenn alle Tabellen und auch deren Datenfelder in der Abfrage vorkommen, dass es so viele Datensätze ergibt wie in den n-Beziehungen vorhanden sind.

Im Formular kannst du die abhängigen Datensätze mit Hilfe von Listenfeldern darstellen, im Bericht käme evtl. Gruppierung oder Unterberichte in Frage, abhängig vom Aufbau.

Wenn du mal eine Beispiel-DB hochladen könntest, würden wir sicher schnell eine Lösung finden. Ein Musterbericht sollte dabei schon vorhanden sein.

PS:
Das Filtern sollte ebenfalls lösbar sein, an einem konkreten Beispiel lässt sich das leichter (er)klären.

Das Datum sollte für den Einsatz in SQL folgendermaßen formatiert werden:CDateSQL = Format(CDate(vardatum), "\#yyyy\/mm\/dd\#")
Freundliche Grüße
MaggieMay

Churian

Hey ho,

die Probedatenbank ist aber jetzt im Anhang.
Ich musste einiges ändern wegen Datenschutz :-\
Viel Dank nochmal für die ganze Geduld die ihr mit mir habt :-[

Den Code habe ich auch schon gefunden. Ich weiß nur nicht wohin damit?

Grüße