Hi BigBen, ich hatte auch weniger auf eine Bsp-DB gehofft, sondern eher einen konkreten Vorschlag zu der Lösung des Problems.
Mit der erwähnten Userform kann ich gar nichts anfangen?!
Anbei der von mir erstellte Pseudocode:
1)
Private
Sub
NewRecord_Click()
2)
On
Error
GoTo
Err_NewRecord_Click
3)
4)
Dim
MyNumber
As
Variant
5)
Dim
Position
As
Integer
6)
Dim
rs
As
DAO.Recordset
7)
8)
Set
db = CurrentDb()
9)
Set
rs =
Me
.RecordsetClone
10) MyNumber = InputBox(
"Typkopf-Nummer eingeben"
,
"Neuer Datensatz"
)
11) MyNumber =
CInt
(Position)
12) Max = DMax(
"Reihenfolge_Ebene"
,
"tbl_Typkopf"
)
13)
14)
If
IsNull(Reihenfolge_Ebene)
Then
15)
For
i = Position
To
Max
16) i = i + 1
17)
Next
i
18) DoCmd.GoToRecord , , acNewRec
19)
20)
Else
21) DoCmd.GoToRecord , , acNewRec
22)
End
If
23)
24) rs.AddNew
25) rs.Update
26) rs.Close
27)
28)
29)
30) Exit_NewRecord_Click:
31)
Exit
Sub
32)
33) Err_NewRecord_Click:
34) MsgBox Err.Description
35)
Resume
Exit_NewRecord_Click
36)
37)
End
Sub
Der Pseudocode ist im Moment verknüpft mit einem Formular-Button der das Erstellen neuer Datensätze ermöglicht.
Wird dieser geklickt wird ein neuer Datensatz am Ende erzeugt. Genau dies will ich vermeiden.
Dafür soll der User in einer Inputbox eine Nummer eingeben welche für den neuen Datensatz das Attribut Reihenfolge_Ebene festlegt.
Dieses enthält fortlaufende Nummern von 1 - ca.500 welche nicht durchgehend besetzt sind.
Daraus ergeben sich 2 Fälle für das Einfügen: Fall a) Die eingegebene Nummer ist vergeben.
Dann soll dieser
"alte"
Datensatz für das Attribut Reihenfolge_Ebene um 1 erhöht werden.
Anschließend muss der Vorgang wiederholt werden bis alle Datensätze ab der eingegebenen Nummer
bis zum Ende der Tabelle für die Reihenfolge_Ebene um 1 erhöht wurden.
Nun kann der neue Datensatz in die freie Zeile eingefügt werden (soweit die Theorie)
Fall b) Der simple Fall das die Nummer nicht vergeben ist und der Datensatz an dieser Stelle eingefügt werden soll.
In
diesem Fall dürfte die Iteration der Reihenfolge_Ebene entfallen.
Nun meine Frage: Lässt sich das Vorhaben auf diese (s.Pseudocode) Art und Weise lösen?
Um es einfach zu formulieren: Der Wunsch besteht darin an beliebiger Position Daten einzufügen.
LG, Flex