Autor Thema: neu Nummerierung in einer Maske  (Gelesen 14211 mal)

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re:neu Nummerierung in einer Maske
« Antwort #20 am: 27.08.04 - 12:53:44 »
7_Stein ist doch ganz offensichtlich nicht Ed Brill.

Ich weis ja nicht was du gegen Ed hast? Auf welchen Zeh ist er dir denn mal gelatscht?

Aber wer gegen erste zarte und dann immer deutlicher werdende Hinweise, das an seiner (ihrer) Art um Hilfe zu bitten eigentlich nichts einzuwenden wäre, wenn, ja wenn, die entsprechenden Informationen mit rüberwachsen würden, immun ist, der braucht sich nicht wundern das er hier etwas härter angegangen wird. Guck doch mal in deine geliebten JAVA Foren und überleg was diese Art der Fragestellung dort ausgelöst hätte. Dagegen ist das hier milde.

@7_Stein: Solche "Sortieralgorythmen" bringen nix gutes.
Die Funktionalität von 1 bis x sauber durchgezählten Dokumenten hat sehr hohe Performance-Kosten.

Full ACK

Jede Nacht lief ein Agent durch die Datenbank, der zwischen den Nummern Lücken schuf, d.h. er ging alle Dokumente durch und vergab neue Nummern mit jedesmal frischen 10er Abständen. Wenn die dann ein Dokument zwischen 10 und 20 legen wollten, nahmen die eben 13 oder 14 oder 17.

Hier irrt der Weise. Zwar nicht in der Sache generell, da hat er recht, aber im Speziellen. Es geht hier nicht um N-Tausend Dokumente, sondern "nur" um Bestellpositionen unterhalb eines Bestellkopfes. Da wirst du es selten erleben, das da ein paar tausend Dokumente zum neusortieren zusammenkommen.

Es ist nämlich in aller Regel nicht wichtig, dass bei den Nümmerschen auf 7 die Nummer 8 folgt. Wichtig ist, dass es die Möglichkeit gibt die Dokumente in eine gewisse Reihenfolge einzusortieren.

Das solltest du mal einigen Institutionen wie z.B. einer Finanzbuchhaltung,  einer Revision oder der Steuerfahndung erklären. Die werden dich diesbezüglich erst An-, dann Auslachen und anschließend zu Ihrem Tagesgeschäft mit der fortlaufenden Belegnummerierung zurückkehren.

Thomas
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Marinero Atlántico

  • Gast
Re:neu Nummerierung in einer Maske
« Antwort #21 am: 27.08.04 - 13:12:56 »
Das solltest du mal einigen Institutionen wie z.B. einer Finanzbuchhaltung,  einer Revision oder der Steuerfahndung erklären. Die werden dich diesbezüglich erst An-, dann Auslachen und anschließend zu Ihrem Tagesgeschäft mit der fortlaufenden Belegnummerierung zurückkehren.

Falls es dafür keine ökonomisch begründbaren Intentionen gibt:
Alles eine Frage des Evolutionsdrucks. Der wird hierzulande in den nächsten Jahren sowieso zunehmen. ;D  
Irgendwann wird der Druck dann so stark, dass die Deutschländer immer mehr Würsteleien aufgeben.
As simple as that.
« Letzte Änderung: 27.08.04 - 13:18:27 von Marinero Atlántico »

7Stein

  • Gast
Re:neu Nummerierung in einer Maske
« Antwort #22 am: 27.08.04 - 13:15:40 »
Ich versuche eine Frage so zu formulieren, dass sie jeder versteht.
Ich hatte schonmal erwähnt, dass ich von der relationalen db Seite komme.
Ich versuche mich an die Vorgaben von Notes zu gewöhnen.
Ich habe hier ein "fertiges Programm", dass ich überarbeiten muss.
Ich werde versuchen meine Fragen demnächst so zu stellen, dass ich in den Formulierungen keine Fehler mehr mache.

Aber hier so nieder gemacht zu werden, nur weil man sich vielleicht zu umständlich oder zu missverständlich ausdrückt, finde ich echt eine Sauerei.

Ich ignoriere übrigens keine Hinweise.

Danke trotzdm an @Thomas für die Hilfe

Glombi

  • Gast
Re:neu Nummerierung in einer Maske
« Antwort #23 am: 27.08.04 - 13:32:38 »
@7Stein: Eine generelle Anmerkung:
Es würde uns die Hilfe wesentlich erleichtern, ja eigentlich erst ermöglichen, wenn Du uns folgendes sagst:
1. Was für ein Ergebnis erwartest Du, wenn das Script läuft.
2. Wenn das Ergebnis nicht eintritt - und das wird ja der Grund einer Frage hier sein : Was passiert stattdessen GENAU?
3. Bitte beantworte Fragen - am besten mit
Zitat
...
.
Die Frage nach LastDetailPos hatte ich bereits am Anfang gestellt und dann hätte man sich einiges sparen können.

In dem o.g. Script werden einige Messageboxen bzw. Inputboxen aufgerufen. Es wäre gut zu wissen, ob der Code bis dahin kommt und welche Meldung kommt (gut, das wissen wir jetzt).
Dann werden Felder gesetzt - Pos und LastEditPos. Wie ist der Wert der Felder VOR dem Scriptlauf und NACH dem Scriptlauf.

Es hakt eigentlich nicht an den Formulierungen, sondern an Detailinformationen. Daher gibt es hier die starken Reaktionen.

Ein Tipp für das "Debuggen", wenn der Debugger nicht geht (wg. Dialogbox). Baue der Messageboxen ein, die den Wert anzeigen.
Z.B. mache ich das so:

dim searchstring as string
searchstring = |Form = "BestandsabfrageDetail" & ParentUNID = "| + thisDoc.UniversalID + |"|

msgbox searchstring
Set collection = db.Search( searchstring, Nothing, 0 )

Dann siehst Du, welcher Suchstring ausgeführt wird.
Als nächstes
msgbox collection.Count

Dann siehst Du, wieviele Dokumente das Script gefunden hat.

Zitat
thisDoc.LastDetailPos steht eine 0 drin.
heisst, das Script findet KEINE Dokumente! Also wird nichts weiter gemacht. Es wäre jetzt zu untersuchen, warum keine Dokumente gefunden werden und dazu ist o.g. Messagebox gedacht.

Andreas

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re:neu Nummerierung in einer Maske
« Antwort #24 am: 27.08.04 - 13:46:17 »
Und noch eine Anmerkung zum Thema Debuggen

Was in Script immer funktioniert, auch wenn ein Agent auf dem Server läuft, ist eine
Print " Hierkommt was von meinem Agent "+ Variable
Anweisung einzubauen. Damit kann man in der Statuszeile direkt und beim Server im Log nachvollziehen was das Teil gerade gemacht hat.

Und willkommen im Club 7Steinchen, auch wenn du warscheinlich nicht wie deine Namensgebering mit Zauberkräften gesegnet bist.

Warte mal ab wie du so in einem Jahr drauf bist wenn du das Licht der Erleuchtung mit tragen wirst. (ha war das schwülstig)

Thomas
« Letzte Änderung: 27.08.04 - 13:46:46 von Thomas Schulte »
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re:neu Nummerierung in einer Maske
« Antwort #25 am: 27.08.04 - 13:52:29 »
Falls es dafür keine ökonomisch begründbaren Intentionen gibt:
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
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

y20frank

  • Gast
Re:neu Nummerierung in einer Maske
« Antwort #26 am: 27.08.04 - 14:34:37 »
Falls es dafür keine ökonomisch begründbaren Intentionen gibt:
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ß.

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

  • Gast
Re:neu Nummerierung in einer Maske
« Antwort #27 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.

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re:neu Nummerierung in einer Maske
« Antwort #28 am: 27.08.04 - 15:05:38 »
Man kann ja eine stored procedure schreiben, die dann angetriggered wird, wenn die/der an der Pforte 4 mal pfeift.
Mit automatischer Türblockierung, Ohh tut mir leid da klemmt was, solange die Prozedur noch nicht fertig ist.
« Letzte Änderung: 27.08.04 - 15:06:44 von Thomas Schulte »
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re:neu Nummerierung in einer Maske
« Antwort #29 am: 27.08.04 - 15:11:22 »

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.



@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  

 
Ohne Computer wären wir noch lange nicht hinterm Mond!

y20frank

  • Gast
Re:neu Nummerierung in einer Maske
« Antwort #30 am: 27.08.04 - 15:12:45 »
ich finde, die sollten sich über eine (natürlich) notes-basierte datenbank offiziell anmelden (aber lesen dürfen nur die ihre anmeldung), wobei dann aber tortzdem ein kleiner süßer agent so ziemlich alles in diversen db's rechnungsprüfer-konform ummodelt. hey, hat nicht vielleicht jemand eine solche anwendung... oh, ich suche mal im tool-bereich...  ;D

Glombi

  • Gast
Re:neu Nummerierung in einer Maske
« Antwort #31 am: 27.08.04 - 15:27:21 »
Der Thread wird langsam unübersichtlich  ::)
Und 7 Stein sagt gar nix mehr !?

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re:neu Nummerierung in einer Maske
« Antwort #32 am: 27.08.04 - 15:50:18 »
@Atlantischer Seemann
Der Code erhebt keinen Anspruch auf alleingültige Richtigkeit, Vollständigkeit oder Fehlerfreiheit. Wenn du davon redest, dann fehlt da sowieso noch was, nämlich der docdetail.save damit die veränderte positionsnummer auch abgespeichert wird und dann ist das mit dem Olddoc aber wieder richtig.

Und nein da sollte es eigentlich nicht knallen. sobald du ein Dokument veränderst fliegt es nämlich aus der Collection raus, sonst wäre der Zirkus mit dem Olddoc nicht immer wieder notwendig.

