Domino 9 und frühere Versionen > Entwicklung

neu Nummerierung in einer Maske

<< < (6/8) > >>

Thomas Schulte:

--- Zitat von: Marinero Atlántico am 27.08.04 - 13:12:56 ---Falls es dafür keine ökonomisch begründbaren Intentionen gibt:

--- Ende Zitat ---
Jetzt machst du es dir zu einfach. Diesen Druck gibt es tatsächlich, z.b. von Seiten der Finanzbehörden. Die verlangen eine lückenlose Verfolgung der Eingangsbelege. und das erreichst du nur über fortlaufende Nummern. Wenn da etwas nicht stimmt fängt die Außenprüfung an zu bohren und dann viel Spaß.

Thomas

y20frank:

--- Zitat von: Thomas Schulte am 27.08.04 - 13:52:29 ---
--- Zitat von: Marinero Atlántico am 27.08.04 - 13:12:56 ---Falls es dafür keine ökonomisch begründbaren Intentionen gibt:

--- Ende Zitat ---
und das erreichst du nur über fortlaufende Nummern. Wenn da etwas nicht stimmt fängt die Außenprüfung an zu bohren und dann viel Spaß.

--- Ende Zitat ---

stimmt vollkommen! ich selbst wurde erst vor ein paar tagen dafür ausgelacht (in einem anderen forum ;->), weil ich in einer SQL-Datenbank den Auto_Increment-Wert wieder auf eine bestimmte Position zurücksetzen wollte (MUSSTE), damit eine lückenlose Zahlenfolge in der Tabelle generiert wird. Hat auch niemand so recht(lich) verstanden... isch liebe die finanzeämta! ;-) :P

Marinero Atlántico:
Man kann ja eine stored procedure schreiben, die dann angetriggered wird, wenn die/der an der Pforte 4 mal pfeift.

Thomas Schulte:

--- Zitat von: Marinero Atlántico am 27.08.04 - 14:47:14 ---Man kann ja eine stored procedure schreiben, die dann angetriggered wird, wenn die/der an der Pforte 4 mal pfeift.

--- Ende Zitat ---
Mit automatischer Türblockierung, Ohh tut mir leid da klemmt was, solange die Prozedur noch nicht fertig ist.

Axel:

--- Zitat von: Thomas Schulte am 27.08.04 - 12:08:44 ---
So und was deine Neuberechnung der Positionen angeht:

  Dim collection As NotesDocumentCollection
  Dim docDetail As NotesDocument  
  Dim olddocdetail as notesdocument
  Dim viewForRefresh As NotesView
  dim view2 as NotesView
  Dim strPos As String
 
  Dim i As Integer
 
  Set viewForRefresh = db.GetView( "(BestellPositionen)" )
  Set view2 = db.GetView( "(BestellPositionenByKey)")
HIER SIND LAUFZEITPROBLEME BEI VIELEN DOKUMENTEN IN DER DATENBANK ZU ERWARTEN
  Call view2.Refresh()
  Set collection = view2.GetAllDocumentsByKey(thisDoc.UniversalID)
 
  Select Case collection.Count
  Case 0:
      Msgbox "Keine Position vorhanden.", 48, db.title

  Case 1:
      Set docDetail = collection.GetFirstDocument
      Call docDetail.Remove (True)
      Thisdoc.LastDetailPos = 0
      Call thisdoc.Save(True,False)

  Case Else:
      strPos = Inputbox$( "Welche Position löschen?", "Position löschen", "1" )
      If strPos <> "" Then
        Call view2.Refresh()
        Set docDetail = view2.GetDocumentByKey( thisDoc.UniversalID + "-" + strPos )
        Call docDetail.Remove( True)
      End If
      set docdetail = collection.getfirstdocument()
      do while not docdetail is nothing
         set olddocdetail = docdetail
         UMWANDELN WENN KEIN STRING ->
         if docdetail.pos(0) > StrPos
           Docdetail.pos = docdetail.pos(0) -1
        end if
        set docdetail = collection.getnextdocument(olddocdetail)
      Enddo
      UND WENN DU PARTOUT DIE ANZAHL DER POSITIONEN SPEICHERN WILLST
      Thisdoc.LastDetailPos = ThisDoc.LastDetailPos(0) - 1
      DANN DAS THISDOC APSPEICHERN WEIL ES JA BACKEND IST
      Call ThisDoc.Save(True,False)

  End Select      

Und hier musst du nur noch das UIdoc wieder in den Voerdergrund holen. Du hast ja schließlich im Backend gearbeitet.

Damit ist das sauber strukturiert und kein überflüssiger Code drin.


--- Ende Zitat ---


@Thomas

So ganz kann ich deiner Aussage aber nicht zustimmen. Sauber strukturiert - ja, aber überflüssiger Code - na ja.  

      do while not docdetail is nothing
        set olddocdetail = docdetail
         UMWANDELN WENN KEIN STRING ->
         if docdetail.pos(0) > StrPos
           Docdetail.pos = docdetail.pos(0) -1
        end if
        set docdetail = collection.getnextdocument(olddocdetail)
      Enddo

Meines Erachtes ist das unnötig. Wenn innerhalb so einer Schleife das Dokument gelöscht wird, ist das zwingend notwendig, aber hier.   ???

Zum zweiten ist mir beim Überfliegen des Code auch noch ein anderer Fehler aufgefallen.

Relativ weit oben im Code füllst du die collection mit den Positionsdokumenten.

...
  Set collection = view2.GetAllDocumentsByKey(thisDoc.UniversalID)
...

Weiter unten wird ein Positionsdok. gelöscht und dann sollen die restlichen neu nummeriert werden. Dafür wird jedes Dokument in der collection durchlaufen, aber...
In der collection ist auch noch der Verweis auf das gelöschte Dokument drin. Meines Erachtens knallts hier. Oder liege ich da falsch.

Richtigerweise müsste man die collection erst im CASE ELSE - Zweig füllen wenn das Positionsdokument bereits gelöscht ist.


Axel  

 

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln