AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
22.09.20 - 18:29:45
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  Domino 8 und frühere Versionen
| |-+  Entwicklung (Moderatoren: Axel, eknori, Hoshee, ata, Thomas Schulte, koehlerbv)
| | |-+  Erstellen von Kundennummern
« vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Erstellen von Kundennummern  (Gelesen 8594 mal)
TeeJay
Junior Mitglied
**
Offline Offline

Geschlecht: Männlich
Beiträge: 80


Sagen wir ich mag das Forum :)


WWW
« am: 30.12.03 - 17:22:22 »

Diese Frage wurde bestimmt schon häufig gestellt  ich möchte aber trotzdem dieses Thema nochmal ansprechen.

Was meine ich mit Kundennummern ? In einer Maske soll es ein Feld ( berechnet ) geben welches  sich immer die größte Zahl aus einer bestimmten Spalte einer liste holt und diese um eins erhöht. mit dem abspeichern der Maske ist dieser Datensatz in der Liste und enthaelt wieder die Max Kundennummer.

Jetzt meine Frage wie bekomme ich die größte Zahl einer Spalte  zurückgegeben.

Kann man das so realisieren ??
Gespeichert

jeder sollte so eine signatuer haben.
Glombi
Gast
« Antworten #1 am: 30.12.03 - 17:25:15 »

Du sortierst die Spalte absteigend, so dass die höchste Nummer ganz oben steht. Dann machst Du ein

_Nummer := @DbColumn("Notes":"NoCache";"";"Ansicht";1);

und mit
@Subset(_Nummer;1)
erhälst Du die Zahl.

Andreas
Gespeichert
TeeJay
Junior Mitglied
**
Offline Offline

Geschlecht: Männlich
Beiträge: 80


Sagen wir ich mag das Forum :)


WWW
« Antworten #2 am: 30.12.03 - 18:03:27 »

also ich habe s mal so ausprobiert

ich habe die Kundennr absteigend sortiert (in der namen liste) also kleinste zahl ganz oben.

ich habe nun ein datensatz erstellt  der als kundennummer die eins hat damit ein vorgabe wert da ist.

dann gehe ich in die eingabe maske  auf das NR Feld  und setzte es auf berechnet  um  dann diesen code dort einzufügen

Nummer := @DbColumn("Notes":"NoCache";"";"Namen";1);
@Set( "Nummer";@TextToNumber(@Subset(Nummer;1))+1)

mit deinem code incremtierst du nicht.

wenn ich jetzt einen weiteren Datensatz  einfügen möchte funktioniert das auch, er zeigt mir die 2 in der Maske  und Speichert diese auch. Wenn ich einen weiteren Datensatz speichern möchte kommt ein Fehler

Die Datentypen der beiden Vergleichsergebnisse sind nicht kompatibel

woran kann das liegen
Gespeichert

jeder sollte so eine signatuer haben.
TeeJay
Junior Mitglied
**
Offline Offline

Geschlecht: Männlich
Beiträge: 80


Sagen wir ich mag das Forum :)


WWW
« Antworten #3 am: 30.12.03 - 18:10:41 »

hmmm ich hab grad nochmal die Hilfe durchgeschaut, nach der es so gar nicht funktionieren kann. Dbcolumn  sucht alle Werte einer Spalte raus. Sobald 2 Werte in einer Spalte stehen  wird keine Zahl mehr zurückgegeben, ich nehme an eine Liste.

Wie bekomme ich denn nun die unterste bzw die oberste Zahl (je nachdem wie man sortiert) heraus.
Gespeichert

jeder sollte so eine signatuer haben.
TMC
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3660


meden agan


« Antworten #4 am: 30.12.03 - 20:40:24 »

Wie wärs mit einem kleinen Script:


Code:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument

If Source.IsNewDoc Then
   Set db = session.CurrentDatabase
   Set view = db.GetView("DEINE VIEW")
   Set doc = view.GetLastdocument
     
   If doc Is Nothing Then
      Source.Document.KUNDENNUMMER = 1
   Else
      Source.Document.KUNDENNUMMER = doc.KUNDENNUMMER(0) + 1
   End If
End If

Dazu hat Deine View 1 Spalte mit der Kundennummer, aufsteigend sortiert (wegen dem GetLastdocument). Kannst natürlich auch absteigend sortieren, dann schreibste halt GetFirstdocument  Wink


Du weißt ja hoffentlich über die Problematik der fortlaufenden Nr. Bescheid, siehe auch z.B. auch hier: http://www.atnotes.de/index.php?board=7;action=display;threadid=12905


TMC
« Letzte Änderung: 30.12.03 - 20:42:02 von TMC » Gespeichert

Matthias

A good programmer is someone who looks both ways before crossing a one-way street.

Axel_Janssen
Gold Platin u.s.w. member:)
*****
Offline Offline

Beiträge: 769



« Antworten #5 am: 30.12.03 - 21:07:31 »

ich würde immer view refresh da einfügen:

Code:
Set view = db.GetView("DEINE VIEW")
view.refresh
Set doc = view.GetLastdocument

Was machst du, wenn Dokumente gelöscht werden. Dann sind Stellen frei.

Ich empfehle dringend, dies als nicht so wichtig anzusehen und nicht mit diesen beliebten Experimenten anzufangen, dass diese Lücken gefüllt werden. Das kompliziert nur den code (mit den bekannten negativen Folgen für Lesbarkeit und Performance) und bringt meistens nix!
Gespeichert

... design patterns are abstract designs that help identify the structure and elements involved in a specific design solution. From this, a concrete implementation can be produced.
Kyle Brown
Semeaphoros
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 8152


ho semeaphoros - agr.: der Notesträger


WWW
« Antworten #6 am: 30.12.03 - 21:23:56 »

Im Gegenteil, diese Lücken in der Nummer sind eigentlich wichtige Hinweise dafür, dass da mal was war.
Gespeichert

Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6
TeeJay
Junior Mitglied
**
Offline Offline

Geschlecht: Männlich
Beiträge: 80


Sagen wir ich mag das Forum :)


WWW
« Antworten #7 am: 30.12.03 - 21:28:59 »

Wir behandeln notes im Rahmen eins Studienfaches  wir sollen  einige geschaeftsprozesse  mit notes umsetzten in meinem fall rechnungen erstellen. es ist nicht so wichtig  das alles bis ins letzte Detail funktioniert. wichtig ist nur das es grundlegend funktioniert.

Ich habe diesen thread gelesen  und in meinem Fall ist es nicht so wichtig all die aufgeführten Sachen zu beachten.
Gespeichert

jeder sollte so eine signatuer haben.
TeeJay
Junior Mitglied
**
Offline Offline

Geschlecht: Männlich
Beiträge: 80


Sagen wir ich mag das Forum :)


WWW
« Antworten #8 am: 30.12.03 - 21:34:14 »

aehm ich bin wirklich nicht sehr firm in Notes  wo kommt das Script jetzt genau hin ??

wenn ich es in den Vorgabe wert kopiere tut sich da nix es kommt nur ein fehler.

Huh Huh  Huh
Gespeichert

jeder sollte so eine signatuer haben.
TMC
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3660


meden agan


« Antworten #9 am: 30.12.03 - 21:40:40 »

Sollte z.B. in einen Maskenevent, Querysave z.B.

TMC
Gespeichert

Matthias

A good programmer is someone who looks both ways before crossing a one-way street.

TMC
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3660


meden agan


« Antworten #10 am: 30.12.03 - 21:45:27 »

Kommt natürlich auf den Hintergrund an.

Soll die Lfd. Nummer z.B. beim Klick auf einen Button "Speichern" erzeugt werden musst Du da noch ein paar Dims und Sets machen.

   Dim session As New NotesSession
   Dim uiws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim db As NotesDatabase
   Dim doc As NotesDocument   
   Set db = session.CurrentDatabase
   Set uidoc = uiws.CurrentDocument
   Set doc = uidoc.Document

Die Bezeichnungen (Source etc.) musst Du entsprechend anpassen.

TMC
Gespeichert

Matthias

A good programmer is someone who looks both ways before crossing a one-way street.

TeeJay
Junior Mitglied
**
Offline Offline

Geschlecht: Männlich
Beiträge: 80


Sagen wir ich mag das Forum :)


WWW
« Antworten #11 am: 30.12.03 - 21:56:43 »

ok ich habe es jetzt so gemacht wie du sagtest



Sub Querysave(Source As Notesuidocument, Continue As Variant)
   
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim doc As NotesDocument
   
   If Source.IsNewDoc Then
      Set db = session.CurrentDatabase
      Set view = db.GetView("Namen")
      Set doc = view.GetLastdocument
      
      If doc Is Nothing Then
         Source.Document.nummernfeld = 1
      Else
         Source.Document.nummernfeld = doc.nummernfeld(0) + 1
      End If
   End If
   
End Sub



ich bekomme eine Fehlermeldung  Type missmatch  nach dem ich auf speichern gedrückt habe.  Also er speichert den datensatz allerdings  vergiebt er keine numme :/
Gespeichert

jeder sollte so eine signatuer haben.
TMC
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3660


meden agan


« Antworten #12 am: 30.12.03 - 22:12:31 »

Bei mir klappt es.

Ist Dein "nummernfeld" vom Typ Zahl ?
Sollte es sein.
Lösche auch nochmal alle bisherigen Dokumente und lege dann mal ein paar neue an.

Ansonsten starte mal den Debugger und poste, in welcher Zeile er hängt.

Aber Type Mismatch kommt mir irgendwie so vor, dass Du da ein Textfeld verwendest (bzw. der Wert des letzten Doks vom Typ Text ist).

Ach ja, und füge auch den ViewRefresh ein wie von Axel gepostet, der Tipp ist gut! (hat aber jetzt nix mit der Fehlermeldung zu tun)


TMC
« Letzte Änderung: 30.12.03 - 22:15:06 von TMC » Gespeichert

Matthias

A good programmer is someone who looks both ways before crossing a one-way street.

TeeJay
Junior Mitglied
**
Offline Offline

Geschlecht: Männlich
Beiträge: 80


Sagen wir ich mag das Forum :)


WWW
« Antworten #13 am: 30.12.03 - 22:33:40 »

ok so funzt es jetzt   habt vielen dank   ich werde morgen bestimmt noch ein paar Fragen loswerden.

MFG TeeJay
Gespeichert

jeder sollte so eine signatuer haben.
TMC
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3660


meden agan


« Antworten #14 am: 30.12.03 - 22:44:06 »

schön dass es klappt.

Setzt Du bitte den Thread noch auf Erledigt?
Geht mit diesem Button:


TMC
Gespeichert

Matthias

A good programmer is someone who looks both ways before crossing a one-way street.

koehlerbv
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 20460



« Antworten #15 am: 05.07.08 - 16:35:56 »

Auch, wenn dies ein uralter Thread ist (aber ein Anfänger ist heute bereits darüber gestolpert und hat das Dokument gefunden): Dieses Verfahren wird nicht sicher funktionieren, und die mehrfache Vergabe von Nummern ist mehr als wahrscheinlich:
- User A speichert ein Dokument auf Server X
- User B speichert ein Dokument auf Server Y
- User C speichert ein Dokument lokal.
Dann wird repliziert (Server X mit Server Y, User C mit Server X). Alles klar?

Also: Finger weg von solch einem Quatsch.

Bernhard
Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: