[Geschlossen] Form Inhalt kopieren (CC)

17. Dezember 2013 13:37

Hallo,

ich hab leider wieder ein Problem wo ich überhaupt nicht weiter komme. Ich habe eine Form mit Subform drauf, jetzt soll ich eine Funktion mit dem Namen "Neue Version erstellen" machen, diese soll den Inhalt der Form kopieren und genau gleich als Datensatz in der Form hinzu fügen mit einer höheren Versionsnummer. Bei dem Feld Versionsnummer handelt es sich um den Datentyp Code da hab ich auch schon geschafft das er erhöht wird ich füge mal den Code dazu ein und hoffe das es richtig ist:
Code:
 EVALUATE(Zahl, Projack."Versions No.");
 Projack."Versions No." := FORMAT(Zahl + 1);


Danke schon mal :)
Zuletzt geändert von Sparrrow1992 am 7. Januar 2014 09:03, insgesamt 1-mal geändert.

Re: Form Inhalt kopieren (CC)

17. Dezember 2013 14:07

Nummerische Codefelder erhöhst du einfacher mit INCSTR (siehe Onlinehilfe) ;-)

Ich habe eine Form mit Subform drauf, jetzt soll ich eine Funktion mit dem Namen "Neue Version erstellen" machen,

Hier ein wenig Pseudocode zur Vorgehensweise:
Code:
NeuerRec := AktRec;
NeuerRec.Versionsnr. := ...; // mit INCSTR
NeuerRec.INSERT

Das machst du sowohl für den Kopf- als auch den Zeilendatensatz.
Die Lösung setzt voraus, dass AktRec der Datensatz mit der aktuell höchsten Versionsnr. ist.

Damit deine Form am Ende die neue Version zeigt, mach das für den Kopfdatensatz:
Code:
Rec := NeuerRec

Re: Form Inhalt kopieren (CC)

17. Dezember 2013 14:14

Danke, das werde ich gleich mal testen :D

Re: Form Inhalt kopieren (CC)

18. Dezember 2013 10:18

Ich hab das jetzt mal so gemacht
Code:
NewRec := Projack;
ProVer := INCSTR(Projack."Versions No.");
Projack."Versions No." := ProVer;
NewRec.INSERT;

NewRec und Projack sind beide Globals vom Datentyp Recort
ProVer ist ein Integer.

Wenn ich das jetzt ausführe bekomme ich den Fehler
Die PROJACK Existiert bereits.
Identifizierte Felder und Werte:
Nr.='',Versions Nr.=''

Die Beiden Felder Nr. und Versions Nr. sind in dem Table PROJACK die Keys.
Und wie hast du das gemeint mit dem Kopf und Zeilendatensatz ?
Ich hoffe ich hab den Code nicht falsch übernommen :-(

Re: Form Inhalt kopieren (CC)

18. Dezember 2013 10:24

Du musst die erhöhte Versionsnummer NewRec zuweisen.

Re: Form Inhalt kopieren (CC)

18. Dezember 2013 10:35

McClane hat geschrieben:Du musst die erhöhte Versionsnummer NewRec zuweisen.

Code:
ProVer := INCSTR(NewRec."Versions No.");
NewRec."Versions No." := ProVer;

Wenn du das so meintest, das habe ich schon versucht und es kommt der selbe Fehler.

Re: Form Inhalt kopieren (CC)

18. Dezember 2013 10:42

weil Projack leer ist!

ersetze Projack einfach durch REC!

Re: Form Inhalt kopieren (CC)

18. Dezember 2013 11:21

sweikelt hat geschrieben:weil Projack leer ist!

ersetze Projack einfach durch REC!

Danke für die Hilfe ich denke ich habe noch irgendwo einen Fehler.
Der Fehler liegt wohl bei der letzten Zeile im Code
Code:
Rec := NewRec

Nehm ich diese weg werden alle Versionen nacheinander angezeigt.
Da aber der Kunde dann Fehler machen könnte soll nur die Aktuellste Version gezeigt werden.

Re: Form Inhalt kopieren (CC)

18. Dezember 2013 11:31

den letzten Eintrag verstehe ich nicht so recht.
Ist das eine Karte oder eine Liste?
so wie es sich anhört, ist es eine Liste...also nachdem der Kunde den Button gedrückt hat, kannste doch auf die neue Version filtern

Re: Form Inhalt kopieren (CC)

18. Dezember 2013 11:49

sweikelt hat geschrieben:den letzten Eintrag verstehe ich nicht so recht.
Ist das eine Karte oder eine Liste?
so wie es sich anhört, ist es eine Liste...also nachdem der Kunde den Button gedrückt hat, kannste doch auf die neue Version filtern

Es ist eine Karte, wenn ich mich jetzt mit dem Maus Zeiger oben befinde und auf dem Mausrad drehe kommen immer alle also z.B. Nr: 1 Version: 1, Nr: 1 Version: 2,... Natalie hat weiter oben in ihrem ersten Kommentar dazu geschrieben das damit die Neueste Version angezeigt wird. Das Filtern hab ich auch über legt aber wie kann man dauerhaft Filtern wenn das immer nur die Höchste Versionsnummer angezeigt wird pro Projektnummer ?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Form Inhalt kopieren (CC)

18. Dezember 2013 12:07

würde ich über ein FlowField in deiner Table realisieren...
dieses Flowfield zeigt dir immer die höchste Vers.-Nr (max) zu dem entsprechenden Datensatz an
dann im OnAfterGetRecord ein Calcfields auf dein FLowfield + ein Setrange mit auf die Versionsnummer

Code:
CALCFIELDS(DeinFlowField)
SETRANGE(Version,DeinFlowfield)


ne andere Methode fällt mir auf die schnelle nicht ein

Re: Form Inhalt kopieren (CC)

18. Dezember 2013 13:41

Ich habe jetzt wie du geraten hast ein Flowfield erstellt mit dem Namen Höchste Vers.-Nr. (Code)
Die Eigenschaften für Calcfields sind: Max(PROJACK."Versions No."). Jetzt sieht man in der Tabelle hinter jedem Eintrag egal von welcher Nr. weiter die Versionsnummern und bei Höchste Vers.-Nr. steht überall 4 (hab bei einem 4 Versionen gemacht im laufe des Vormittags), ich weis nicht ob das bisher richtig war aber wollt dann noch das andere machen in OnAfterGetRecord dort steht jetzt bei mir:
Code:
CALCFIELDS(Projack."Höchste Vers.-Nr.");
SETRANGE(Projack."Versions No.", Projack."Höchste Vers.-Nr.");

Wenn ich das Ausführen oder speichern will kommt die Meldung
Es wurde ein Feld einer Datensatzvariablen erwartet. Zum Beispiel:
Datensatz.Feld
Debitor.Name

Ich hoffe mal das ich das richtig gemacht.
Aber trotzdem vielen dank für die Hilfe :)

