Autor Thema: Sortierung beim Export einer Ansicht  (Gelesen 1651 mal)

Offline margli

  • Junior Mitglied
  • **
  • Beiträge: 88
Sortierung beim Export einer Ansicht
« am: 08.06.06 - 16:55:33 »
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

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.

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Sortierung beim Export einer Ansicht
« Antwort #1 am: 08.06.06 - 17:03:01 »
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
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline margli

  • Junior Mitglied
  • **
  • Beiträge: 88
Re: Sortierung beim Export einer Ansicht
« Antwort #2 am: 12.06.06 - 08:02:24 »
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....

« Letzte Änderung: 12.06.06 - 08:08:58 von margli »

Offline LN4ever

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 505
  • Geschlecht: Männlich
Re: Sortierung beim Export einer Ansicht
« Antwort #3 am: 12.06.06 - 11:43:04 »
@Subset(@Subset(@Explode(Daten;"~");3);-1)

ist doch das, was du für die Spalte brauchst.
Situs vilate in isse tabernit.

Offline margli

  • Junior Mitglied
  • **
  • Beiträge: 88
Re: Sortierung beim Export einer Ansicht
« Antwort #4 am: 12.06.06 - 12:17:05 »
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.

« Letzte Änderung: 12.06.06 - 12:25:25 von margli »

Offline LN4ever

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 505
  • Geschlecht: Männlich
Re: Sortierung beim Export einer Ansicht
« Antwort #5 am: 12.06.06 - 13:04:13 »
Wie wäre es denn mit

@Word(@Explode(Daten;",");"~";3)

Situs vilate in isse tabernit.

Offline margli

  • Junior Mitglied
  • **
  • Beiträge: 88
Re: Sortierung beim Export einer Ansicht
« Antwort #6 am: 14.06.06 - 11:57:51 »
@LN4ever

Hat so leider auch nicht geklappt.

Wurde jetzt mittels verketteter Liste via LS umgesetzt.

Trotzdem vielen Dank für die Hilfe.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz