Domino 9 und frühere Versionen > ND6: Entwicklung

Export DB

(1/2) > >>

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