August 03, 2021, 16:41:34

Neuigkeiten:

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


Formular mit DS aus Ausgangsformular öffnen

Begonnen von mad, Mai 23, 2021, 09:33:53

⏪ vorheriges - nächstes ⏩

mad

oK,

dann bleibe ich erstmal bei meiner Variante wie unter #6 beschrieben und setzte nur das Thema "GetNewTypNo()", vormals "Call ..." um.
Vielleicht hat ja später jemand noch eine Idee.


Vielen Dank
mad

DF6GL

Mai 26, 2021, 09:42:11 #16 Letzte Bearbeitung: Mai 26, 2021, 10:25:01 von DF6GL
Hallo,

ZitatVielleicht hat ja später jemand noch eine Idee.

z. B.:  Das Tabellenkonzept in Ordnung bringen.

Beim jetzigen Zustand ist mir unerklärlich, wozu man für Dateneinträge in tblTypen ein separates Formular benötigt und durch die Brust ins Auge schießen will.


Entspr. dem gezeigten Tabellenaufbau:

Mach ein Hauptform für tblArten mit einem Kombifeld für die Auswahl einer Kategorie und ein Ufo-Steuerelement, das ein Form mit Datenherkunft zu "tblTypen" anzeigt und über die Felder "ArtenID" und "Typ_ArtenID" verknüpft.

Fertig.

Dazu braucht es überhaupt keinen Code.  Trotzdem solltest Du Dich mit den Argumenten der Docmd.Openform-Methode (intensiv) auseinandersetzen.



IMHO sollte "tblTypen" in "tblArtenTypen" umbenannt und eine zusätzliche Tabelle "tblTypen" (die sollte jetzt wirklich so heißen) erstellt werden, die alle möglich vorkommenden "Typenbezeichnungen" enthält.


In "tblArtenTypen" wird ein Fremdschlüsselfeld für den Primärschlüsselwert in tblTypen eingebaut. Dieses Feld wird als Kombi ausgeführt mit Datenherkunft zu Tabelle tblTypen, mit dem eben eine Typenbezeichnung ausgewählt werden kann (gleichermaßen wir das Kombifeld für Kategorien).


Wenn jetzt eine neue Type (oder auch eine neue Kategorie) "gemacht" werden muss, so kann jetzt(!) das "Nicht in Liste"-Ereignis des, bzw. der Kombis benutzt werden, um die neuen Daten "on the fly" in die Tabellen zu befördern und damit auswählbar zu machen. Hierfür braucht es dann ein paar Zeilen Code, die die neuen Daten entweder direkt mit SQL in die Tabelle schreiben oder ein Eingabe-Form aufrufen, wobei hier die Openargs-Methode als "Datentür" zum aufgerufenen Formular dienlich ist.





PS:  Wie ich grade noch sehe, ist eine "Formatierung" einer Long-Zahl beim Feld TypID und die Bezeichnung in "Typen-Nr,"  direkt in der Tabelle unbrauchbar/verwerflich.

Diese Methode zeigt, dass es an noch weiteren Tabellen fehlt ( siehe Hinweise ganz oben) , wenn es sich hier um eine "Stücklistenstruktur" handelt.


Das Feld "TypID" sollte als Autowert ausgeführt werden, das Feld für die  "Struktur-Nummer"  ist überflüssig, wenn eine Stücklisten-Tabellenstruktur aufgebaut wird. Sie wäre damit jederzeit einfach berechenbar und bräuchte nicht durch Code für ein Tabellenfeld erzeugt werden.


mad

Hallo,

danke für die Anregungen. Hier nochmals ein paar Infos was ich mir dabei gedacht habe.

Zitat von: undefined... wenn eine Stücklisten-Tabellenstruktur ...
Es handelt sich um ein Inventarverzeichnis mit einer Prüfstruktur die in bestimmen Zeitabständen gemacht werden müssen.

Zitat von: undefinedz. B.:  Das Tabellenkonzept in Ordnung bringen.
Im Anhang nochmals das Komplette Beziehungsfenster, Bild: "Inv_Bezieh.png". Wie gesagt habe ich ein sehr stark reduzierte DB eingestellt.

Zitat von: undefinedBeim jetzigen Zustand ist mir unerklärlich, wozu man für Dateneinträge in tblTypen ein separates Formular benötigt und durch die Brust ins Auge schießen will.
Die drei Kombi-Felder sind reine Suche-Felder und mit Absicht nicht zur Dateneingabe vorgessen.

Zitat von: undefinedMach ein Hauptform für tblArten mit einem Kombifeld für die Auswahl einer Kategorie und ein Ufo-Steuerelement, das ein Form mit Datenherkunft zu "tblTypen" anzeigt und über die Felder "ArtenID" und "Typ_ArtenID" verknüpft.

Aufbau Formulare:
HF - frmKategorien (tdlKategorien) verknüpft von "KatID" nach "Arten_KatID" zum
  UF - frmArten (tblArten) verknüpft von "ArtenID" nach "Typ_ArtenID" zum
    UF - frmTypen verknüpft von "TypID" nach "Artikel_TypID" und weiteren UF.

Zitat von: undefined... die alle möglich vorkommenden "Typenbezeichnungen" enthält.
Ist meiner Meinung nach so. Aktuell befinden sich in der Tab 843 verschiedene Typen.

Zitat von: undefinedWenn jetzt eine neue Type (oder auch eine neue Kategorie) "gemacht" werden muss, so kann jetzt(!) das "Nicht in Liste"-Ereignis des, ...
Kategorien und Arten sind vollständig, nur Typen müssen bei bedarf ergänzt werden. Dazu das Form "frmTypenanlage".

Zitat von: undefinedPS:  Wie ich grade noch sehe, ist eine "Formatierung" einer Long-Zahl beim Feld TypID und die Bezeichnung in "Typen-Nr,"  direkt in der Tabelle unbrauchbar/verwerflich.
Was wäre die richtige "Formatierung"?

Zitat von: undefinedDas Feld "TypID" sollte als Autowert ausgeführt werden, das Feld für die  "Struktur-Nummer"  ist überflüssig,...
Die Artikelnummer haben wir aus dem Feuerwehrsystem übernommen und ist somit vorgegeben. Diese baut sich wie folgt auf:

Kategorie - erste Stelle eine Zahl z.B. 1.
Arten - zweite und dritte Stelle in Zahlen z.B. .02.
Typen - vierte bis sechste Stelle in Zahlen z.B. .031.
Die finale Artikelnummer wird dann nochmals durch vier weitere Zahlen, beginnend mit .0001 ergänzt.

Komplette Artikelnummer z.B.
1.02.031.0001 (die Punkte sind nur zur besseren lesbarkeit, in die Tabelle werden die Werte ohne Punkt geschrieben z.B. 1020310001)
Bei neuanlage eines Artikels wird dann im frmArtikel (tblArtikel) über einen Code die entsprechende Artikelnummer automatisch über den entsprechende Code um +1 hochgezählt, ähnlich wie "GetNewTypNo".

Ich hoffe ich habe euch jetzt nicht erschlagen, aber ich denke um das besser zu verstehen muß man es manchmal detaillierter beschreiben.

Zum Abschluss nochmals meine aktuellen Codes die erstmal funktionieren.

Private Sub SucheTypen_NotInList(NewData As String, Response As Integer)
     DoCmd.OpenForm "frmTypenanlage"
End Sub

Private Sub Form_Load()
    DoCmd.GoToRecord , , acNewRec
     Forms!frmTypenanlage!Typ_ArtenID = Forms!frmKategorien!UFArten!ArtenID
    GetNewTypNo
End Sub


Private Sub Typ_ArtenID_AfterUpdate()
    GetNewTypNo
End Sub


Private Sub GetNewTypNo()
On Error GoTo MyErr
    Dim rs As DAO.Recordset
   If Me.NewRecord Then
        Set rs = CurrentDb.OpenRecordset("select top 1 " & " max(val(Mid(TypID,4))) as MaxTyp from tblTypen Where Typ_ArtenID =" & Me!Typ_ArtenID & " ", dbOpenSnapshot)
        If rs.RecordCount > 0 Then Me!TypID = Me!Typ_ArtenID & Format(rs(0) + 1, "000")
    End If
Exit Sub
MyErr:
    MsgBox Err.Number & ":  " & Err.Description
End Sub


Gruss
mad