Beiträge von Simsala

    Hi,


    ich denke Ihr werdet euch jetzt tolachen aber Notes bringt mich gerade um den Verstand.


    Ich habe ein nummerisches Feld in dem 10.000,00 drin steht.


    dieses will ich jetzt in einer z.B. View anzeigen. Aber nicht in einem eigenen Feld (was ich ja formatieren könnte) sondern in einem textfeld.


    z.B. "Angebotspreis: 10.000,00"


    OHNE Währung usw. Ich wollte jetzt @Text dafür verwenden. Aber ich finde in der hilfe keine richtige Information dafür.


    Habt Ihr eine Idee wie ich das machen kann ??


    derzeit seht bei mir


    "Angebotspreis: " + @TEXT(PREIS;"0,00")


    ==> "Angebotspreis: 10.000"


    Das ist nicht das was ich will !! Die hilfe hilft nicht bitte helft !!

    Ich hab das hierin mehreren Anwendungen laufen, diese enthalten Adressdaten von 40.000 - 50.000 dokumenten. Und es flutscht dort super schnell. Sind keine gigantischen Boliden und ist sogar in diesem Fall ein R4.6 Server + Client.


    Vorallem hat es den Vorteil, das du auch nach teilen des Namens suchen kannst. Als z.B. findet die Methode auch "Fa. Meyer". Wenn du nur Meyer suchst.


    Naja war halt nur ne Idee.


    Du kannst ja auch auf eine spezielle ansicht zugreifen. Wenn du NUR eine Kategorie hast und ein Namens Feld, dann würde es auch so gehen, das du die Ansicht so baust


    KATEGORIE +"~"+NAME


    Dann ein Getalldocumentsbykey mit ungenauer suche. Dann sollte das auch gehen.

    Bau dir eine Teilmaske. Dort machst du Optionsfelder oder Kombinationsfelder für die Grobe sepzifikation deiner suche rein.


    z.B. für Person aus Kategorie X Y Z


    Dann ein freies Textfeld für die Namenssuche.


    Jetzt kommt ein kleiner Scriptknopf. "SUCHE"


    Da kommt dann sowas rein.


    Dim dateTime As New NotesDateTime( "12.01.1989" )
    Set SUCHDb = s.GetDatabase(SERVER, PFAD )

    searchformula1 = |@CONTAINS(FORM;"Adressdaten")|



    If (KAT <> "") Then
    searchformula1 = searchformula1 + | & | + |@CONTAINS(FELD_KAT;@ProperCase(| + |"| + KAT + |"| + |))|
    End If


    If (NAME <> "") Then
    searchformula1 = searchformula1 + | & | + |@CONTAINS(FELD_NAME;| + |"| + NAME + |"| + |)|
    End If

    so baust du deine suche zusammen.


    Dann


    Set coll = SUCHDb.Search(searchformula1,Datetime,0)


    If (coll.count > 80) Then
    MsgText = "Suchergebnisse: " + Cstr(coll.count) + ". Bitte schränken sie ihre Suche ein!"
    Msgbox(MsgText)
    Elseif (coll.count < 1 ) Then
    Msgbox("Keine Dokumente gefunden")
    else
    ...
    Mit Do schleife das Ergebnis abschleifen (die collection)
    und dir die gefundenen in einem Optiosnfeld anzeigen lassen.
    ...
    end if


    aus dem wählt er dann einen Namen aus. Das was du
    dann zurückbekommst wenn er die Teilmaske schliesst,
    kann du dann in die entsprechenden Felder schieben.
    ...



    in der Maske wo du früher die Picklist hattest, kommt dann ein Knopf zum suchen rein der diese Dialogbox öffnet. Da muss natürlich noch mehr code zu kommen usw.



    erg = Ws.DialogBox("AdrSuche",True,True,False,False,False,False,"-",suchDoc)

    habt ihr solche Probleme öfter mit Auswahlfeldern, Listen, Kombinationsfeldern usw...


    Dann gibts da einen kleinen Trick, den könnt Ihr immer nutzen, mittlerweile ist das in meinen Applikationen ein fester bestandtteil geworden und funktioniert im script wie in Formeln usw...


    Baut euch eine Ansicht (hat bei mir immer den selben Namen)


    (vVarviablen)


    1.Spalte Kategorisiert (dadurch sortiert) = SCHLUESSELWORT
    2.Mehrfachwerte getrennt anzeigen (auch sortiert) =INHALTE


    Dann baut ihr eine Maske die sich (fVariablen) nennt und zwei Felder enthält SCHLUESSELWORT und INHALTE (Mehrfachwert untereinander anzeigen.


    So damit ist die Vorarbeit getan, die könnt ihr nun überall benutzen. Wenn Ihr jetzt Variablen braucht egal welche. z.B.


    ein Kombinationsfeld mit den Werken Eurer Firma z.B.


    000
    100
    200
    300


    Dann macht eine Variable auf mit Namen WERKE und schreibt die Inhalte in dieses dokument rein.


    dort wo Ihr das Feld nutzen wollt, macht ihr dann diesen Lookup rein.


    list := @DbLookup( "" : "NoCache" ; "" : "" ;"(vVariablen)" ;"WERKE";2 );
    @If(@IsError(list);"--- no information --- ";list)


    so habt ihr nur noch eine Ansicht mit allen Variablenwerte Eurer Anwendung. Achja und dadurch das es sich pro Variabler nur um ein dokument handelt (es könnten auch mehrere sein) ist das Ding sau schnell.


    Ich nenne die Variablen übrigens immer so wie die Felder für die ich sie baue (die sind meist sowieso zum Teil sprechend) Dann findet man die auch einfach wieder. Die Pflege vereinfacht sich total du brauchst kaum noch in die Anwendung um irgend welche neuen Sachen hinzuzufügen.


    Naja für Euren Fall hier muss man sich noch ein bischen was dazu stricken, aber das ist eine andere Sache und auch nicht soo schwer !!

    Oder du machst. in deine Maske eine button


    @Command([Compose];"(DRU_MASKE)")


    in dieser druckmaske machst du dann unter Postopen (script)


    Call source.close


    und unter queryclose (Formel)


    @Command([FilePrint] ; "" ; "" ; "" ; "" ; "" ; "" ; "PageBreak" ; "resetpages"; ""; "")


    Dann sollte es auch gehen. so mache ich das in der Regel wenn ich drucken will.

    mach dir doch mal ein Feld in deine Maske und schreibe dort deine Hide when formel als Befehl rein. z.B. in ein @IF


    Dann gibts du dir ein "OK" Aus wenn die Werte zutreffen und ein "NO" wenn die Werte nicht passen. So kannst du erstmal überprüfen ob deine HW Formel gedanklich richtig ist.


    Dann würde ich die HW Formel so schreiben in der HW-Bedingung.


    @IF(display_flag != "1";@TRUE;
    @IsMember("[accounting]";@UserRoles);@FALSE;
    resp_approver1 = @UserName;@FALSE;
    @TRUE)

    Ich hoffe das ich dich richtig verstanden habe.


    Wenn das Flag nicht mehr 1 ist dann darf keiner was sehen.
    wenn jemand die Rolle Accounting hat und Display_flag = 1 ist dann darf er es sehen. Wenn er der approver ist und Display_flag = 1 dann darf er es sehen sonst nicht.


    Ich glaube so müßte es gehen. !!

    Danke für die Antworten.


    1. Leider kann ich keine der Applikationen vom Netz nehmen. Da auf alle via Intranet externe Kunden zugreifen, die das nicht verstehen würden !!


    2. Soweit wir wissen passiert garnichts auf der console wenn man die Task beendet.


    Wir nehmen nicht an, das der Fehler in einer Applikation steckt. die Applikationen die uns betreffen laufen ja schliesslich alle und die funktionen die dort genutzt werden haben wir alle getestet.


    Wir können es uns einfach nicht erklären. :-? :-? :-? :-? :-?


    Es wäre halt gut wenn man IRGENDWO noch mehr auswerten könnte.

    Das ist ja das gemeine.


    wir haben eigentlich seit ewigkeiten nichts auf dem Server geändert. Seit einiger Zeit haben wir immer mehr Webapplikationen auf den Server geschaufelt. diese haben wir auch getestet. und die funktionieren auch. Der einzige richtige Unterschied ist, das eine Applikation seit einer woche komplett in Produktion gegangen ist und da jetzt mehrere User als im Test drauf zugreifen.


    Applikationsmäßig hat sich aber nichts geändert gehabt.


    die Frage ist halt Was kann man noch irgend wo erfahren um den Fehler genauer einzugrenzen. Im DOMLOG ist es immer wieder eine andere Applikation die als letzte aufgeführt wird.


    habt ihr noch eine Idee ?!

    Hi,


    ich hoffe hier bin ich im richtigen Thread. Bitte
    helft.


    Ich habe hier einen Notes 5 Server 5.0.12 der jetzt schon ewig läuft und auf dem wir schon einige Webapplikationen haben (Intranet) Angriffe von aussen sollten also nicht das Problem sein.



    Seit ca. einer Woche spinnt aber die HTTP Taks, diese bleibt einfach hängen und macht nichts mehr. Man muss um das wieder hinzubekommen, den ganzen Server restarten.


    wir haben schon alle Logs durchforstet.


    Domlog.nsf
    Log.nsf
    und unsere Agentenlogs die wir schreiben.


    nirgends ist ein hinweis auf das problem. Wo kann man noch suchen?? bzw. wo könnte ggf. das Problem liegen.


    wir bekommen hier schon mächstig eine auf die :hammer: :hammer: weil es nicht läuft.

    wieso schreibst du dir keinen Agenten der ein "random" kennwort im NAB vergibt.


    Ich würde das folgender massen machen.


    Agent erstellen der auf das NAB zugreift und alle personen dort liest. Dann prüfen ob im I-Kenntwort was drin steht, steht nix drin dann eine Random- Password vergeben. ich muss mal hier kramen wo ich das script dafür hatte, falls du sowas brauchst. "Randomize" in der Hilfe gibt dir bestimmt eine antwort.


    Wenn du ein PWD vergeben hast, dann generierst du einfach aus deinem Agenten eine mail. die du mit dem ermittelten PWD an den User schickst. + Dem link auf deine Datenbank. Danach das Personendokument mit dem PWD versorgen. und speichern. das sollte es gewesen sein.


    Dann ist es wohl am sichersten. !!

    hi,


    gibts vielleicht Profildokumente in der Datenbank, ich glaube die werden auch mitgezählt !! nur nirgends angezeigt.


    Und auch die "Ältern" -dokumente "könnten" noch da sein, aber vielleicht sind diese mit Leser Feldern gefüllt und wenn du in keinem Leserfeld drin stehst bzw. keine rolle dafür da ist, dann siehst du das auch nicht.


    Also das wäre echt das einzige was ich mir vorstellen könnte. Leserfelder sind tückisch !!

    ich weiss nicht ob dir das für die zukunft hilft, aber so kann man neue einträge auf dem rechten Rahmen erzeugen. kann man noch erweitern verändern aber das sieht man dann in der Hilfe.


    geht unter R6 obs auch schon unter R5 geht kann ich nicht sagen.


    Dim s As New NotesSession
    Dim db As NotesDatabase
    Dim outline As NotesOutline
    Dim oe As NotesOutlineEntry
    Dim existingOE As NotesOutlineEntry
    Set db = s.getdatabase("","Bookmark.nsf")
    Set outline = db.GetOutline("UserBookmarkOrder") 'da soll es rein
    Set existingOE = outline.GetLast 'hinter alles andere hängen.
    Set oe = outline.CreateEntry("Mailbox alt", existingOE, True, False) 'wie heißt das outline
    Call oe.SetAction({@Command( [FileOpenDatabase]; "SERVER" : "Mail\\DATEI.nsf" )}) 'welche Aktion soll ausgeführt werden
    oe.ImagesText = "LinkMailDoc" 'welche imageressource soll genutzt werden
    Call outline.AddEntry(oe)
    Call outline.Save()

    also ich hatte das Problem, das der keinen entsprechenden "FROM" Absender beim versenden der Mails im NAB finden konnte. Und ich bin der Meinung das wir dann im NAB den entsprechenden Servernamen nochmals im Owner des dokumentes abgelegt haben, das war aber auch ein R5.04 Server, vielleicht hat sich das Problem später erledigt.


    Jedenfalls nach dem der richtige Name dort stand, konnte der Server wieder mailen. !! Wir haben das dann noch auf drei anderen Servern gemacht und seit dem nie wieder PRobleme damit gehabt. !!


    Das ganze liegt jetzt aber auch schon wieder glaube ich knap zwei jahre zurück. Kann sein da sdie neuen Versionen da schon anders funktionieren.


    Bei uns sind die Agenten ja auch gelaufen, das hat man im LOG usw. gesehen, sie haben halt nurnix gemailt !! Kann also auch ein anderes Problem sein. erstmal sollte man ja feststellen ob die dinger überhaupt anlaufen. ggf. einfach in einen mal ein print einbauen um zu sehen ob er was tut !!

    mhm, das hört sich ja eigentlich nicht schwer an.


    Ich würde folgendes tun, auch für die Zukunft.


    Ansichten namen möglichst einfach, ggf. für solche DBLOOKUP geschichten verstekte Ansichtenmit kurzen namen wählen und nur mit inhalten die du dann weiternutzen kannst.


    z.B. (LUIDNR)


    1. Spalte sortiert mit dem Inhalt der als sozusagen schlüssel gilt, hier also die ID nummer rein. dahinter dann ein Feld wo deine antworten drin stehen. du hast geschrieben, das du mehrere Werte zurückbekommen willst, also würde ich das so machen, das die zweite Spalte die antworten enthält. Und das würde ich dann so machen.


    2. spalte (nummerische Werte mit @Text in Texteumwandeln)


    Feld1 + "~" + Feld2 + "~" + Feld3


    Dann würde ich in der Maske ein verstecktes / Berechnetes Feld machen, ggf. nur zur ansicht, weil du es ja sonst nicht brauchst.


    Dann mehrere andere Felder die sich auf dieses Feld beziehen um sich von dort die Werte zu holen. auch diese sind berechnet aber sichtbar. Dort trägst du dann ein.


    ERG_FELD = Alle Ergbenisse mit dem DBLOOKUP drin.


    AUSG_FELD1 = @WORD(ERG_FELD;"~";1);
    AUSG_FELD2 = @WORD(ERG_FELD;"~";2);


    So kannst du dann die Werte wieder aufteilen in deinem dokument.


    Ich hoffe das Hilft dir etwas !!

    hi,


    schau doch mal ins LOG ob da irgendwas zum Agenten steht. Ich hatte mal bei einem Kunden das Problem, das alle Serveragenten. wie z.B. der Outofoffice nix gemacht haben. Das Problem dort war, das im Serverdokument im Feld Owner (glaub ich) nicht der name des Servers stand. Dadurch konnten die Teile nicht mailen usw.


    Das würde ich mal prüfen.

    ich nehme mal an, das du über ein schaltfläche ein neues Dokument erzeugt hast, das dann in der Ansicht angezeigt werden soll oder ??


    wenn das so ist, dann rufe per compose das neue dokument auf.


    Im Postsave event des neuen dokumentes (oder im Close) machst du dann


    dim s as new notessession
    dim db as notesdatabase
    dim view as notesview


    set db = s.currentdatabase
    set view = db.getview("view")
    call view.refresh


    nun sollte es auch gehen. !!


    Oder habe ich dich falsch verstanden ??

    die Frage ist, was steht denn in dem Feld eine Zahl oder ein Text ??


    Bei text würde ich noch einen trim(feld) einsetzen sonst tricksen die dich mit einem Blank aus.


    @if(@trim(Feld)="";@fehler...;@OK...);


    das sollte wohl gehen !! vielleicht hast du dich beim Feldnamen verschrieben, dann gehts nicht !!

    Hi, vielleicht hilft dir das weiter.


    mal sehen ob ich das richtig verstanden habe.


    du hast eine Testumgebung (testdatenbank) und eine
    Prod umgebung. Diese Unterscheiden sich an irgend etwas.


    Probier es doch mal so.


    1. du legst dir eine ansicht an mit dem titel "PFAD"
    2. erstellst du eine Maske mit drei Feldern.
    1. Titel
    2. servername
    3. Pfadangabe
    3. Die ansicht ist sortiert nach dem titel.
    2 Spalte = Servername +"~" + Pfad


    so und nun gehts los.


    der Titel ist dafür da falls du auf mehrere datenbanken zugreifen willst. je DB die du ansprechen willst bekommt ein eigenes dokument. du kannst das ja noch verfeinern mit Ansichten namen usw.


    also Z.B. Titel = "Datenbank A"
    server = servername
    Pfad = Prodpfad\prod.nsf


    jetzt legst du hinter deine gliederung:


    DBDATEN := @DbLookup( "" : "NoCache" ; "" : "" ;"PFAD";"Datenbank A";2 );
    server := @word(DBDATEN ;"~"; 1);
    PFAD := @word(DBDATEN ;"~"; 2);


    und schwups sollte auch der Rest funktionieren.


    Wenn du jetzt eine neue DB implementieren willst, dann einfach diese im Pfad berücksichtigen und einen neuen gliederungs eintrag machen.


    Ich hab das hier bei uns noch weiter aufgebohrt. Wir haben eine centrale Datenbank hier, in der sind alle Pfade bzw. Datenbanken zu finden. In alle anwendungen ist dadurch nur noch EINE feste Pfadangabe nämlich auf diese Datenbank. Alle anderen holen Ihre Infos aus der PFADDB.


    Warum habe ich das gemacht, ganz einfach ich hatte 5 datenbanken die zu einem Paket gehören (Adresse, Ansprechpartner, Briefe .....) Dafür hatte ich auch 5 Schablonen.


    und ich hatte das Problem das mehrere unabhängige kopien dieser Datenbanken existieren mussten. Bereich A mit seinen Daten Bereich B mit anderen.


    Der einzige unterschied zwischen den anwendungen war bei mir der Datenbanktitel. und darüber habe ich das dann gesteuert. Das läuft jetzt so. Wenn ich in der Datenbank A bin (titel = DB A) und die Ansprechpanrter von A lesen will, dann gehe ich an die Profile Datenbank und sage "ICH DB A will wissen wo meine Ansprechpartner datenbank ist." Und zurück kam dann der richtige Pfad. Das gaze ist sau schnell und easy umzusetzen. vorallem kannst du das noch verfeinern wenn du auch Usernamen bzw. einen default user mit einbringst. aber das führt jetz eher zu weit.


    Ich hoffe das hilft dir etwas !! :sunclaus: