Autor Thema: Feldwerte vergleichen  (Gelesen 2791 mal)

Offline Corty

  • Frischling
  • *
  • Beiträge: 15
Feldwerte vergleichen
« am: 05.01.06 - 23:53:27 »
hallo zusammen,

ich möchte zwei textfelder vergleichen und die unterschiede in einem dritten feld darstellen.
die textfelder enthalten jeweils 100 - 400 werte, getrennt durch ein komma. das vergleichen der felder ist kein problem, nur die unterschiede herauszufinden, schon.

hat jemand eine idee, wie ich die Differenzwerte via ls herausfiltern kann.
hoffe konnte mein problem noch verständlich und fehlerfrei formulieren. is ja auch schon spät  ;)

gruß
christian
« Letzte Änderung: 09.01.06 - 00:25:07 von Corty »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Feldwerte vergleichen
« Antwort #1 am: 06.01.06 - 00:05:07 »
Um mit Theodor Fontane zu kommen: "Das ist ein weites Feld, Louise." (Effi Briest).

Wo hast gibt es denn konkret Probleme? Folgende Fragen:
- Welche Lösung existiert bereits ("das vergleichen der felder ist kein problem, nur die unterschiede herauszufinden, schon. ("das vergleichen der felder ist kein problem, nur die unterschiede herauszufinden, schon.)
- Was heisst "durch Komma getrennt"? Ist das ein langer (skalarer) String oder eine Textliste (da wäre das Trennzeichen im FrontEnd ja vollkommen egal)
- Was heisst "gleich" oder "ungleich"? Was ist ein Unterschied? Unterschiedliche Anzahl Einträge? Spielt die Position eines gleich lautenden Eintrags in den Arrays eine Rolle? Ist"gleich" gleich "Gleich"? Gilt schon "enthalten"?

Mehr Input, mehr Output.

Bernhard

Offline Corty

  • Frischling
  • *
  • Beiträge: 15
Re: Feldwerte vergleichen
« Antwort #2 am: 06.01.06 - 00:47:55 »
hallo bernhard,

ich möchte eine textliste mit einer anderen vergleichen. mein script sieht bisher so aus.
dim s as new notessession,w as new notesuiworkspace
dim uidoc as notesuidocument
set uidoc =w.currentdocument
dim temp as string
dim temp1 as string
'einlesen der ersten feldwerte
temp = w.currentdocument.fieldgettext("InstalledApps")
temp = w.currentdocument.fieldgettext("neu_so")
'der vergleich
IF temp = temp1 then messagebox"keine neu software hinzugekommen",,"hinweis" else messagebox"softwarestand hat sich geändert",,"hinweis"
'/# an dieser stelle würde ich gerne in einem weiteren feld eine textliste erzeugen, die quasi die neu hinzugekommen bzw. gelöschten einträge anzeigt. die frage ist wie ?

ich hoffe der input hilft dir weiter, um mir ein klein wenig output zu geben ;-)

gruß
christian


Offline ghost

  • Aktives Mitglied
  • ***
  • Beiträge: 174
  • Geschlecht: Männlich
  • Notes ist gut!
Re: Feldwerte vergleichen
« Antwort #3 am: 06.01.06 - 09:01:38 »
Hallo Corty,

vielleicht hilft dir die Funktion ArrayGetIndex weiter. Damit kannst Du die Einzelwerte der einen Textliste überprüfen, ob diese in der Textliste 2 enthalten sind. Wenn die Funktion NULL zurückliefert, dann ist der Wert in Liste 2 nicht enthalten und Du kannst denn Wert zur Differenzliste hinzufügen.

Viele Grüße
ghost

Offline boemitsu

  • Aktives Mitglied
  • ***
  • Beiträge: 190
  • What goes around comes around
Re: Feldwerte vergleichen
« Antwort #4 am: 06.01.06 - 12:11:42 »
Hallo,

Meiner Meinung nach solltest mit Arrays arbeiten.

uidoc.fieldgettext bringt laut Designer Help

Return value
textValue$

String. The contents of the field you specified.

Usage
All values are displayed for a multi-value field. The values are separated by the multi-value separator as specified for display purposes in the field properties.

Um mit Arrays zu arbeiten brauchst du die Funktion split (=@explode)

ich möchte zwei textfelder vergleichen und die unterschiede in einem dritten feld darstellen.
die textfelder enthalten jeweils 100 - 400 werte, getrennt durch ein komma. das vergleichen der felder ist kein problem, nur die unterschiede herauszufinden, schon.

Ist es denn ein multi-value field ? falls ja, kannst du im Background Dokument mit backdoc.getitemvalue dir die Liste holen, ansonsten musst du wohl (im UI sowie im Backdoc) noch zuerst die Funktion split anwenden um einen Array zu bilden.


Danach nimmst du das erste Element der temp1 (neue Software) Liste und vergleichst, ob diese im Array temp enthalten ist (isElement), falls Return Value=0, nimmst du dies in einen separaten Array auf. Um über alle Elemente zu gehen, nimmst du am besten etwas wie:


dim myarray() as variant
dim temp as variant      'alte liste
dim temp1 as variant    'neue liste
dim y as integer

y=0

temp =  split(w.currentdocument.fieldgettext("InstalledApps"),",")
temp1= split(w.currentdocument.fieldgettext("neu_so"),",")



for i=0 to ubound(temp1)

if iselement(temp,temp1(i))=0 then
redim preserve myarray(y)
myarray(y)=temp1(i)
y=y+1
endif

next

msgbox join(myarray)


HTH,
Michael
« Letzte Änderung: 06.01.06 - 14:04:23 von boemitsu »
Gruss

Michael

Offline Corty

  • Frischling
  • *
  • Beiträge: 15
Re: Feldwerte vergleichen
« Antwort #5 am: 09.01.06 - 00:21:16 »
hallo an alle,

vielen dank für eure hilfe, @boemitsu du hattes recht mit dem array. hab mal wieder den wald vor lauter.... na ja.

ich hab es aber ein wenig anders gelöst.
anbei der code:
   
   Dim s As New notessession, w As New notesuiworkspace   
   Set uidoc = w.CurrentDocument
   Dim doc As notesdocument
   Dim temp As Variant   'Alte Liste
   Dim temp1 As Variant  'Neue Liste
   Dim inhalt As Variant 'Differenzliste
                'Lese alten Softwarestand
   temp =  Split(w.currentdocument.fieldgettext_("InstalledApps"),",")
                'Lese neuen Softwarestand
   temp1= Split(w.currentdocument.fieldgettext("neu_soft"),",")
                'Vergleiche
   inhalt =   Arrayreplace( temp,temp1,inhalt)
   Messagebox Join(Inhalt)
   
Gruß
Christian

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz