Neuigkeiten:

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

Mobiles Hauptmenü

Kombinationsfeld reagiert nicht

Begonnen von MrB, Oktober 22, 2018, 10:56:50

⏪ vorheriges - nächstes ⏩

MrB

Hallo
Bin dabei die Formulare zu erstellen und hänge jetzt an der Erzeugung der ET_Nummer.
Ich habe diverse Text und Kombinationsfelder erstellt und generiere hieraus eine neue Nummer.
Funktioniert soweit schon aber jetzt sollen entweder das vorletzte oder letzte Feld automatisch in ein anders Formular wechseln, wenn die Nummer noch nicht vergeben ist.
Formularwechsel kein Problem.
Private Sub cbo_frm_Neuteil_anlegen_G_Item_Click()

    strGit1 = Me!cbo_frm_Neuteil_anlegen_G_Item.Column(0)
If strGit1 <= 0 Then
        strGit = Mid(strGit1, 7, 3)
              Me!txt_frm_Neuteil_anlegen_Nummer = (strWsop) & "-" & (strMgr) & "-" & (strGit)
          Else: Dim frm_NeueNummer

DoCmd.OpenForm "frm_NeueNummer"
Forms!frm_NeueNummer!cboNeueNummer = (strWsop) & "-" & (strMgr)
'Response = acDataErrContinue
End If
                               
End Sub

Auch die Übergabe in das Kombifeld ist ok.
Jetzt soll aber die Liste aufgehen und sichtbar sein, sodaß der Ersteller die höchste Nummer mit dem Workshopcode sowie Materialcode sieht.
SELECT tblTeile.ET_Number FROM tblTeile ORDER BY tblTeile.ET_Number DESC;
Beispiel hier 12-31-028-001 nun könnte mann -029-001 eingeben und hätte die neue Nummer.
Leider zeigt das Feld die eingefügten Daten zwar an aber ich kann erst etwas eingeben, wenn ich dahinterklicke und auch die Liste ist nicht sichtbar erst nachdem ich einen Trennstrich eingebe.
Am liebsten wäre mir natürlich wenn "einfach" die vorhandene Nummer um 1 erhöht werden kann, hierzu habe ich aber nix gefunden.
Wie bekomme ich das Feld dazu den Cursor direkt hinter die kopierten Daten zu setzen oder falls möglich gleich die Nummer zu erzeugen ?

Cord

Lachtaube

Siehe FAQ 4.13

PS: ab Version 2007 kann man auch direkt über ein festgelegtes Formular neue Zeilen für ein Listen- oder Kombifeld eintragen bzw. alte editieren, wenn die Eigenschaft List Items Edit Form auf ein besagtes Formular angebeni ist, sowie Allow Value List Edits auf Ja eingestellt ist. Bei aufgeklapptem Kombifeld erscheint dann links unterhalb der Liste ein durchsichtiger Knopf (siehe Bildanhang).
Grüße von der (⌒▽⌒)

Beaker s.a.

Hallo Cord,
Zitatdie vorhandene Nummer um 1 erhöht werden kann
NeueNummer = DMax("Nummernfeld", "TabelleMitNummer") +1
Zitatden Cursor direkt hinter die kopierten Daten zu setzen
FormReferenz.DeinFeld.SetFocus
FormReferenz.DeinFeld.SelStart = Len(FormReferenz.DeinFeld)

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

#3
Hallo Lachtaube und Ekkehard
@ Lachtaube war nicht ganz was ich brauche werde mir das aber merken werde ich bestimmt noch brauchen  :)

@ Ekkehard
Habe das jetzt mit
Private Sub Form_Load()
FormReferenz.cboNeueNummer.SetFocus
FormReferenz.cboNeueNummer.SelStart = Len(FormReferenz.cboNeueNummer)
End Sub

Eingesetzt bekomme aber Fehlermeldung 424 Objekt erforderlich

An die gleiche Stelle müsste dann ja auch ein Filter für die DMax ? oder brauche ich dafür eine Abfrage ?
Bin immer noch nicht firm genug um die Zusammenhänge zu sehen.

Cord
Hab da nochmal geändert
Private Sub Form_Load()
Forms!frm_NeueNummer!cboNeueNummer.SetFocus
Forms!frm_NeueNummer!cboNeueNummer.SelStart = Len(frm_NeueNummer.cboNeueNummer)
End Sub

Leider auch ohne Erfolg

Beaker s.a.

Hallo Cord,
"Formreferenz" ist ein Platzhalter für das betreffende Formular. Also entweder
Me.
wenn es auf dem aktuellen Formular stattfindet, oder
Forms.DeinFormular.
wenn's auf einem anderen (geöffneten!) Formular passieren soll.
ZitatAn die gleiche Stelle müsste dann ja auch ein Filter für die DMax ?
Kann ich nicht beurteilen, da ich die Struktur (Datenmodell) nicht kenne.
Wenn du eine Bedingung benötigst, musst du die als dritten Parameter
bei DMax einfügen
NeueNummer = DMax("Nummernfeld", "TabelleMitNummer", "IrgendeinFeld = " & Irgendwas) + 1

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)

Beaker s.a.

Hallo Cord,
Deine Ergänzung gerade erst gelesen.
".cboNeueNummer" befindet sich auf "frm_NeueNummer" ?
Dann reicht Me., - muss aber auch bei Len mit rein
Private Sub Form_Load()
    Me!cboNeueNummer.SetFocus
    Me!cboNeueNummer.SelStart = Len(Me!cboNeueNummer)
End Sub

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

Jetzt bekomme ich Typenunverträglich Laufzeitfehler 13
aber erst in der 2ten Zeile komischerweise (so zeigt es der Debugger an)

Cord

Beaker s.a.

Hm, bei mir funzt das ohne Fehler.
Du könntest es mit
ZitatLen(Me!cboNeueNummer.Text)
versuchen.
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)

Lachtaube

Nur wenn Steuerelemente sichtbar und fokussiert sind, stehen Eigenschaften wie Text, SelLength zur Verfügung.

Wenn das Ergebnis aber bereits bekannt und gespeichert ist, genügt es doch, dieses Ergebnis dem ungebundenes Kombield zuzuweisen, bzw. bei einem gebundenen Kombifeld zum entsprechenden Datensatz zu navigieren. Die Codefragmente lassen IMHO nur Interpretationen zu - besser wäre es, den kompletten Code der beteiligten Formulare zu kennen.

PS: Es bleibt auch zu hoffen, dass das Ergebnis später nicht wieder zur Auswertung zerpflückt werden muss (Stichwort: Normalisierung, atomare Feldinhalte).
Grüße von der (⌒▽⌒)

Beaker s.a.

#9
@Lachtaube
ZitatNur wenn Steuerelemente sichtbar und fokussiert sind, stehen Eigenschaften wie Text, SelLength zur Verfügung.
Von der Sichtbarkeit bin ich ausgegangen; - er will da was eintragen. Den
Focus habe ich ja explizit gesetzt.
Ansonsten kann ich dir nur zustimmen.
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

Zitat von: Beaker s.a. am Oktober 22, 2018, 17:41:55
@Lachtaube
ZitatIch will die Rohdaten nicht ändern, (wegen Excel-Export). Da, die User weiterhin unter Excel auswerten wollen.
Von der Sichtbarkeit bin ich ausgegangen; - er will da was eintragen. Den
Focus habe ich ja explizit gesetzt.
Ansonsten kann ich dir nur zustimmen.
gruss ekkehard
Kann es sein, das das nicht für mich war ?
Habe versucht dort etwas einzutragen und bekomme zurück " ) erwartet Komma wird markiert.
Falls der Text doch für mich war:
Habe keine andere Möglichkeit gefunden eine neue Nummer zu generieren wie ein zusätzliches Formular, daher macht ein Formular bei "nicht vorhanden in Liste" dieses neue Formular auf in dem nur ein Kombifeld sowie OK und Abbrechen vorhanden sind. Bei OK wird die neue Nummer an das Feld zurückübertragen aus dem anderen Formular. Von hier soll dann wenn alle Daten drin sind alles auf einmal mit zwei Anfügeabfragen an tblTeile und tblStueckliste übertragen werden.
Cord

Beaker s.a.

Hallo Cord,
Sorry, falsches Zitat eingefügt; - habe ich eben noch geändert. War eine
Antwort an Lachtaube.
Ansonsten wäre es wohl das Beste, wenn du deine DB mal hier hochlädst.
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

Habe das mal gepackt und hochgeladen.
Danke für eure Hilfe

Cord

DF6GL

Hallo,

so wird das doch nix...

Stell mal den (genauen) Algorithmus zur Berechnung einer neuen ET-Nummer vor.

Ein paar Beispielwerte sind auch nicht schlecht...

MrB

Hallo Franz
Die Berechnung erfolgt zT über das frm_Neuteil_anlegen und zum anderen Teil über frm_NeueNummer.
Ich habe mal versucht, das über eine Grafik anschaulich zu machen.
Nachdem die Kombination aus Workshop und Materialgruppe gewählt ist gibt man eine Bezeichnung ein. Wenn ein Teil schon vorhanden ist (zB Drehbank) soll er das erkennen, die Bezeichnung Fein verlangen und die Nummer automatisch ergänzen( Beispiel aus der Grafik: ich gebe ein Workshopcode,Materialgruppe und Drehbank ergibt im Feld Nummer = 99-99-001 weil Drehbank kennt er ja schon).

Falls das Teil nicht bekannt ist soll er die höchste Nummer mit der Kombination aus Workshopcode und Materialgruppe suchen und diese um 1 erhöhen, die letzen 3 können direkt auf -001 gesetzt werden weil ist ja das erste Teil mit dieser Bezeichnung.
(zur Beispieltabelle : 99-99 und Werkbank ergibt 99-99-002-001)

Muss ich die Bezeichnung verfeinern zB Zubehör oder Einzelteile und gebe ich etwas ein das er schon kennt gibt es eine Fehlermeldung mit dem Hinweis "ist vorhanden mit Nummer" (ist schon im Form). Wenn nicht vorhanden möchte ich, das die höchste vorhandene Nummer (hier 002) + 1 gesetzt wird.
(zur Beispieltabelle: 99-99-001 und Bohrfutter ergibt 99-99-001-003)
Ein Teil dieses Ablaufs funktioniert schon im Form frm_Neuteil_anlegen leider noch nicht alles ich würde auch gerne das 2te Form weglassen und alles in einem machen.
Wobei das die Königslösung ist  ;D
Mir würde schon reichen, wenn ich Workshop und Materialgruppe auswähle und das Teil nicht vorhanden ist er mir die höchste Nummer anzeigt und die eingegeben wird genau wie beim Einzelteil dann aus 99-99-001 und die höchste vergebene Anzeigt, damit ich die nächste eingeben kann und so auch zu meiner Nummer komme.
Ich hoffe das ist erschöpfend erklärt.
Cord