Hallo an alle
Ich habe hier ein Kombifeld in das ich eine Bezeichnung eingebe.
Wenn die schon vorhanden ist schreibt VBA etwas in ein Textfeld, was auch gut funktioniert.
Jetzt wird es aber sein, das neue Teile angelegt werden. Ich bekomme nicht hin, das die neue Bezeichnung in die Rowsource aufgenommen wird. Ich habe schon mehrere Versuche mit MsgBox wenn nicht in Liste gemacht aber bekomme das nicht hin.
Was ich will ist einfach nur, das wenn ich eine Bezeichnung eingebe die die Rowsource nicht kennt soll ein neues Formular aufmachen(ist schon vorhanden) in das ich eine neue Nummer eingeben kann die sich aus den alten ergibt.
Egal was ich versuche springt er immer in das Feld zurück. Habe sogar schon versucht mit SetFocus in die nächste Box zu springen. Kommt aber nur eine Fehlermeldung das es nicht geht.
Danke Cord
Hallo,
das Kombifeld muss bei "nur Listeneinträge" auf ja stehen.
Als Ereignisprozedur "bei nicht in Liste" :
Sub cmbDeinKombi_NotInList(NewData As String, Response As Integer)
Docmd.Openform "frmDeinForm", , , , acFormAdd, acDialog,NewData
Response = acDataErrAdded
End Sub
Im frmDeinForm:
Sub Form_Load()
If Not IsNull(Me.Openargs) Then Me!Bezeichung.DefaultValue=Me.Openargs
End Sub
Danke Franz das du wieder da bist.
Ich bekomme nach dem Ausführen des Formulars immer noch die Meldung:
Ist kein Element der Liste :o
Und die Übertragung der ersten beiden Nummernteile geht jetzt auch nicht mehr.
Komischerweise aber der Text der Kombifelder die für die Nummernteile zuständig sind. Ich versuche mal alles in Bild und Code anzuhängen.
Code des Formulars NeueNummer
Sub Form_Load()
If Not IsNull(Me.OpenArgs) Then Forms!frm_Neuteil_anlegen.cbo_frm_Neuteil_anlegen_G_Item.DefaultValue = Me.OpenArgs
Me!cboNeueNummer.SetFocus
'Me!cboNeueNummer.SelStart = Len(Me!cboNeueNummer)
Dim frm_NeueNummer
Me.cboNeueNummer = (strWsop) & "-" & (strMgr)
Response = acDataErrContinue
Me.txt_frm_NeueNummer_Workshop = Forms!frm_Neuteil_anlegen.cbo_frm_Neuteil_anlegen_Workshop.Column(2)
Me.txt_frmNeueNummerMaterialgruppe = Forms!frm_Neuteil_anlegen.cbo_frm_Neuteil_anlegen_Materialgruppe.Column(2)
End Sub
Code des Forms Neuteil anlegen
Private Sub cbo_frm_Neuteil_anlegen_G_Item_NotInList(NewData As String, Response As Integer)
DoCmd.OpenForm "frm_NeueNummer", , , , acFormAdd, acDialog, NewData
Response = acDataErrAdded
'Dim frm_NeueNummer
'DoCmd.OpenForm "frm_NeueNummer"
'Debug.Print strWsop
'Debug.Print strMgr
'Forms!frm_NeueNummer!cboNeueNummer = (strWsop) & "-" & (strMgr) & "-"
'Forms!frm_NeueNummer!txt_frm_NeueNummer_Workshop = Me.cbo_frm_Neuteil_anlegen_Workshop.Column(1)
'Response = acDataErrContinue
End Sub
Die im zweiten Code Auskommentierten Stellen habe ich in den ersten Code Verlagert, da auch der Text nicht angezeigt wurde. Jetzt ist der Text sichtbar aber die Nummernteile fehlen immer noch (siehe im Bild Fehlende Nummer), weil die Variablen auf einmal leer sind.
Cord
hallo, bin zur zeit nicht in der lage, vernüftig und lange texte/code zu screiben..
dein code passt aber hinten und vorn nicht..
Hallo Cord,
ZitatMe.cboNeueNummer = (strWsop) & "-" & (strMgr)
1. wo kommen die beiden Strings her?
2. was ist das für eine Nummer?
Wie es aussieht sind das zwei atomare Inhalte, die in zwei Tabellenfelder
gehören. Also Datenmodell überprüfen, und neuen Ansatz verfolgen.
gruss ekkehard
Hallo Beaker
Die Strings stammen aus dem ersten From (frm_Neuteil_anlegen) aus 2 Kombifeldern und werden dazu gebraucht um die Interne Nummer zu generieren. Das funktioniert dort auch ohne Probleme also das Aufnehmen scheint ja ok zu sein.
Ich habe die beiden Formulare als Bild mit Beschriftungen angehängt vielleicht kannst du damit ja was anfangen.
Nochmal zur Erklärung: Im ersten Formular wird wenn allles gut geht ein Neuteil angelegt und am Ende in die Tabellen geschrieben(tblAllParts,tblStueckliste). Diese neue Nummer wird generiert aus dem Workshop in dem es gebraucht wird, einer Materialkennung, sowie einer Beschreibung und einer Unterbeschreibung. Sollte eine Beschreibung(zB Werkbank) mehrfach vorhanden sein, weil etwas aus mehreren Teile besteht oder Ersatzteile mitgeliefert werden soll sich natürlich die Nummer fortsetzen.
Beispiel:
Workshop :Allgemein = 99
Materialgruppe: Werstattausstattung =21
G_Item : Werkbank = 001
SG_Item : Werkbank = 001
: Schraubstock = 002
Nummer :99-21-001-001 für die Werkbank
:99-21-001-002 für den Schraubstock
Hier könnten sich jetzt noch Befestigungsmaterial oder was auch immer anschliessen ist ja nur ein Beispiel.
Wenn noch Erklärungen meiner scheinbar wirren Gedankengänge nötig sind bitte fragen.
Cord
Hallo,
ich halte das Vorhaben in dieser Form für komplett überflüssig.
Die zusammengesetzte Nummer sollte nicht in der Tabelle gespeichert werden. Nur die fortlaufende Zählnummer ist zu speichern. Es macht auch keinen Sinn, die neue Nummer in einem Kombi anzuzeigen.
Die Nummer wird in einer Abfrage nur zusammengesetzt aus den 3 Gruppen und der Zählnummer.
Die Zählnummer wird in Abhängigkeit der 3 Gruppen automatisch hochgezählt.
Kannst Du bitte mal ein Bild des Beziehungsfensters posten ?
Hallo
habe das hochgeladen.
Die Streichungen sind Überreste aus der Übernahme aus der ursprünglichen Excelliste, sind noch da zum Überprüfen.
Das heisst ich muss nur für G_Item und SG_Item Nummern vergeben und der Rest wird dann für jeden Bericht zB zusammengesetzt?
Ist es nicht einfacher das zu Speichern, weil ist ja individuell für jedes Teil. Die G_Item und SG_Item kann ich nicht jedesmal berechnen, da die händisch eingegeben werden.
Cord
Hallo Cord,
ZitatDie G_Item und SG_Item kann ich nicht jedesmal berechnen,
Brauchst ja auch nicht; - die kannst du doch aus einem Kombi holen, wenn,
wie es richtig wäre, die beiden Gruppen in einer eigenen Tabelle gespeichert
sind.
gruss ekkehard
Dann habe ich wohl das ganze noch nicht verstanden.
Die Nummer die ich dort erzeugen will ist eine Ident Nummer die einem Teil zugeordnet wird und auch nur für das Teil zuständig ist. Deshalb will ich die ganze Kombination in der Tabelle tblAllParts speichern.
Ich habe hier mal die tblAllParts angehängt mit den Feldern, die ich meiner Meinung nach dort brauche.
Die markierten Dinge werden noch gelöscht wenn alles soweit fertig ist. Die ITS_InterneNummer soll für uns und unsere Lieferanten als Identifikation dienen.
Ich verstehe nicht warum ich das nicht in der Tabelle speichern sollte.
Cord
Hallo,
das Feld hat in der Tabelle nichts zu suchen. In einer Datenbank werden berechnete Felder nicht gespeichert sondern nur in Abfragen erzeugt und angezeigt. Nur dann kannst Du sicher sein, dass der Wert stimmt. Das gilt besonders dann wenn das Feld als Ident Nummer dient. Immer wenn die Ident Nummer benötigt wird, kommt eine Abfrage ins Spiel. Du musst die Zählnummer speichern, als Zahl, dann ist das Hochzählen sehr einfach.
Hallo,
ZitatIch verstehe nicht warum ich das nicht in der Tabelle speichern sollte.
weil das eine Berechnung ist und aus anderen Feldern aus der Tabelle, bzw. aus den Schlüsselfeldwerten zu anderen Tabellen hervorgeht..
Guten Morgen ihr beiden
Ich habe mal die Tabell als Bild nachgebaut.
Die erste ist was ich jetzt habe und ich hoffe die zweite sollte so sein wie es richtig ist?
Dann wird es aber zu Dopplungen der Internen Nummer führen in der Tabelle wobei ja die ID_Teile nie gedoppelt wird.
Ist es nicht komplizierter das immer zu berechnen anstatt nur das eine Feld einzufügen?
Und dann müsste ich die Nummern anpassen über eine Löschabfrage oder eine neue Spalte aufmachen und die gekürzte Nummer da einfügen ?
Ach und im Formular Neuteil dann die Zusammengesetzte Nummer zwar anzeigen aber nur die Zuordnung zu Workshop und Materialgruppe speichern ?
Cord
Das hat er verschluckt
Hallo,
wo ist das Bild?
Hallo,
Und wo kommt die "002" her? Das ist ein weiterer atomarer Inhalt, der in eine
eigene Tabelle gehört. Genauso wie die Werte in den markierten FK-Feldern.
Die gibt es ja scheinbar, wie ich dem Suffix "_F" entnehme.
gruss ekkehard
Hallo,
und die letzte Zahl ist die LfdNr die als Zahl (ohne führende 0) gespeichert werden muss. Diese lässt sich dann ganz einfach automatisch Hochzählen.
Wie ich das in #6 und #10 auch schon geschrieben habe.
Hallo Klaus
die 002 vergebe ich händisch für die Spalte G_Item_German in der Tabelle.
Die folgende Nummer ergibt sich aus der Anzahl der Einzelteile einer Beschreibung in G_Item_german 002-001, 002-002 usw
Die kann ich Meineserachtens nicht neu berechnen lassen, da diese ja immer so vergeben wurden mit den Vornummern aus ID_WS in der Workshoptabelle und er ID_MAT_GRP aus der Materialgruppentabelle. Sprich die 002-001 kann 10x da sein.
Nur die ID_Teile ist einzigartig.
Also soll ich die ITS-InterneNummer in eine eigene Tabell bringen, die aber über die ID_Teile mit der tblTeile verbunden wird ?
Braucht also auch der Preis und die Verpackungseinheiten eine eigene Tabelle ?
Sowie für ID_WS_F und ID_MAT_GRP_F eine eigene Tabelle mit ID_Teile und dem Fremdschlüssel ?
Irgendwie hakt da was bei mir glaube ich.
Ich habe hier die Mappe1 angehängt
C = Workshop
D = Materialgruppe
habe ich verstanden reicht der Schlüssel aus R und S
die hier 001 = Satz Laborglas kommt viele male vor
001-001 = Laborflasche 250ml
Das mus ich nochmal in eigene Tabellen bringen?
Automatisch hochzählen kann ich mir das nicht vorstellen ist abhängig von den ersten beiden Schlüsseln
Cord
Hallo,
das wird immer verwirrender.
ZitatC = Workshop
D = Materialgruppe
habe ich verstanden reicht der Schlüssel aus R und S
die hier 001 = Satz Laborglas kommt viele male vor
001-001 = Laborflasche 250ml
Wer soll das als Außenstehender verstehen. Was ist denn R und S ich sehe nur C und D ?
Wo kommt den jetzt 001-001 her ?
Wieso vergibst Du die 002 händisch ?
ZitatAlso soll ich die ITS-InterneNummer in eine eigene Tabelle bringen,
Nein, die ITS-InterneNummer kommt in keine Tabelle.
ZitatAutomatisch hochzählen kann ich mir das nicht vorstellen ist abhängig von den ersten beiden Schlüsseln
Natürlich kann man automatisch hochzählen. Es gibt die DMax Funktion und da lassen sich auch Kriterien unterbringen.
Also Maxwert betimmen mit den beiden Schlüsseln als Kriterium und 1 addieren, fertig.
Bitte beschreibe mal (mit
einheitlicher Nomenklatur) die 4 Gruppen der "ITS-InterneNummer" und wie diese zu Stande kommt.
Zeige bitte auch mal ein Bild des Beziehungsfensters.
Hallo Klaus
Beziehungen sind oben.
In der Tabelle sind die Spalten R und S die Schlüssel des Workshops und der Materialgruppe, ist für mich sichbar halt rechts von allem.
Die 001-001 ist aus der Tabelle die ich an den vorherigen Post angehängt habe. Diese werde ich jetzt für die Erklärung nutzen wie diese Art Nummer entstanden ist.
In Mappe1 findest du in Zeile 7 Spalte B die interne Nummer
Teil 1: Spalte C enthält den Workshop der auch gleichzeitig in der Spalte R als Identifier aus der zugehörigen Tabelle ist.
Teil 2:Spalte D enthält die Materialgruppe mit dem Identifier in Spalte S
Teil 3:Spalte E ist ein Oberbegriff für ein Teil (hier Satz Laborglas)
Teil 4:Spalte F ist eine Verfeinerung des Oberbegriffes (siehe Zeile 5 Spalte E [Futtertrog] Spalte F [Mörtelkübel, rund 60cm] oder Teil eines Satzes wie hier bei Laborglas oder Ersatzteil.
Die händische Vergabe hängt am Ursprung dieser gewachsenen Tabelle( war eine Monster Excelliste) Problem war und ist hier, das viele Tabellen erstellt wurden für unterschiedliche Schulen und nichts genormt war. So versuche ich aus dem Wirrwar eine Datenbank zu erstellen. Ich habe die Beispieltabelle angepasst und unnötige Spalten ausgeblendet.
So jetzt nochmal was ich aus dem was du bzw Franz geschrieben habt rauslese:
Die ITS interne Nummer wird an keine Stelle gespeichert sondern bei Bedarf über die Schlüssel für Workshop und Materialgruppe berechnet. Also Teil 1 und 2 der ITS Internen Nummer.
Wonach wird der Teil 3 Sortiert ? Alphabet ?
Teil 4 dann nach Teil 1+2+3 und Alphabet ?
Also kann Spalte B+C+D ersatzlos gestrichen werden und wird für jede Abfrage neu berechnet.
Ich hofe das wird besser nicht noch schlimmer durch meine Erklärungen
Cord
Hallo,
wenn ich das jetzt recht verstehe, wird die Interne Nummer aus 4(!) verschiedenen Stammdaten zusammengesetzt. Zwei von 4 Tabellen hast Du schon, ergo fehlen Tabellen für G_Item_German und SG_Item_German.
Das bedeutet, dass pro DS nur die Daten aus 4 Tabellen (Spalten C, D, E, F) gewählt werden und die InterneNummer daraus berechnet und z. B. in einem Textfeld angezeigt werden kann.
Inwieweit die Tabellen tbl_G_Item_German und tbl_SG_Item_German voneinander abhängig sind, muss Du selber wissen. Für die Auswahl (abhängige Kombis) und die Berechnung der internen Nummer ist das aber untergeordnet.
Was meinst Du mit "Sortieren"?
Hallo,
was immer noch verwirrend ist, in Spalte R steht für 07 der ITS interne Nummer eine 1, aber in der Zeile 5 steht für doe 07 eine 6 ?
Wie erklärt sich das ?
Und welche Zahlen willst Du jetzt hochzählen, da gibt es doch nichts zu Hochzählen ?
Ich sehe da nur 4 Tabellen die abhängig sind.
1 tabWorkshop
WorkshopID
WorkshopBezeichnung
2 tabMaterialgruppe
MaterialgruppeID
MatergruppeBezeichnung
WorkshopID_F
3 tabTeil
TeilID
Teilbezeichnung
MaterialgruppeID_F
4 tabTeilDetailID
TeilDetailID
TeilDetailBezeichnung
TeilID_F
Das sind 4 Tabellen mit 3 1:n Beziehungen, die Tabellen sind hierarchisch abhängig.
1 > 2 > 3 > 4
..ID = Primärschlüssel
..ID_F = Fremdschlüssel
> = 1 > n
In der Tabelle "tblAllParts" wird nur der letzte Schlüsselwert gespeichert, also der Primärschlüssel der Tabelle 4 (TeilDetailID).
Die Auswahl des richtigen Wertes erfolgt mit 4 Kombifeldern, 3 dienen zur Vorauswahl für 4.
Die Kombis 1, 2, 3 sind ungebunden.
Sind alle 4 Kombis gefüllt, wird über die Abfrage die richtige ITSinterneNummer automatisch angezeigt.
Sortierungen sind da völlig bedeutungslos.
Hallo Klaus Hallo Franz
Zitatwas immer noch verwirrend ist, in Spalte R steht für 07 der ITS interne Nummer eine 1, aber in der Zeile 5 steht für doe 07 eine 6 ?
Mein Fehler Klaus ich habe die anderen Tabellen angehängt damit das klarer wird, denn die Workshops habe noch zusätzliche Codenummern.
ZitatZwei von 4 Tabellen hast Du schon, ergo fehlen Tabellen für G_Item_German und SG_Item_German.
für mich sollten die Tabellen G_Item_German und SG_Item_German zusammengehören, weil sie ja die Bezeichnung für ein Teil geben. G_Item_German kann sein "Brutschrank für Eierbrütung", SG_Item_German kann auch sein "Brutschrank für Eierbrütung", weil beide Felder voll sein sollen. (Zeile2 in der Mappe2)
Zeile 3 und 4 sind in G_Item_German "Bolzenschussgerät mit Zubehör" und SG_Item_German ist Zeile 3 Bolzenschussgerät und Zeile 4 Munition(50Stck).
Deshalb würde ich eher für G_Item_German und SG_Item_German eine Tabelle nehmen wenn das gehen würde ?
Dafür kann ich doch schon die tblAllParts nehmen oder nicht ?
Aus der Tabelle kann dann ITS_InterneNummer, Workshop und MAT-GRP gelöscht werden? Ich habe das mal nach hinten verschoben.
Das hochzählen ist gedacht, das wenn G_Item_German mehrfach da ist, das SG_Item_German automatisch eine aufstegende Nummer erhält.
Ich danke euch für eure Geduld.
Cord
Hallo,
habe das vorher vermutlich falsch verstanden..
Jetzt interpretiere ich das so:
Der rechte Ziffernblock der internen Nummer soll innerhalb der Gruppe "G_Item_German" fortlaufend selbstständig hochgezählt werden.
Diese "Nummer" muss in Folge dann bei neuen DS händisch eingegeben oder per VBA-Funktion automatisch berechnet werden.
Hallo Franz Hallo Klaus
Die Teile haben schon alle eine feste ID
und ich habe aus der Liste alle Internen Nummern gelöscht.
Die neue tblTeile sieht jetzt so aus:
ID_Teile / ID_MAT_GRP_F / G_Item_German / SG_Item_German
In der Tabelle stehen noch diverse andere Informationen, muss ich die auch in einzelne Tabellen aufteilen? zB Preise, Lieferant, Verpackungsmengen, englische Bezeichnungen
Die anderen Tabellen habe ich dem angepasst, was Klaus geschrieben hat.
Zu deinem Post Franz
Beispiel wieder die farbige Zeile
Ja in Abhängigkeit der:
ID_Workshop und ID_Materialgruppe G_Item_German SG_Item_German
8 29 001 Satz Laborglas 001 Laborflasche, 250 ml
8 29 001 Satz Laborglas 002 Laborflasche, 500 ml
Achtung Beispiel nicht in der Liste
8 30 001 Absauganlage 001 Absauganlage
8 30 001 Absauganlage 002 Wandhalterung
oder der
ID_Workshop und ID_Materialgruppe G_Item_German SG_Item_German
9 30 001 Satz für Biologie Grundlagen und Aufbau 001 Modell Blattaufbau
9 30 001 Satz für Biologie Grundlagen und Aufbau 002 Model Blüte
Wie im Beispiel sichtbar kann es sein, das 001-001 x mal vorkommt und das muss jedesmal berechnet werden ?
Wenn ich ein Teil hinzufüge bekommt es ja eine eigene ID aber die Berechnung könnte doch etwas verschieben oder nicht ?
Cord
Schade jetzt haben die beiden wohl keine Lust mehr zu antworten.
Vielleicht jemand zusätzliches ?
Mfg Cord
Hallo,
ZitatSchade jetzt haben die beiden wohl keine Lust mehr zu antworten.
Das hat damit nichts zu tun, aber wenn eine Weile rum ist, verliert man das Thema aus dem Auge. Es spricht also nichts dagegen, das Thema durch eine Rückfrage wieder nach vorn zu holen.
Da ich aber die Zusammenhänge immer noch nicht so recht verstanden habe, solltest Du vieleicht mal eine kleine Beispieldb erstellen mit einigen Spieldatensätzen und die repariert/komprimiert (Access Dienstprogramm) und diese dann als Zip File hier hochladen.
Hallo Klaus
ich werde eine Beispiel DB erstellen und mich gleichzeitig damit beschäftigen die tblAllParts zu verkleinern (Informationen auslagern). Dann lade ich das hoch mal schauen ob die Lösung dann einfacher wird.
Danke Cord
Ich habe jetzt die Datenbank verkleinert und hochgeladen.
Ich fange am besten von vorne an ::)
Wenn ich das frm_Neuteil_anlegen starte funktionieren die ersten 2 Kombifelder ohne Probleme. Dort suche ich den Workshop und die Materialgruppe aus.
Das Kombifeld G_Item funktioniert auch gut, ich kann aussuchen falls ich etwas anlegen möchte, das schon vorhanden ist(zB Atom Modell).
Sollte ich aber versuchen ein neues Teil anzulegen öffnet sich zwar das Form frm_NeueNummer und ich kann die Nummer anlegen, aber in dem Moment wenn ich das schließe kommt nur die Fehlermeldung, das "Der von Ihnen eingegeben Text kein Element der Liste ist".
Erst wenn ich etwas aus der Liste suche kann ich weiter, was mir aber ja nicht hilft.
Das gleiche Problem ergibt sich natürlich auch im nächsten Feld.
Die InterneID habe ich auf die letzten 6 Stellen reduziert, die würde ich weiterhin händisch eingeben.
Berechnen ist denke ich zu aufwändig.
Da ja jedes Teil eine ID hat ist das aus dem Post vorher denke ich erledigt
ZitatID_Workshop und ID_Materialgruppe G_Item_German SG_Item_German
9 30 001 Satz für Biologie Grundlagen und Aufbau 001 Modell Blattaufbau
9 30 001 Satz für Biologie Grundlagen und Aufbau 002 Model Blüte
Wie im Beispiel sichtbar kann es sein, das 001-001 x mal vorkommt und das muss jedesmal berechnet werden ?
Wenn ich ein Teil hinzufüge bekommt es ja eine eigene ID aber die Berechnung könnte doch etwas verschieben oder nicht ?
Die HSCodes zur Ausfuhr habe ich ausgelagert in eine eigene Tabelle und nur die ID eingefügt sowie die überflüssigen Dinge gelöscht. Ich hoffe die Tabelle ist jetzt so ok.
Ich hoffe auf eure Hilfe weiterhin
Cord
Hallo,
also, mir wird nichts klarer.... Die Tabellen, bzw. Beziehungen sind m. E. nicht in Ordnung.
Was bezweckst Du mit dem ungebundenen Form und den Anfügeabfragen?
Verwende nur gebundene Formulare!
Die Tabelle "tblWorkshops" hat welche Bedeutung?
Sollen Einzelteile (Parts) für bestimmte Workshops zugeordnet werden? Dann fehlt eine Tabelle ("tblWorkhopParts"), die diese Zuordnung darstellt und die in Beziehungen zu tblParts du tblWorkshops gesetzt werden muss.
Tbl_Stückliste entfällt.
Hallo Franz
Die Abfragen sollen die eingegebenen Informationen in die nötigen Tabellen(tblAllParts und tblStueckliste) übertragen sobald man auf Ok klickt.
In Arbeit ist gerade nur das frm_Neuteil_anlegen und die Tabellen.
Die Zuordnung der Teile zu den Workshops erfolgt in der tblStueckliste wäre also bis auf den Namen die tblWorkshopParts die du vorschlägst ?
tblWorkshops benennt Unterrichtsräume egal ob Labor, Kfz-Werkstatt oder Klassenraum denen dann die Teile zugeordnet werden.
Beziehungen habe ich angepasst hoffe das ist so richtig .
Cord
Hallo,
die Abfragen brauchst Du nicht, wenn das Form "frmAllParts" gebunden ist/wird (Datenherkunft "tblAllParts") .
Das Feld "ID_WS-F" entfällt und somit auch die Beziehung zu "tblWorkshop_1". Diese Tabelle ist auch aus dem Beziehungfenster zu löschen.
Die Beziehung "ID_Teile" zu "ID-Teile_F" ist mit ref. Integrität zu versehen.
Und ja, die Tabelle "tblWorkShopParts" entspricht der "tbl_Stueckliste" . Diese Benennung sorgt für mehr Transparenz, weil sie die Bedeutung der Tabelle erklärt. (Feldnamen anpassen nicht vergessen!).
Nachdem diese Änderungen nun gemacht sind, erklär bitte nochmal, was es sich mit dem Feld "InternerCode" in tblAllParts" auf sich hat. Das Feld gehört m. E. dort nicht hin, eher muss es in tblWorkshopParts aufgenommen werden, sofern es nicht aus vorhandenen Daten berechnet werden kann und von "Workshops" abhängig ist.
Du merkst sicher, dass wir hier noch nicht um Abläufe , bzw. Formularablaufsteuerung reden, nur über Datenbeziehungen.
Formulare kommen später dran, wenn die Datenkonstellation (Tabellenaufbau) stimmig ist.
PS:
Ändere in den Tabellenfeldnamen das Minus-Zeichen (bzw. alle Sonder- und Leerzeichen) in den Unterstrich!
Ja mir ist aufgefallen, das wir eher mit den Grundlagen arbeiten wie mit dem was ich glaubte zu brauchen 8)
Zitatdie Abfragen brauchst Du nicht, wenn das Form "frmAllParts" gebunden ist/wird (Datenherkunft "tblAllParts") .
Abfragen habe ich gelöscht, wobei das in 2 Tabellen muss aus dem frm_Neuteil_anlegen.
ZitatDie Beziehung "ID_Teile" zu "ID-Teile_F" ist mit ref. Integrität zu versehen.
Ist mit der gekürzten tblAllParts nicht möglich, weil Werte fehlen in meinem Original ist das so. Siehe neues Bild der Beziehungen.
ZitatUnd ja, die Tabelle "tblWorkShopParts" entspricht der "tbl_Stueckliste" . Diese Benennung sorgt für mehr Transparenz, weil sie die Bedeutung der Tabelle erklärt.
Denke ist ok so ? Wie im Bild sichtbar
ZitatNachdem diese Änderungen nun gemacht sind, erklär bitte nochmal, was es sich mit dem Feld "InternerCode" in tblAllParts" auf sich hat.
Der ergibt eine Zahlenkombination in dem Format XXX-XXX.
Meine Idee war eigendlich:
Ich nehme die Workshop ID(2 Stellen)
die Material ID (2 Stellen)
G_Item_German(3 Stellen)
SG_Item_German(3Stellen)
sodass sich eine Nummernkombination ergibt aus der ich erkennen kann, was habe ich vor mir und wohin muss ich damit.
Von der Speicherung der ersten beiden habe ich mich verabschiedet, weil sind ja berechenbar.
Die beiden 3er Blöcke kann man nicht berechnen, so wie ich angefangen habe.
Mein Ansatz war , das jede Kombination von Workshop und Materialgruppe(zB 07-01) mit 001-001 anfängt.(07-01-001-001)
Inzwischen denke ich das war nicht der beste Ansatz. Einfaches hochzählen ohne die ersten beiden zu beachten wäre besser gewesen.
Wichtig für mich ist nur, das wenn G_Item_German mehrfach vorhanden ist auch immer die gleichen Stellen verwendet werden.
ZitatG_Item_German SG_Item_Germ
001 Satz Laborglas 001 Laborflasche, 250 ml
001 Satz Laborglas 002 Laborflasche, 500 ml
und aufsteigend dann die Einzel- oder Ersatzteile vernummert werden mit SG_Item_German.
Hier im Beispiel halt die unterschiedlichen Flaschen, kann aber ja ebenso das Ersatzspannfutter für eine Bohrmaschiene sein.
Ich sehe den Internen Code als zusätzliche Beschreibung.
Hallo,
nochmal: die Beziehung von Workshop zu AllParts ist falsch!
Hallo Franz
Verdammt vergessen zu schreiben warum die da sein muss.
Die Bezeichnung Workshop wird zweimal verwendet einmal für die Liste tblWorkshopParts um die Teile einem Workshop zuzuordnen und um das Teil zu Vernummern über die tblAllParts
ZitatID_Workshop und ID_Materialgruppe G_Item_German SG_Item_German
8 29 001 Satz Laborglas 001 Laborflasche, 250 ml
Entschuldige bitte
Cord
Hallo,
also, ich und Du verstehen das nicht....
in Tbl_allParts stehen alle Einzel-Teile, die in dieser insgesamten Konstellation zu betrachten sind.
Also irgendein Bohrfutter, irgend eine Flasche oder sonstwas, was durch eben die Tabellenfelder (Teile-Eigenschaften) definiert wird.
Soweit ich verstanden habe, sollen gewisse Teile zu einem Workshop (Abteilung, Arbeitszimmer, Maschine oder sonstwas zugeordnet werden. Ein solches Teil (ein bestimmtes Bohrfutter mit bestimmten Eigenschaften) soll dabei in/bei einem Workshop (Vielleicht ist das besser mit "WorkPlace" oder "Arbeitsplatz" zu benennen, spielt aber jetzt keine Rolle) mit einer gewissen Anzahl ("qty", z. B. 3 Stück ) vorhanden sein.
Mit der jetzigen Tabellenaufbau sind die einzelnen (3 Stück) "tblWorkShopTeil" nicht auflösbar, heißt, es kann keine "Seriennummer" für jedes einzelne Bohrfutter erfasst werden. Wenn das sein muss/soll, dann ist eine weitere Tabelle "tblWorkshopTeilSeriennummer" erforderlich, in der für die gegebene Anzahl Teile (3 Stück) deren Seriennummer (oder wegen mir auch laufende Nummer) festgehalten wird. Wenn es nur auf die Anzahl (Qty) ankommt, kann diese Tabelle natürlich entfallen.
Andererseits ist vorstellbar, das es in "tblAllParts" für jede Seriennummer eines Teiles einen eigenen Datensatz gibt. Somit müssten bei unserem Beispiel die 3 (bis auf die Seriennummer identischen) Bohrfutter einzeln "in tblWorkshopTeile" erfasst werden.
ZitatDie Bezeichnung Workshop wird zweimal verwendet einmal für die Liste tblWorkshopParts um die Teile einem Workshop zuzuordnen und um das Teil zu Vernummern über die tblAllParts
Das ist -sorry- Quatsch... Wie oben erläutert, gibt es keine "Vernummerung" in tblAllParts..
Wenn Du "anders" angefangen hast, dann bleibt nichts Anderes übrig, als nochmal neu anzufangen, sonst drehen wir uns nächstes Jahr immer noch im Kreis.
Wenn Du eine Interne Nummer aus einzelnen Kennzahlen zusammensetzen willst, dann braucht es in den einzelnen 1-Tabellen jeweils ein Feld, das eben diese "Kennzahl" darstellt und das für die Zusammensetzung ("Berechnung") der internen Nummer dient.
Hallo Franz
irgenwie reden wir immer wieder aneinander vorbei, aber wir werden uns treffen.
Zitatin Tbl_allParts stehen alle Einzel-Teile, die in dieser insgesamten Konstellation zu betrachten sind.
Also irgendein Bohrfutter, irgend eine Flasche oder sonstwas, was durch eben die Tabellenfelder (Teile-Eigenschaften) definiert wird.
Genau so
ZitatSoweit ich verstanden habe, sollen gewisse Teile zu einem Workshop (Abteilung, Arbeitszimmer, Maschine oder sonstwas zugeordnet werden.
auch richtig
ZitatEin solches Teil mit einer gewissen Anzahl ("qty", z. B. 3 Stück ) vorhanden sein.
ja
ZitatMit der jetzigen Tabellenaufbau sind die einzelnen (3 Stück) "tblWorkShopTeil" nicht auflösbar, heißt, es kann keine "Seriennummer" für jedes einzelne Bohrfutter erfasst werden. Wenn das sein muss/soll, dann ist eine weitere Tabelle "tblWorkshopTeilSeriennummer" erforderlich, in der für die gegebene Anzahl Teile (3 Stück) deren Seriennummer (oder wegen mir auch laufende Nummer) festgehalten wird. Wenn es nur auf die Anzahl (Qty) ankommt, kann diese Tabelle natürlich entfallen.
Nicht jedes "Bohrfutter" soll eine Seriennummer bekommen sondern das Bohrfutter immer die gleiche wieder(Vorausgesetzt der gleiche Typ). Aber die Nummer soll mit der dazugehörenden Bohrmaschine "gekoppelt" sein.
G_Item_German = Bohrmaschine mit Zubehör = 001
SG_Item_German= Bohrmaschine Bosch 4711 = 001
Ergibt den InternenCode 001-001
G_Item_German = Bohrmaschine mit Zubehör = 001
SG_Item_German= Bohrfutter für Bohrmaschine Bosch 4711 = 002
Ergibt den InternenCode = 001-002
das meine ich mit Koppeln an den dazugehörigen Oberbegriff (Bohrmaschine mit Zubehör) also bekommen alle Bohrmaschinen egal ob Bosch Makita oder Nivea immer die 001-XXX.
ZitatDas ist -sorry- Quatsch... Wie oben erläutert, gibt es keine "Vernummerung" in tblAllParts..
Das habe ich verstanden, aber ich brauche doch die Kennzahl für den Workshop
ZitatWenn Du eine Interne Nummer aus einzelnen Kennzahlen zusammensetzen willst, dann braucht es in den einzelnen 1-Tabellen jeweils ein Feld, das eben diese "Kennzahl" darstellt und das für die Zusammensetzung ("Berechnung") der internen Nummer dient.
in der tblAllParts, da sich meine Nummer auch aus der Workshopkennung ergeben soll.
Oder muss diese zusammengesetzte Nummer aus einer neuen Tabelle entstehen ?
Wenn ich in der Nummer, die ich erstellen will den Workshopcode weglasse wird diese um 2 Stellen gekürzt(XX-XXX-XXX), da mir grade bewusst wird, das viele Teile in mehreren Workshops zusammenkommen(Bohrmaschine ist hier ein gutes Beispiel) also eigendlich die Zuordnung über die tblWorkshopParts ausreichen sollte damit alles in die richtige Bahn gelenkt wird.
Das würde heissen die Kennzahl für Materialgruppe ist in tblAllParts vorhanden und mit der tblMAT_Gruppe in Beziehung gesetzt.
Als zweites Feld nehme ich den internen Code der dann ja nur eine zusätzliche Beschreibung des Teiles ist.
Ich denke das reicht aus um die Teile für uns zu Identifizieren.
Den internen Code würde ich am besten neu erstellen, um die vielen doppelten zu löschen und einfach aufsteigend machen.
Ich weiss, das ich ja die ID_Teile habe, aber die schafft ja keine Verbindung der Teile zueinander wie der 6 Stellige Code.
ZitatWenn Du "anders" angefangen hast, dann bleibt nichts Anderes übrig, als nochmal neu anzufangen, sonst drehen wir uns nächstes Jahr immer noch im Kreis.
das möchte ich vermeiden mir wird so schnell schwindelig ;D
Muss ich die tblAllParts noch weiter aufbrechen, oder kann ich die so nutzen wie sie ist? Habe ein Bild mit Beschreibungen angehängt.
Ich schlage 3 Kreuze wenn ich mann erstmal die Tabellen hinhabe mit deiner Hilfe und du mir meine Vorstellungen auf das machbare und richtige zurechtgestutzt hast.
Cord
Hallo,
eieieiei...
Ich mach Dir folgenden Vorschlag:
schreib mir eine Email (d f 6 g l ( ä t ) g m x . de . Wir reden dann mal kurz am Telefon ....
Ist raus
Cord
So nach einigen Tage Arbeit an anderen Dingen habe ich hoffentlich hinbekommen was Franz mir empfohlen hat.
Ich hänge hier mal ein Bild der neuen Beziehungen an und bitte euch bzw dich Franz einen Blick draufzuwerfen, ob das so in Ordnung geht.
Wenn ja werde ich mich wieder an die Formulare und Abfragen machen.
Cord
Hallo,
ruf mich nochmal an... Es sind noch ein paar Worte dazu zu sagen. (Normalisierung, Beziehungen, Feld-Bedeutungen)
So Beziehungen angepasst