PDA

View Full Version : Datensatz Abschluß



Th.Forsti
24-Sep-2012, 04:24 AM
Hallo @ All,

irgend wie stehe ich jetzt auf den Schlauch !

wir haben eine View in der Aufträge erfasst werden, was auch gut geht.
Nun wird der Auftrag durch ein Abschlußdatum abgeschlossen.
Jetzt möchte ich das der Auftrag nicht mehr bearbeitbar ist und das dem User mit ner Stop-Box mitteilen.

Das sollte allerdingst nur in der View (Auftragserfasseung/Änderung) hier erfolgen !

Habe die Procedure aus dem DD dafür vorgesehen!

Procedure OnNewCurrentRecord RowID riOldRowId RowID riNewRowId

jedoch kommt nun das mit dem Schlauch !!!!

Dennis Piccioni
24-Sep-2012, 08:15 AM
Hi Thomas,

ich würde das in Request_Save machen, nach dem forward send, das müsste sicher und ok sein.

Th.Forsti
24-Sep-2012, 08:28 AM
Hi Thomas,

ich würde das in Request_Save machen, nach dem forward send, das müsste sicher und ok sein.

Hallo Dennis,

Danke für die Antwort.

Der User sollte schon beim Aufrufen des Datensatz mitbekommen das dieser nicht mehr änderbar/bearbeitbar ist, nicht erst
wenn er auf Save klickt.
Der DS sollte dann auch nicht mehr speicherbar sein !

Dennis Piccioni
24-Sep-2012, 08:42 AM
Vielleicht habe ich Dich falsch verstanden. Ist das Problem die Nachricht zu geben oder mit dem Sperren? Auch, was genau war das Problem mit Deiner originalen Lösung?

Th.Forsti
24-Sep-2012, 08:50 AM
Vielleicht habe ich Dich falsch verstanden. Ist das Problem die Nachricht zu geben oder mit dem Sperren? Auch, was genau war das Problem mit Deiner originalen Lösung?

Hallo Dennis,
das Orginal Problem war, wenn ich die Meldung in den OnNewCurrentRecord ausgebe, dann kommt die Meldung und dann erst der DS in der Anzeige.

Das mit den "nicht" Speichern ist das nächste Problem

Ich brauche in der View
1. die Anzeige das der DS nicht mehr änder/bearbeitbar ist als Info-Box
2. das der DS nicht mehr gespeichert werden kann.


Ich hoffe jetzt ist es Verstanden !

Dennis Piccioni
24-Sep-2012, 01:04 PM
Hi Thomas,

da sollte eigentlich OnNewCurrentRecord die richtige Procedure sein, und dann Read_Only_State des DDOs sollte das sperren machen.

z.B. habe ich dieses im Order.vw innerhalbs des 'Object OrderHea_DD is a OrderHea_DataDictionary' versucht:


Procedure OnNewCurrentRecord RowID riOldRowId RowID riNewRowId
Forward Send OnNewCurrentRecord riOldRowId riNewRowId
If (HasRecord(Self) and (not(IsSameRowID(riOldRowId, riNewRowId))) and (OrderHea.Order_Date > 01/01/2004)) Begin
Send Info_Box "Diesen Order kann man nicht weiter bearbeiten."
Set Read_Only_State to True
End
Else Begin
Set Read_Only_State to False
End
End_Procedure

Th.Forsti
24-Sep-2012, 01:08 PM
Hi Thomas,

da sollte eigentlich OnNewCurrentRecord die richtige Procedure sein, und dann Read_Only_State des DDOs sollte das sperren machen.

z.B. habe ich dieses im Order.vw innerhalbs des 'Object OrderHea_DD is a OrderHea_DataDictionary' versucht:


Procedure OnNewCurrentRecord RowID riOldRowId RowID riNewRowId
Forward Send OnNewCurrentRecord riOldRowId riNewRowId
If (HasRecord(Self) and (not(IsSameRowID(riOldRowId, riNewRowId))) and (OrderHea.Order_Date > 01/01/2004)) Begin
Send Info_Box "Diesen Order kann man nicht weiter bearbeiten."
Set Read_Only_State to True
End
Else Begin
Set Read_Only_State to False
End
End_Procedure

Hallo Dennis,

Danke für das Post, werde ich Morgen testen

Schönen Tag noch nach USA

Roman Köhler
25-Sep-2012, 02:13 AM
Hallo Thomas,

entschuldige, wenn ich mich einmische. Um das eigentliche Problem hat sich Dennis ja schon gekümmert. Da gibts nicht mehr dazu zu sagen.
Ich denke eher, das die Anzeige einer Stop-Box zu aufdringlich ist. Stell Dir vor, Du willst durch alte Aufträge blättern, weil Du z.B. nur noch das ungefähre Datum weißt, wann der Auftrag geschrieben wurde und Du bekommst beim Blättern für jeden Datensatz eine Stop-Box. Das ist richtig lästig und behindert eher, als dass es hilft.
Wir haben das Problem in der Weise gelöst, dass wir eine Neuanlage/Bearbeiten-Vier haben (Abschlussdatum = "") und eine Anzeigeview in der alles angezeigt wird, aber nichts geändert werden kann. Nach dieser Umstellung hörten meine Kollegen auf zu motzen.

Nur ein Vorschlag.

Th.Forsti
25-Sep-2012, 08:40 AM
Hallo Roman,

Danke für den Hinweiß, ja das ist nervig wenn immer eine Stop-Box kommt.

Ich habe das nun so gelöst.

In dem Feld selber das hier:


Procedure Refresh Integer notifyMode
bHasRecord
Forward Send Refresh notifyMode
Get Current_Record of oFAKKOPF_DD to bHasRecord
If bHasRecord Begin
If (FAKKOPF.GEBUCHT_JN = "J") Begin
Set status_help to "Fak.-Nr. GEBUCHT, bearbeiten nicht möglich !"
Set Color to clRed
End
Else Begin
Set status_help to "Fak.-Nr. - Neue Fakturen bekommen automatisch eine neue Fak.-Nr."
Set Color to clWindow
End
End
End_Procedure


In den DD das hier:


Procedure OnNewCurrentRecord RowID riOldRowId RowID riNewRowId
Forward Send OnNewCurrentRecord riOldRowId riNewRowId
If (HasRecord(Self) and (not(IsSameRowID(riOldRowId, riNewRowId))) and (FAKKOPF.GEBUCHT_JN = "J")) Begin
Set Read_Only_State to True
End
Else Begin
Set Read_Only_State to False
End
End_Procedure


Somit kann der User Blättern ohne das nervige mit der Stop-Box !:)

Dennis Piccioni
25-Sep-2012, 08:48 AM
Ja ich stimme mit Roman ein. Gute Lösung Thomas. :)