Domino 9 und frühere Versionen > ND6: Entwicklung

Sortierung beim Export einer Ansicht

(1/2) > >>

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