Selbst wenn das Dokument nicht aus der Collection rausfliegen würde müsste das trotzdem noch so funktionieren.

Thomas
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re:neu Nummerierung in einer Maske
« Antwort #33 am: 27.08.04 - 15:52:27 »
@glombi
Eben jetzt macht es richtig Spass.

@7Stein, könntest du den Thread bitte auf erledigt setzen, sonst machen wir hier nämlich noch ewig weiter.

Auch wenn das jetzt ein blöder Eintrag ist ist es trotzdem Eine Runde Zahl, darauf geh ich jetzt eine Apfesaftschorle schlürfen.

Thomas
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Glombi

  • Gast
Re:neu Nummerierung in einer Maske
« Antwort #34 am: 27.08.04 - 15:55:06 »
Na denn Prost Y  ;)

Andreas

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re:neu Nummerierung in einer Maske
« Antwort #35 am: 27.08.04 - 21:18:30 »
@Atlantischer Seemann

 ??? Ich glaube du verwechselst mit mit dem anderen Axel (dem Marinero Atlántico). Ist aber nicht weiter tragisch. Ich bin der Andere  ;)  ;D

... nämlich der docdetail.save damit die veränderte positionsnummer auch abgespeichert wird und dann ist das mit dem Olddoc aber wieder richtig.
Und nein da sollte es eigentlich nicht knallen. sobald du ein Dokument veränderst fliegt es nämlich aus der Collection raus, sonst wäre der Zirkus mit dem Olddoc nicht immer wieder notwendig. ...

Also ich hab' schon öfter's Dokumente innerhalb einer Collection geändert und die sind dabei nicht rausgeflogen. Mit Ausnahme wenn ich Docs aus einer Collection lösche, hab ich den Zirkus mit olddoc nie gebraucht. Deswegen kann ich deine Aussagen nicht so ganz nachvollziehen. Aber sei's drum. Ich will hier keine Grundsatzdiskussion von Zaun brechen. Dieser Thread hat sowieso schon die Gemüter erhitzt. Das bin ich in diesem Forum gar nicht gewöhnt.

Ein schönes Wochenende

Axel

PS: Ich fahr jetzt erstmal in den Urlaub. Notes-freie Zone  ;) ;D


Ohne Computer wären wir noch lange nicht hinterm Mond!

y20frank

  • Gast
Re:neu Nummerierung in einer Maske
« Antwort #36 am: 27.08.04 - 21:27:54 »
Ich fahr jetzt erstmal in den Urlaub. Notes-freie Zone  ;) ;D
toll, alle fahren weg... thailand, indien... ok, und ich versuch' mich derweil an dem 7'er server, admin, client, designer...  :'( viel spaß dir aber wohin auch immer   ;)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:neu Nummerierung in einer Maske
« Antwort #37 am: 27.08.04 - 23:47:15 »
Aber hier so nieder gemacht zu werden, nur weil man sich vielleicht zu umständlich oder zu missverständlich ausdrückt, finde ich echt eine Sauerei.

Letzter Versuch:
Hier findet keine "Sauerei" statt, sondern der Versuch, Dich auf den richtigen Weg zu bringen. Immer wieder wurde von meist extrem hochkarätigen Leuten versucht, Dir klar zu machen, dass DU zunächst mal Nabelschau (sprich Selbsterkenntnis) betreibst, was Du bisher vollkommen ignoriert hat.
Dein Problem ist auch nicht Lotus Notes / Domino, sondern die Programmiererei an sich (und das ist bekanntermassen nicht nur Coding, sondern auch und vor allem das allgemeine Problemverständnis).

Wir helfen hier im Forum alle gerne und sind zudem extrem tolerant. Bedenke aber bitte (und das unbedingt): Jedes Posting hier geht irgendwie von unserer Zeit für andere Dinge ab, mit denen wir entweder unsere Familien ernähren müssen und / oder die Zeit mit unseren Familien verbringen könnten.
Akzeptiere also bitte unbedingt folgendes:
- Wir helfen hier gerne, aber veralbere uns nicht (aus welchen Gründen auch immer)
- Akzeptiere bitte, dass Du momentan noch (!) keine Ahnung von Programmentwicklung hast - völlig unabhängig von Lotus Notes / Domino (das haben Deine Postings eindeutig gezeigt)
- In diesem Zusammenhang: Verstehe unseren Idealismus in der Art, dass wir wissen, dass wir auch alle mal angefangen haben, aber dass es auch für uns noch ein Leben neben der Arbeit und dem Forum gibt
- Beantworte jede (!!) unserer Fragen ausführlich - streng' Dich an.
- DENKE !
- Und vor allem: Trete Deinem / Deinen Chef(s) realistisch und selbstbewusst gegenüber: Diese können von Dir auch nicht erwarten, dass Du morgen mit einem Führerschein der Klasse B den Firmenjet fliegst. Und komm' jetzt ja nicht damit, dass Eure Firma keinen Firmenjet hat, sondern DENKE !

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz