Autor Thema: Durchsuchen einer Ansicht nach zwei Feldern  (Gelesen 11042 mal)

Offline manuel

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Geschlecht: Männlich
  • el pueblo unido
Re: Durchsuchen einer Ansicht nach zwei Feldern
« Antwort #20 am: 16.07.02 - 11:29:31 »
Obwohl, ... , wenn du vorerst mit einer einfachen Listung der Dokumente in einerm simplem Textfeld zufrieden bist, könnte ich dir schon weiterhelfen. Es gibt aber eben dann nicht mehr die Möglichkeit gleich auf die Dokumente zuzugreifen, sondern müsste sich diese wieder in einer anderen Ansicht suchen.
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
V 5.0.2c | Windows 2000

Offline hmarco

  • Aktives Mitglied
  • ***
  • Beiträge: 114
  • Geschlecht: Männlich
  • Notes ist nicht nur für Notizen
Re: Durchsuchen einer Ansicht nach zwei Feldern
« Antwort #21 am: 16.07.02 - 11:35:42 »
Wieso nicht, das wäre erstmal schon etwas, was ich dem Chef zeigen könnte.
Paralell dazu kann ich die Geschichte mit den dynamischen Tabellen
weiter ausknobeln.

Mfg Marco
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
1 5.0.8 Server mit ~ 40 Benutzern
1 5.0.5 Server für Tests
Bald hoffentlich auch noch einen Notes 6 Server

Offline manuel

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Geschlecht: Männlich
  • el pueblo unido
Re: Durchsuchen einer Ansicht nach zwei Feldern
« Antwort #22 am: 16.07.02 - 12:32:45 »
Versuch mal dem folgenden Code. Er wird in einen Button eingefügt. Folgende Felder müssen in der Abfragemaske (ist kein Profildokument) vorhanden sein:

Produktbeschreibung
NeueVersion
Ergebnis (für die Liste die ausgegeben wird)

Ist vielleicht nicht die schönste Lösung, aber mal als vorläufiger Anhaltspunkt. Es kann sein, dass einiges nicht funktioniert, weil ich den Code nur getippt und nicht getesten habe. Also berichte wenn's nicht klappt. Ich hoffe ich habe ihn ausreichen kommentiert.


Sub Click(Source As Button)
     Dim ws As New NotesUIWorkspace
     Dim thisDoc As NotesUIDocument
     Set thisDoc = ws.CurrentDocument            'aktuelles Dokument (Abfragemaske), um Werte aus Feldern auszulesen
     
     Dim s As New NotesSession
     Dim db As NotesDatabase
     Dim view As NotesView
     Dim dc As NotesDocumentCollection            'DocumentCollection für alle Dokumente dieses Produkts und Vertragstyp "TREND"
     Dim doc As NotesDocument
     Dim keyArray(1) As String            'Schlüssel für die Suche
     Dim neueversion As Double, instversion As Double
     Dim ergebnis As String            'dieser String wird nachher in das Feld Ergebnis geschrieben
     
     Set db = s.CurrentDatabase
     'die Ansicht (ich hab sie derweil 'ProjektSuchen' genannt) muss folgerndermaßen aussehen
     '1. Spalte: Produkt, 2. Spalte: Vertragstyp, beide spalten sortiert (aufsteigend oder absteigend, egal)
     Set view = db.GetView("ProjektSuchen")
     
     keyArray(0) = thisDoc.FieldGetText("Produktbeschreibung")            'oder wie das Feld in der Abfragemaske auch immer heißen soll
     keyArray(1) = "TREND"
     
     'nun wird gesucht
     Set dc = view.GetAllDocumentsByKey(keyArray, True)      'der letzte Parameter gibt an ob exakt gesucht werden soll, das musst du entscheiden
     Set doc = dc.GetFirstDocument            'erstes Dokument der dc
     
     'nun beginnt die Schleife die alle Dokumente mit der Versionsnummer vergleicht
     While Not (doc Is Nothing)
           neueversion = thisDoc.Document.GetItemValue("NeueVersion")
           instversion = doc.GetItemValue("InstallierteVersion")
           
           'Vergleich der beiden Versionen
           If instversion < neueversion Then
                 'installierte Version ist kleiner, also werden Werte dieses Dokument dem String hinzugefügt
                 'ich bin davon ausgegangen, dass es in dem Dok. die Felder Kunde, Produkt, InstallierteVersion gibt
                 'Chr(9) ist ein Tabulator, Chr(10) eine Zeilenschaltung
                 ergebnis = ergebnis & doc.Kunde(0) & Chr(9) & doc.Produkt(0) & Chr(9) & doc.InstallierteVersion(0) & Chr(10)            
           End If
           
           Set doc = dc.GetNextDocument(doc)            'nächstes Dokument der dc
     Wend
     
     
     Call thisDoc.FieldSetText("Ergebnis", ergebnis)
     
End Sub



Mahlzeit
Manuel
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
V 5.0.2c | Windows 2000

