Domino 9 und frühere Versionen > ND6: Entwicklung
Export DB
HipSlu:
hallo,
hier ein kleines script welches ich eben mit meinen miesen kenntnissen erstellt habe - es soll einen view durchgehen und dort für jede vorkommende maske ein text file erstellen, und und in dieses alle vorkommenden felder exportieren
funktioniert auch, es ist nur extra langsam - daher meine frage: was kann man da besser machen? bin für jeden input sehr dankbar
'Config
Const ExpServer = "............."
Const ExpDB = "........."
Const ExpView = "Export"
Const ExpPath = "C:\TEMP\"
Sub Initialize
On Error Goto Lende
Dim db As New notesdatabase("","")
Dim OutputString As String
Dim Satz As String
Dim fileNum As Integer
Dim ExportFile As String
Dim ExportPfad As String
Dim count As Long
Dim lauf As Integer
Set db = New NotesDatabase(ExpServer, ExpDB)
If db.IsOpen Then
Print( "Succesfully opened " & db.Title )
Else
Print( "Unable to open database" )
End If
Set view = db.GetView(ExpView)
If (view Is Nothing) Then
Messagebox "Keine Ansicht" & ExpView & "gefunden", 16, "Error"
Exit Sub
End If
ExportPfad = ExpPath
outputString$ = "Line " & Str(Erl) & " / Error" & Str(Err) & ": " & Error$
On Error Goto Lende
Forall form In db.Forms
'Files erstellen und Header schreiben
Exportfile$ = ExportPfad + form.name + ".txt"
ExpFields = form.Fields
Satz = ""
For dummy = 0 To Ubound(ExpFields)
Satz = Satz & ExpFields(dummy) & ";"
Next
fileNum% = Freefile()
Open Exportfile$ For Output As fileNum%
Print #fileNum%, Satz
Close fileNum%
End Forall
count = 0
Set doc = view.GetFirstDocument
'Lesen alle Dokumente
While Not ( doc Is Nothing )
Print "bearbeite dokument mit form " & doc.form(0) & " (" & Str(count) & ")"
Set next_doc = view.GetNextDocument(doc )
Set notesForm = Db.GetForm( doc.form(0) )
Satz=""
Forall field In notesform.fields
Set item = doc.GetFirstItem( field )
If item Is Nothing Then
Satz=Satz & ";"
Else
Satz=Satz & Cstr(item.Values(0)) & ";"
End If
End Forall
Exportfile$ = ExportPfad + doc.form(0) + ".txt"
fileNum2% = Freefile()
Open Exportfile$ For Append As fileNum2%
Print #fileNum2%, Satz
Close fileNum2%
count = count + 1
Set doc = next_doc
Wend
Exit Sub
Lende:
outputString$ = "Line " & Str(Erl) & " / Error" & Str(Err) & ": " & Error$
Msgbox outputstring$
Close fileNum2%
Exit Sub
End Sub
koehlerbv:
Nach erstem kurzen Durchblick: Eine enorme Bremse ist das dauernde Öffnen und Schliessen Deines Export-Files. Mach das nur einmal auf, bevor Du durch die Ansicht loopst und schliesse es nach Abschluss der Schleife.
Schau' mal, was das schon bringt.
HTH,
Bernhard
HipSlu:
da scheitert es an meinem wissen; da ich für jede maske ein file erstelle (und es universell sein soll, ich also verher nicht weis welche und wieviele masken es sind) kann ich es nur so lösen, immer zu schließen und neu zu öffnen; wie würds besser gehen?
koehlerbv:
Was verstehst Du in diesem Zusammenhang unter "universell" ? Soll das nur in einer oder in wenigen Deiner DBs laufen ?
HipSlu:
also ich habe eine db namen "agents", in der ich diverse agents zum täglichen import/export (backend) laufen habe. dieser agent ist aus einer anforderung heraus entstanden, eine db komplett nach csv zu exportieren. und da man nie weiß, ob ich das nochmals brauche, versuche ich es immer soweit es geht (und ichs kann) universell zu halten.... also: momentan nur eine db, aber später vielleicht mal auch andere
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln