PDA

Vollständige Version anzeigen : kopieren


EraZor
24.09.2001, 11:59
Hallo,

ich habe einen Button der mir das Formular kopieren soll. Hat bisher auch super geklappt. Das Feld Rechner ist ohne Dublikate, und kann als Text geschrieben werden(neu). Seit neuestem kommt nun eine Fehlermeldung. Allerdins soll entweder die hinterste Zahl erhöht oder einfach eine angefügt werden. Ich arbeite mit A97.


Private Sub kopieren_Click()
On Error GoTo Err_kopieren_Click


DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 2, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 5, , acMenuVer70 'Paste Append
[Rechnernummer] = DMax("[rechnernummer]", "[pc]")
[Seriennummer] = DMax("[seriennummer]", "[pc]")
[Inventarnummer] = DMax("[inventarnummer]", "[pc]")


Exit_kopieren_Click:
Exit Sub

Err_kopieren_Click:
MsgBox Err.Description
Resume Exit_kopieren_Click

End Sub

EraZor

MarioR
24.09.2001, 17:09
Hallo,

wenn ich Dich richtig verstehe, hast Du das Feld Rechnernummer in Deiner Tab indiziert und zwar ohne Duplikate. Damit kannst Du dem neuen DS nicht die gleiche Nummer nochmal zuweisen (und mit DMax erhälst Du ja eine existierende Nummer).

Also wenn die Rechnernummer numerisch ist, kannst Du z.B. mit DMax(...)+1 hochzählen.

EraZor
25.09.2001, 09:14
schon richtig. Das Prop ist nur das dies keine numerische Reihenfolge ist. Kann z.B. mon-4824, 14745 oder Monitor 1487 sein. Access soll nur die alphabetischen Zeichen, und auch die sonstigen, kopieren und bei den Zahlen eine dazuzählen. Müsste doch eigentlich *irgendwie* möglich sein. ;)

EraZor

MarioR
26.09.2001, 06:10
Hallo mal wieder,

hast Du Dein Problem eigentlich schon gelöst?

Wenn es noch offen ist, dann versuch mal folgenden Code:

[Rechnernummer]=Left([Rechnernummer],InStr([Rechnernummer],"-"))_
& Format(DMax("Val(Mid([Rechnernummer],InStr([Rechnernummer],'-')+1))","DeineTab",_
"Left([Rechnernummer],InStr([Rechnernummer],'-'))='" & Left([Rechnernummer],InStr([Rechnernummer],"-"))_
& "'")+1,"0")


Ich bin davon ausgegangen, dass die Rechnernummer immer folgende Struktur hat:
Text - Zahl
Der Bindestrich dient als Trennung zwischen Text und Zahl. Wenn Du da ein Leerzeichen oder was anderes hast, musst Du oben in der Formel bei den InStr-Funktionen den Strich durch Dein Trennzeichen ersetzen.

Ich hoffe, das hilft Dir erstmal weiter.

EraZor
26.09.2001, 07:53
na ja,

erst mal danke. jetzt macht er zumindest schon mal die erweiterung der zahlen perfekt. Aber er kopiert sie nicht sondern überschreibt sie einfach. Wie bekom ich nun hin das er den kopierten Datensatz ans ende einfügen soll???

thx

EraZor

MarioR
26.09.2001, 19:38
Ähm, jetzt versteh ich Dein Problem nicht ganz.

Mit Deinem Code kopiert Acc doch alles in einen neuen DS:

DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 2, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 5, , acMenuVer70 'Paste Append


Vielleicht solltest Du die neue Rechnernummer aber ins Formularfeld schreiben, statt in die Tabelle:

Me.FormularfeldFürRechnernummer=Left([Rechnernummer],...

EraZor
27.09.2001, 07:18
Ok.

Mittlerweile funktioniert das es einigermaßen. Allerdings nur wenn ich vor meiner Zahl "pc-" stehen habe. Wenn ich z.b "Computer" davor stehen habe, dann bringt er mir nur am Ende meiner Datensätze nur die höchste Zahl aus. Eigentlich sollte er ja wenn ich "Computer-122" schreibe so soll er mir nach dem kopieren "Computer-123" oder die am nächst mögliche Zahl herausbringen. Müsste doch möglich sein.

Thx