Re: Form Inhalt kopieren (CC)

18. Dezember 2013 14:29

mach mal lieber

Code:
CALCFIELDS("Höchste Vers.-Nr.");
SETRANGE("Versions No.", "Höchste Vers.-Nr.");


ich weiß nicht, woher du immer das Projack nimmst :)

ps:
die Calcformula im Flowfield ist anscheinend auch nicht so korrekt - hier mal ein Beispiel

Max(DEINETABLE."Versions No." WHERE (Nr=FIELD(Nr)))

Ohne die Where-Klausel holst du dir immer die höchste Versionsnummer, egal welche Nummer dein Projekt hat - du willst aber die höchste Versionsnummer zu dem jeweiligen Projekt
Zuletzt geändert von sweikelt am 18. Dezember 2013 14:44, insgesamt 1-mal geändert.

Re: Form Inhalt kopieren (CC)

18. Dezember 2013 14:43

Das Projack ist der Table ich habs auch schon ohne versucht aber dann kommt ein Syntax Fehler.

Re: Form Inhalt kopieren (CC)

18. Dezember 2013 14:53

würd ich mir mal gerne anschauen - hast ne private nachricht ;)

die Lösung wird dann hier bereitgestellt

Re: Form Inhalt kopieren (CC)

18. Dezember 2013 15:29

ok, da die Fernwartung nich möglich ist, hier mal ein weiterer Versuch:

du hast in der Tabelle das Flowfield angelegt (auch mit der Where-Klausel)

du bist in deine Form gegangen, hast dort im OnAfterGetRecord-Trigger folgenden Code hinterlegt:

Code:
CalcFields("Höchste Vers.-Nr.");
SETRANGE("Versions No.", "Höchste Vers.-Nr.");


beim Kompilieren erhälst du einen Syntaxfehler -> wo steht der Cursor?
achte bitte darauf, dass deine Projack-Variable garnichts mit dem aktuellen Datensatz zu tun hat, weshalb ich auch schrieb"
sweikelt hat geschrieben:ich weiß nicht, woher du immer das Projack nimmst :)


ich habe das gleiche soeben mal in einer Test-DB durchgeführt und bei mir funktioniert alles - somit hast du wohl nur einen kleinen Schreibfehler drin
steht denn Zufälligerweise noch Quellocde ÜBER dem neuen Quellcode im OnAfterGetRecord-Trigger?
wenn ja, ist der letzte Befehl mit einem
Code:
 ;
beendet wurden?`-> falls nicht, ist das der Fehler!

heißt das Versionsnummernfeld in der Tabelle "Versions No." oder vielleicht doch "Versions Nr."???

Re: Form Inhalt kopieren (CC)

18. Dezember 2013 15:39

Du hattest recht ich habe das letzte Komma vergessen :oops:
Aber jetzt zeigt er nur noch immer das eine an wo die Versionsnummer 2 ist der Rest wird ausgeblendet kann man den filter so machen das halt nur von z.B. Nr. 1 Version 2 aber Nr. 2 Version 1. Muss ich da einfach dann was bei Setrange mit einfügen oder ist sowas nicht möglich bzw. zu kompliziert.

Re: Form Inhalt kopieren (CC)

18. Dezember 2013 16:12

oh verdammt, ich hab zu kurz gedacht...ich prüfe mal weiter

Re: Form Inhalt kopieren (CC)

18. Dezember 2013 16:26

Kein Ding :)

Re: Form Inhalt kopieren (CC)

18. Dezember 2013 17:52

sorry, aber mit dem flowfield und dem setrange auf der form wird's wohl doch nix

Re: Form Inhalt kopieren (CC)

7. Januar 2014 09:02

Euch allen erstmal ein frohes neues :)
Ich werde das erstmal schließen ich hab zwar selber keine Lösung aber soll erstmal die anderen Sachen für den Kunden machen. Sollte ich später eine Lösung gefunden haben werde ich es hier rein schreiben ^^ und Danke noch einmal für die Hilfe :D