Neuigkeiten:

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

Mobiles Hauptmenü

Kombifeld Problem mit nicht in Liste

Begonnen von MrB, Februar 04, 2020, 14:15:39

⏪ vorheriges - nächstes ⏩

MrB

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

DF6GL

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

MrB

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


DF6GL

hallo,  bin zur zeit nicht in der lage, vernüftig und lange texte/code zu screiben..

dein code passt aber hinten und vorn nicht..
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

Beaker s.a.

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
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

MrB

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


MzKlMu

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 ?
Gruß Klaus

MrB

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

Beaker s.a.

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
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

MrB

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


MzKlMu

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.
Gruß Klaus

DF6GL

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



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

MrB

#12
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

MzKlMu

Gruß Klaus

Beaker s.a.

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
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)