Domino 9 und frühere Versionen > ND6: Entwicklung
wie erstelle ich einen Counter in LS?
JanHoener:
schon wieder ich. :-)
ich habe mir jetzt vier Aktionen gebastelt, die jeweils eine Redundanzart aufdecken.
Mein Code für "doppelte Daten" lautet z.B.:
Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Set uiView = ws.CurrentView
Dim s As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim vec As NotesViewEntryCollection
Dim ve, oldVe As NotesViewEntry
Dim newDoc As NotesDocument
Dim oldDoc As NotesDocument
Set db = s.CurrentDatabase
Set view = db.GetView("Kontakte")
Set vec= view.AllEntries
'Ersten Eintrag im View holen
Set ve = vec.GetFirstEntry()
While Not ve Is Nothing
'Wert der ersten Spalte holen
oldValue = ve.ColumnValues(0)
oldValue1 = ve.ColumnValues(1)
oldValue2 = ve.ColumnValues(2)
oldValue3 = ve.ColumnValues(3)
oldValue4 = ve.ColumnValues(4)
oldValue5 = ve.ColumnValues(5)
oldValue6 = ve.ColumnValues(6)
oldValue7 = ve.ColumnValues(7)
oldValue8 = ve.ColumnValues(8)
'Nächsten eintrag im View holen
Set ve = vec.GetNextEntry(ve)
'Wenn es einen nächsten Eintrag gibt
If Not ve Is Nothing Then
newValue = ve.ColumnValues(0)
newValue1 = ve.ColumnValues(1)
newValue2 = ve.ColumnValues(2)
newValue3 = ve.ColumnValues(3)
newValue4 = ve.ColumnValues(4)
newValue5 = ve.ColumnValues(5)
newValue6 = ve.ColumnValues(6)
newValue7 = ve.ColumnValues(7)
newValue8 = ve.ColumnValues(8)
If newValue = oldValue And newValue1 = oldValue1 And newValue2 = oldValue2 And newValue3 = oldValue3 And newValue4 = oldValue4 And newValue5 = oldValue5 And newValue6 = oldValue6 And newValue7 = oldValue7 Then
Set oldDoc = vec.GetPrevEntry(ve).Document
Set newDoc = ve.Document
Dim tmpDoc As New NotesDocument(db)
Dim item As New NotesItem(tmpDoc,"DUIDS","")
Call item.AppendToTextList(oldDoc.UniversalID)
Call item.AppendToTextList(newDoc.UniversalID)
flag = ws.DialogBox("dialoge_compareTwoDocs_doppelt",True,True,False,False,False,False,"doppelte Daten",tmpDoc,True,False,True)
If flag Then
newDoc.Strasse=tmpDoc.f1
newDoc.PLZ=tmpDoc.PLZ
newDoc.Ort=tmpDoc.Ort
newDoc.Telefon=tmpDoc.Telefon
newDoc.Handy=tmpDoc.Handy
newDoc.WWW=tmpDoc.WWW
newDoc.Geburtstag=tmpDoc.Geburtstag
Call newDoc.Save(True,True)
Call oldDoc.Remove(True)
End If
End If
End If
Wend
Call ws.ViewRefresh
End Sub
Jetzt möchte ich eine neue Aktion basteln, die mir dann z.B. sagt: "In der Ansicht befinden sich x doppelte Dokumente".
Kann mir da jemand weiterhelfen?
Vielen Dank...
Tode:
1. "Wieder ein Problem" ist KEIN Aussagekräftiges Thema
2. Kaum jemand wird Lust haben, sich durch diesen ewig langen Code zu quälen.
Reduzier Ihn auf das notwendige, oder lass ihn ganz weg
3. Wenn Du diesen Code gebastelt hast... wo liegt dann das Problem anstelle / nach der Dialogbox einfach einen Zähler mitlaufen zu lassen, den Du dann über Messagebox am Ende ausgibst ?
Gruß
Tode
JanHoener:
hi, zwar keine nette Antwort, aber immerhin! :-\
Überschrift habe ich geändert, Script als Hilfe dringelassen.
Ich habe das Grundgerüst von einem Kumpel übernommen und verschiedene Sachen dazugepackt. Ich kenne mich nicht so riesig aus mit LS! Deswegen weiss ich auch nicht, wie man einen Counter hier zu packt. Zudem soll dieser Counter ja auch nicht hier laufen, sondern in einer anderen Aktion. Geht das überhaupt? Oder muss ich für die Aktion dann den kompletten Code übernehmen?
Vielen Dank...
DaWutz:
Hmm... Counter... wirklich Basics - und wenn ich das schon kenne, dann sind das wirklich unterste Basics...
in nen Agenten packen zum testen:
Option Public
Option Declare
Sub Initialize
Dim counter As Integer
counter = 0
Do While Counter < 10
counter = counter + 1
Messagebox(counter)
Loop
Messagebox "Fertig"
End Sub
oder, auf dein Beispiel gemünzt:
Oben irgendwo dein Beispiel das OPTION DECLARE, dann oben irgendwo den Counter "nullen" und in der Schleife den Counter jeweils um 1 erhöhen lassen... Zum Schluß den Counter ausgeben, und "Habe Fertig!"
PS: Designer-Hilfe: Do Loop, Do While....
Marinero Atlántico:
Jan,
ich würde das
1. in mehrere Funktionen verteilen.
2. Was ist mit Schleifen. Sowas wie
--- Code: ---newValue = ve.ColumnValues(0)
newValue1 = ve.ColumnValues(1)
newValue2 = ve.ColumnValues(2)
newValue3 = ve.ColumnValues(3)
newValue4 = ve.ColumnValues(4)
newValue5 = ve.ColumnValues(5)
newValue6 = ve.ColumnValues(6)
newValue7 = ve.ColumnValues(7)
newValue8 = ve.ColumnValues(Cool
--- Ende Code ---
lässt sich wirklich immer besser mit Schleifen und Arrays behandeln.
Axel
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln