Neuigkeiten:

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

Mobiles Hauptmenü

Lagerbestand von Bauteilen bearbeiten

Begonnen von Shayol, September 12, 2015, 08:05:55

⏪ vorheriges - nächstes ⏩

Shayol

#15
Habe dir das Formular und die Abfrage als Bild angehängt. Und die Berechnung findet selbstverständlich in der Abfrage ( Suchen) statt. :) hast du mir nahe gelegt  8)

MzKlMu

Hallo,
im Anhang findest Du eine Beipiel, wie ich das machen würde.
Öffne einfach mal das Formular "frmErfassung". Da befindet sich leiks ein Listenfeld zum Suchen das auch mit dem Kombi oben gefiltert werden kann. rechst siehst Du dann den Datensatz des Bauteils. Im Formular befindet sich auch ein Register mit 3 Seiten. Auf der 3.Seite siehst Du alle Vorgänge, dort kann nichts geändert werden. Je nach Vorgang wird WE bzw. WA gewählt, der entsprechende Vorgangschlüssel ist automatisch vorbelegt. Der Bestand rechts oben wird sofort aktualisiert.

Im Beziehungsfenster ist immer referentielle Integrität einzustellen. ID sollten auch nicht einfach ID genannt werden, Du verlierst sonst den Überblick, welche ID denn gemeint ist. Siehe auch mein Beispiel.

Das Beispiel ist weitgehend getestet, was aber nicht heißt, dass es fehlerfrei ist. Einfach mal rum probieren.
Gruß Klaus

Shayol

#17
Zitat von: MzKlMu am September 19, 2015, 19:59:21
Im Beziehungsfenster ist immer referentielle Integrität einzustellen. ID sollten auch nicht einfach ID genannt werden, Du verlierst sonst den Überblick, welche ID denn gemeint ist. Siehe auch mein Beispiel.

Genau das habe ich immer gesucht und nie gefunden, geschweige wie das heisst :)= Nochmals danke !
Extrem gut, dann werde ich das gute Stück mal testen.

Shayol

Möchte mich nochmal bei dir bedanken MzKlMu, das du mir geholfen hast.

Ich habe mich seitdem beschäftigt, vorallem mit dem filter. Ich habe zusätzlich noch 2 Suchfelder hinzugefügt und versucht diese ebenfalslls einzubinden in der Suche. Aber versagt bis jetzt nur. Könntest du mir Tipps geben wie ich das einbinden könnte , geschweige mit dem Suchfeld Typ-Nummer.

mfg Shayol

MzKlMu

#19
Hallo,
das mit der Art ist falsch. Die Art ist ja vom Hersteller abhängig, S7 macht ja nur Siemens. Es muss also bei der Art einen Fremdschlüssel zum Hersteller geben. In die Tabelle mit den Bauteilen kommt dann nur ein Fremdschlüssel zur Art. Der Fremdschlüssel "ID_Hersteller_F" entfällt, da die Art auch zweifelsfrei den Hersteller bestimmt. Oder kann eine Art auch mehrere Hersteller betreffen?
S7, S5 gibt es ja nur von Siemens, wie sieht das bei anderen Bauteilen aus ?
Nach Art zu filtern ist OK, aber wieso willst Du nach Typ filtern, es gibt bei den Typen ja auch keine Duplikate, wieso willst Du dann filtern?

Erst muss das geklärt sein, bevor wir weiter machen.
Gruß Klaus

Shayol

Eine Art kann auch mehrere Hersteller betreffen. Die sind nur noch nicht in der Db aufgelistet von mir, die DB wird später gefüllt , das werden extrem viele werden. Hab sie noh nicht eingetragen.
Beispiel:
Siemens -> S7
Viper -> S7
.... -> S7

Da die Liste noch länger wird würde es sich anbieten ebenfalls nach Typen zufiltern oder nur nach Typen filtern zulassen. Flexible solte der Filtern sein.

MzKlMu

Hallo,
auf Grund der Tatsache, dass eine Art mehrere Hersteller haben kann, muss das Datenmodell geändert werden. Es wird eine Zwischentabelle zur Zuordnung der Art zum Hersteller notwendig.
Dadurch ändert sich auch der Filter bzw. dessen Zusammensetzung. Das dauert jetzt aber etwas.
Gruß Klaus

Shayol

https://www.youtube.com/watch?v=xq6pzJZqfRo

Habe bei Youtube das Video gefunden , bezüglich dem suchen/filtern. Sehr flexible das ganze und beliebig erweiterbar. Falls dich das Interessiert.

Gruß Patrick

MzKlMu

Hallo,
da gibt es natürlich einiges zu meckern.
Auf das Video bezogen:
Suchen erfolgen immer über die ID (den Primärschlüssel) und nicht über den Klartext. Suchen über Zahlen geht schneller, bei vielen Datensätzen merkbar, außerdem ist ein Schlüsselfeld indiziert was für eine Suche unerlässlich ist..
Der Joker (*) bei der Suche über das Kombi ist Unsinn, es kann ja über das Kombi nur der vollständige Text übergeben werden, also macht der Joker hier keinen Sinn. Beim Textfeld ist das OK.
Von Parameterabfragen in der Form wird immer abgeraten, außerdem sind die Parameter nicht definiert.

Ich würde das Video auf keinen Fall verwenden ich halte das für nicht professionell.
Gruß Klaus

Shayol

Gut zu wissen , werde mir das merken .
Wollte dir nur das Video zeigen wie ich das meinte von d er Funktion her , bezüglich dem "suchen von Bauteilen" in meinem Fall. Manchmal drücke ich mich falsch aus , das wollte ich verhindern dadurch.  ;D

MaggieMay

Zitat von: MzKlMu am September 23, 2015, 20:14:26
Ich würde das Video auf keinen Fall verwenden ich halte das für nicht professionell.
Sorry, aber ich würde das so nicht stehen lassen wollen.

Nicht alles was nicht "professionell" ist, ist automatisch schlecht oder gar falsch.
Man kann das durchaus so machen (wie man sieht), aber natürlich kann man es auch "besser" machen. ;-)
Freundliche Grüße
MaggieMay

MaggieMay

Hallo,

die folgende Abfrage kannst du als Datensatzherkunft für das Listenfeld und als Datenquelle für das Formular einsetzen:
SELECT Bauteile.ID_Bauteil, Hersteller.Hersteller, Art.Art, Bauteile.Typ_Nummer, Bauteile.Beschreibung, Bauteile.ID_Hersteller_F,
Art.ID_Art, Bauteile.Schrank, Bauteile.Fach, Bauteile.Ebene, Bauteile.Reihe, Lager.Lager, Lager.Pfeiler, Lager.LagerOrtBeschreibung
FROM Lager INNER JOIN (Art INNER JOIN (Hersteller INNER JOIN Bauteile ON Hersteller.ID_Hersteller=Bauteile.ID_Hersteller_F)
ON Art.ID_Art=Bauteile.ID_Art_F) ON Lager.ID_Lager=Bauteile.ID_Lager_F
WHERE (
((Bauteile.Typ_Nummer) Like Forms!frmErfassung!txtTypNummer & "*") And
((Bauteile.ID_Hersteller_F)=Forms!frmErfassung!cboHersteller Or Forms!frmErfassung!cboHersteller Is Null) And
((Art.ID_Art)=Forms!frmErfassung!cboArt Or Forms!frmErfassung!cboArt Is Null)
)
ORDER BY Hersteller.Hersteller, Art.Art, Bauteile.Typ_Nummer, Bauteile.Beschreibung;


Und dies wäre der VBA-Code für das Hauptformular:
Private Sub Form_Open(Cancel As Integer)
    DoCmd.Maximize
End Sub

Private Sub Form_Current()
    Me.lstBauteilsuche = Me.ID_Bauteil
End Sub

Private Sub lstBauteilsuche_AfterUpdate()
    Me.Recordset.FindFirst "[ID_Bauteil] = " & Me.lstBauteilsuche
End Sub

Private Sub cboHersteller_AfterUpdate()
    frm_Requery
End Sub

Private Sub cboArt_AfterUpdate()
    frm_Requery
End Sub

Private Sub txtTypNummer_AfterUpdate()
    frm_Requery
End Sub

Sub frm_Requery()
    Me.lstBauteilsuche.Requery
    If Me.lstBauteilsuche.ListCount = 0 Then
        MsgBox "Suchwerte nicht gefunden, der Filter wird zurückgesetzt."
        btnFilterLoeschen_Click
    Else
        Me.Requery
    End If
End Sub

Private Sub btnFilterLoeschen_Click()
    Me.cboHersteller = Null
    Me.cboArt = Null
    Me.txtTypNummer = Null
    Me.Requery
    Me.lstBauteilsuche.Requery
End Sub


Beachte, dass ich das Textfeld umbenannt habe und achte darauf, dass alle benötigten Ereigniseigenschaften auf "Ereignisprozedur" eingestellt werden.

Die Datenauswahl wird also ebenso wie im Video allein über die Abfrage gesteuert, das Formular selbst wird nicht gefiltert.
Ich hoffe, das hilft dir weiter.
Freundliche Grüße
MaggieMay

MzKlMu

Hallo,
wie ich in #21 schon geschrieben habe, muss das Datenmodell geändert werden. Daher werden die Filter so nicht mehr funktionieren, denn die Zusammenhänge haben sich geändert. Die ID_Art_F gibt es in der Tabelle nicht mehr, ebenso die ID_Hersteller_F.

Ich bin nur noch nicht dazugekommen, das einzubauen, wie ich es gesagt habe.
Wird über das Wochenende aber klappen.
Gruß Klaus

MaggieMay

Hallo Klaus,

und ich dachte schon, du wärst nicht mehr dabei.
Freundliche Grüße
MaggieMay

MzKlMu

Hallo,
so, da bin ich wieder. Hat etwas länger gedauert.

Das Datenmodell wurde geändert. Es gibt jetzt eine Tabelle zur Zuordnung der Hersteller zur Art. Deren Primärschlüssel wird jetzt als Fremdschlüssel in die Bauteiltabelle übernommen.
Dieser Schlüssel ist die eindeutige Kombination aus Hersteller und Art.
Dazu ist ein weiteres Formular notwendig (frmArtHerstellerZuordnung) das diese Zuordnung macht.
Im Hafo Erfassung kannst Du jetzt einen Hersteller vorauswählen und erhältst für die Art nur den vorgewählten entsprechenden Hersteller.

Ich habe die Bauteiltabelle mal gekürzt, damit Du direkt siehst, wenn im Hafo eine andere Art gewählt wird. Vorher muss ein Hersteller gewählt werden.

DB anbei.

Gruß Klaus