Offline hmarco

  • Aktives Mitglied
  • ***
  • Beiträge: 114
  • Geschlecht: Männlich
  • Notes ist nicht nur für Notizen
Re: Durchsuchen einer Ansicht nach zwei Feldern
« Antwort #23 am: 18.07.02 - 10:51:07 »
Hallo mein Freund,

ich habe das Script soweit am laufen, dass er mir nur noch Type Mismatch anzeigt. Was für ursachen könnte das haben?

Mfg Marco

P.S.:Hier mein etwas Modifizierter Code:
Sub Click(Source As Button)
     Dim ws As New NotesUIWorkspace
     Dim thisDoc As NotesUIDocument
     Set thisDoc = ws.CurrentDocument  'aktuelles Dokument (Abfragemaske), um Werte aus Feldern auszulesen
     
     Dim s As New NotesSession
     Dim db As NotesDatabase
     Dim view As NotesView
     Dim dc As NotesDocumentCollection  'DocumentCollection für alle Dokumente dieses Produkts und Vertragstyp "TREND"
     Dim doc As NotesDocument
     Dim keyArray(1) As String  'Schlüssel für die Suche
     Dim neueversion As Double, instversion As Double
     Dim ergebnis As String  'dieser String wird nachher in das Feld Ergebnis geschrieben
     
     Set db = s.CurrentDatabase
'die Ansicht (ich hab sie derweil 'ProjektSuchen' genannt) muss folgerndermaßen aussehen
'1. Spalte: Produkt, 2. Spalte: Vertragstyp, beide spalten sortiert (aufsteigend oder absteigend, egal)
     Set view = db.GetView("Versionsabfrage")
     
     keyArray(0) = thisDoc.FieldGetText("Produktbeschreibung")  'oder wie das Feld in der Abfragemaske auch immer heißen soll
     keyArray(1) = "TREND"
     
'nun wird gesucht
     Set dc = view.GetAllDocumentsByKey(keyArray, True) 'der letzte Parameter gibt an ob exakt gesucht werden soll, das musst du entscheiden
     Set doc = dc.GetFirstDocument  'erstes Dokument der dc
     
'nun beginnt die Schleife die alle Dokumente mit der Versionsnummer vergleicht
     While Not (doc Is Nothing)
           neueversion = thisDoc.Document.GetItemValue("NeueVersion")
           instversion = doc.GetItemValue("InstallierteVersion")
           
 'Vergleich der beiden Versionen
           If instversion < neueversion Then
  'installierte Version ist kleiner, also werden Werte dieses Dokument dem String hinzugefügt
  'ich bin davon ausgegangen, dass es in dem Dok. die Felder Kunde, Produkt, InstallierteVersion gibt
  'Chr(9) ist ein Tabulator, Chr(10) eine Zeilenschaltung
                 ergebnis = ergebnis & doc.Lizenznehmer(0) & Chr(9) & doc.Produktbeschreibung(0) & Chr(9) & doc.InstallierteVersion(0) & Chr(10)  
           End If
           
           Set doc = dc.GetNextDocument(doc)  'nächstes Dokument der dc
     Wend
     
     
     Call thisDoc.FieldSetText("Ergebnis", ergebnis)
     
End Sub
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
1 5.0.8 Server mit ~ 40 Benutzern
1 5.0.5 Server für Tests
Bald hoffentlich auch noch einen Notes 6 Server

Offline manuel

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Geschlecht: Männlich
  • el pueblo unido
Re: Durchsuchen einer Ansicht nach zwei Feldern
« Antwort #24 am: 18.07.02 - 11:02:31 »
Starte bitte bevor das Script ausgeführt wird den Debugger (Datei/Extras/Debug LotusScript) und schau in welcher Zeile er den Fehler findet!
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
V 5.0.2c | Windows 2000

Offline hmarco

  • Aktives Mitglied
  • ***
  • Beiträge: 114
  • Geschlecht: Männlich
  • Notes ist nicht nur für Notizen
Re: Durchsuchen einer Ansicht nach zwei Feldern
« Antwort #25 am: 18.07.02 - 11:35:41 »
Hallo,

und wo zeigt er mir ein Fenster an, in dem ich
die Debug Informationen sehen kann?

Sorry habe leider noch nie damit gearbeitet.

Mfg Marco
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
1 5.0.8 Server mit ~ 40 Benutzern
1 5.0.5 Server für Tests
Bald hoffentlich auch noch einen Notes 6 Server

Offline manuel

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Geschlecht: Männlich
  • el pueblo unido
Re: Durchsuchen einer Ansicht nach zwei Feldern
« Antwort #26 am: 18.07.02 - 12:00:25 »
Bevor du deine Abfragemaske öffnest wählst du noch den Menüpunkt Datei->Extras->Debug LotusScript. Jetzt ist also 'n Haken dort. Notes öffnet jetzt automatisch wenn ein Script ausgeführt wird den Debugger.

Jetzt hast du folgende Möglichkeiten (die wichtigsten):

Fortfahren - er raselt das Script durch und stoppt bei einem Fehler
Schritt ausführen - Zeile für Zeile kannst du den Code nun durchführen. Das ist vor allem sehr praktisch wenn du während der Ausführung gewisse Variablenwerte überprüfen willst. Dafür kannst du ganz unten einen Rahmen hochziehen, in dem die nötigen Infos stehen.


Du klickst jetzt einfach mal Fortfahren. Bei dem Fehler bleibt er stehen und markiert diese Zeile. Dein Fehler wird warscheinlich dadurch verursacht, dass versucht wird einer Variable einen Wert zuzuweisen, der nicht ihren Typ entspricht.
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
V 5.0.2c | Windows 2000

Offline hmarco

  • Aktives Mitglied
  • ***
  • Beiträge: 114
  • Geschlecht: Männlich
  • Notes ist nicht nur für Notizen
Re: Durchsuchen einer Ansicht nach zwei Feldern
« Antwort #27 am: 18.07.02 - 13:58:58 »
Hallo,

hat funktioniert.  :o

In dieser Zeile zeigt er die Fehlermeldung:

neueversion = thisDoc.Document.GetItemValue("NeueVersion")

Mfg Marco
1 5.0.8 Server mit ~ 40 Benutzern
1 5.0.5 Server für Tests
Bald hoffentlich auch noch einen Notes 6 Server

Offline manuel

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Geschlecht: Männlich
  • el pueblo unido
Re: Durchsuchen einer Ansicht nach zwei Feldern
« Antwort #28 am: 18.07.02 - 14:05:10 »
Die Variable neueversion ist als Double deklariert, das Feld 'NeueVersion' ist warscheinlich ein Textfeld. Ordne diesem Feld den Typ 'Zahl' zu, dann müsste es klappen.

Noch ne Frage:
Wie schauen deine Versionsnummern eigentlich aus? Sind es ganz normale Zahlen (so wie 5,0) oder komplexe, wie 5.0.2?
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
V 5.0.2c | Windows 2000

Offline hmarco

  • Aktives Mitglied
  • ***
  • Beiträge: 114
  • Geschlecht: Männlich
  • Notes ist nicht nur für Notizen
Re: Durchsuchen einer Ansicht nach zwei Feldern
« Antwort #29 am: 18.07.02 - 14:20:22 »
Hallo,

ich habe schon beides ausprobiert,

NeueVersion macht egal als Text oder Zahl diesen
Fehler. ???

Mfg Marco
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
1 5.0.8 Server mit ~ 40 Benutzern
1 5.0.5 Server für Tests
Bald hoffentlich auch noch einen Notes 6 Server

Offline manuel

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Geschlecht: Männlich
  • el pueblo unido
Re: Durchsuchen einer Ansicht nach zwei Feldern
« Antwort #30 am: 19.07.02 - 08:12:33 »
Oops, Sorry Marco!

Da hab' nicht richtig aufgepasst! Die Funktion NotesDocument.GetItemValue gibt nämlich folgende Werte zurück:

  • Rich text      String. The text in the item, rendered into plain text
  • Text or text list (includes Names, Authors, and Readers item types)      Array of strings
  • Number or number list      Array of doubles
  • Date-time or range of date-time values      Array of variants of type Date



Und in unserem Fall haben wir ein Zahlenfeld, daher trifft der dritte Punkt auf uns zu. Wir bekommen also einen Array of doubles zurück, und diesen können wir nicht einfach so einer normalen Double-Variable zuweisen, ausser es ist ein Array. Also müssen wir nun gezielt auf das erste Element (also das "nullte") zugreifen. Jetzt kannst du dich zwischen zwei Arten entscheiden:


[font=Verdana Color=blue]neueversion = thisDoc.Document.GetItemValue("NeueVersion")(0)
instversion = doc.GetItemValue("InstallierteVersion")(0)

... oder ...

neueversion = thisDoc.Document.NeueVersion(0)
instversion = doc.InstallierteVersion(0)[/font]


Welche du nimmst, ist egal, es müsste aber nun klappen (hoffe ich). Wenn noch weitere Fehler auftreten, berichte!


Gruß
Manuel
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
V 5.0.2c | Windows 2000

Offline hmarco

  • Aktives Mitglied
  • ***
  • Beiträge: 114
  • Geschlecht: Männlich
  • Notes ist nicht nur für Notizen
Re: Durchsuchen einer Ansicht nach zwei Feldern
« Antwort #31 am: 22.07.02 - 14:07:34 »
Hallo,

ich habs grade zum laufen gebracht.

Vielen Dank  :-*

Die Versionsnummer werden dann in dieser Form
eingegeben: z.B. 5,02. Ich muss nur noch die entsprechenden Leute so erziehen, dass sie nicht irgendwelche komischen Nummern nehmen.

Mfg Marco

P.S.: Sorry habe grade meinen Führerschein bestanden und
durfte jetzt auch in einem Noteinsatz zum Kunden fahren.
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
1 5.0.8 Server mit ~ 40 Benutzern
1 5.0.5 Server für Tests
Bald hoffentlich auch noch einen Notes 6 Server

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz