Domino 9 und frühere Versionen > ND6: Entwicklung
Sortierung beim Export einer Ansicht
margli:
Hallo liebe Forum-User,
ich habe da ein kleines Problem. Ich habe ein Ansicht die wie folgt aufgebaut ist.
Datum ID Daten
2006 12345 1234~3242~32432~3242,23432~23432~4354~35353
Also in dem Feld Daten befinden sich mehrere Datensätze.....
Mit folgendem Code exportiere ich die Dateien....
--- Code: ---Sub Export2TP
Dim s As New NotesSession
Dim ws As New NotesUIWorkspace
Dim Zeitraum As NotesDocument
Dim vw As NotesView
Dim collection As NotesDocumentCollection
Dim PZNNummer As String
Dim Kundennummer As String
Dim menge As Double
Dim Rabatt As Double
Dim fileNum As Integer
Dim pzn As String
Dim id As String
Dim rabattpos As Double
Dim Zeilenz As Long
Dim Eingabe As String
Dim tempEingabe As String
Dim workspace As New NotesUIWorkspace
Dim starttime As New notesdatetime("")
Dim endtime As New notesdatetime("")
Dim differenceinseconds As Double
Dim objErrorContainer As ErrorContainer
Dim satz As rec
Dim vwEntryCount As Long
Dim wert As String
Dim wert1 As String
Dim delim As String
Dim daten As Variant
Dim objProgressBar As ProgressBar
Dim I As Integer
Dim K As Integer
%REM Debug-Modus
0 = False
1 = True
%END REM
Const DEBUG = 0
If DEBUG = 0 Then
On Error Goto err_handler
End If
Call starttime.setnow()
Eingabe = Inputbox$("Datum eingeben (Format: z.B. 200409) für Sept. 2004:","Export2TurboPlan - Auswahl des Zeitraums")
If Eingabe = "" Then
Msgbox "Achtung!" & Chr(13) & "Sie haben nichts eingegeben."
Exit Sub
End If
fileNum% = Freefile()
Open "c:\GKVRabatte.txt" For Output As fileNum%
satz.pzn = "pzn"
satz.id = "id"
satz.menge = "menge"
satz.rabatt = "rabatt"
Print #fileNum%, satz.pzn, satz.id, satz.menge, satz.rabatt
Set db = s.CurrentDatabase
Set vw = db.GetView("(LookupbyAbgabeDatum)")
Set vwEntryCollection = vw.GetAllEntriesByKey(Eingabe,True)
vwEntryCount = vwEntryCollection.Count
If vwEntryCount > 0 Then
Set objProgressBar = New ProgressBar(False)
objProgressBar.Title = "Export nach TurboPlan"
objProgressBar.Information = "Jetzt geht es los"
Set vwEntry = vwEntryCollection.GetFirstEntry
Do
Zeilenz = Zeilenz + 1
objProgressBar.Value = Cint((Zeilenz/vwEntryCount)*100)
delim = "~"
wert = Cstr(vwEntry.ColumnValues(1))
daten = vwEntry.ColumnValues(2)
If Isarray(daten) Then
For i = 0 To Ubound(daten)
satz.pzn = Strtoken(daten(i),delim,3)
satz.menge = Strtoken(daten(i),delim,4)
satz.rabatt = Strtoken(daten(i),delim,6) * (-1)
satz.rabatt = Format$(Strtoken(daten(i),delim,6),"##0.00") * (-1)
Print #fileNum%, satz.pzn, wert, satz.menge, satz.rabatt
Next
Else
satz.pzn = Strtoken(vwEntry.ColumnValues(2),delim,3)
satz.menge = Strtoken(vwEntry.ColumnValues(2),delim,4)
satz.rabatt = Strtoken(vwEntry.ColumnValues(2),delim,6) * (-1)
Print #fileNum%, satz.pzn, wert, satz.menge, satz.rabatt
End If
Set vwEntry = vwEntryCollection.GetNextEntry(vwEntry)
Loop Until (vwEntry Is Nothing)
End If
Close fileNum%
Call endtime.setnow()
differenceinseconds = starttime.timedifferencedouble(endtime) * (-1)
Print "Zeit in Sekunden " & differenceinseconds
Exit Sub
err_handler:
Set objErrorContainer = New ErrorContainer (Err, Erl, Error)
objErrorContainer.Procedure = "Export2TP"
Call ErrorProcessingUI(objErrorContainer, doc)
Resume err_resume
err_resume:
End Sub
--- Ende Code ---
Das klappt soweit ganz gut. Ich erhalte eine txt Datei die nach ID sortiert ist.
Die Vorgabe ist aber, dass die txt nach satz.pzn = Strtoken(daten(i),delim,3) sortiert wird. Dieser Wert befindet sich aber ja im Feld Daten wo sich immer mehrere Datensätze befinden. Ich weiß einfach nicht, wie ich das realisieren kann. Wäre nett wenn mir da jemand einen Tipp geben könnte und mir helfen würde.
Tode:
Entweder Du machst Dir eine Ansicht, die nach Deinem Kriterium sortiert ist (oder einfach eine neue erste Spalte in Deine Ansicht: mehrfachwerte getrennt anzeigen, @Explode( DeinWert ; "~" ))
Oder aber Du musst Dir zuerst alle Datensätze in ein Array zwischenspeichern, diese DANN sortieren und danach erst exportieren...
HTH
Tode
margli:
Hi.
Ich habe eine Spalte erstellt und auch das Häckchen gesetzt bei "mehrfahrwerte getrennt Anzeigen" Nun habe ich in der Spalte folgendes eingegeben.....
@Explode(Daten;"~";3)
Leider gibt er mir trotzdem in der Spalte den ersten Wert anstelle von dem dritten Wert im Datensatz. Was mach ich falsch?
Daten: Wert1~Wert2~Wert3~Wert4~Wert5,Wert1~Wert2~Wert3~Wert4....
LN4ever:
@Subset(@Subset(@Explode(Daten;"~");3);-1)
ist doch das, was du für die Spalte brauchst.
margli:
Hi. Vielen Dank für Deine Hilfe.
Es klappt zur Hälfte
Ich habe ja in der Ansicht eine Spalte Daten, diese Spalte ist ja mit mehreren Datensätzen gefüllt.
Datum ID Daten
2006 12345 1~2~3~4,1~2~30~4,1~2~300~4
2006 54321 1~2~3~4,1~2~30~4,1~2~300~4
Mit der Formel erstelle ich nun eine weitere Spalte in der Ansicht, damit die Tabelle nach dem 3. Wert sortiert wird. Also @Subset(@Subset(@Explode(Daten;"~");3);-1)
Nun bekomm ich in der Ansicht folgendes....
Datum Nr ID Daten
2006 3 12345 1~2~3~4
2006 3 54321 1~2~3~4
Er nimmt also nur den ersten Datensatz aus dem Feld "Daten". Die restlichen überspringt er und zeigt sie nicht in der Ansicht an.
ich brauch das aber so.....
Datum Nr ID Daten
2006 3 12345 1~2~3~4
2006 3 54321 1~2~3~4
2006 30 12345 1~2~30~4
2006 30 54321 1~2~30~4
2006 300 12345 1~2~300~4
2006 300 54321 1~2~300~4
Also für jeden Datensatz eine neue Zeile. Ich habe auch schon in jeder Spalte "mehrfachwerte getrennt anzeigen aktiviert".
Würde mich über eine Antwort freuen. Vielen Dank im Voraus.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln