Autor Thema: Export DB  (Gelesen 1884 mal)

Offline HipSlu

  • Senior Mitglied
  • ****
  • Beiträge: 339
  • Geschlecht: Männlich
  • I am from Austria
    • konfabulieren.com
Export DB
« am: 01.06.04 - 17:49:27 »
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
« Letzte Änderung: 01.06.04 - 17:51:11 von HipSlu »
Notes ist ein Bananenprodukt - es reift beim Kunden
--------------------------------------

Server: 6.5.5 EN auf Sun Solaris 8 & W2K / W2k3
Clients: 6.5.4 DE auf W2K und XP (ca. 3000)

Addon: Group 8.6

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Export DB
« Antwort #1 am: 01.06.04 - 17:59:04 »
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

Offline HipSlu

  • Senior Mitglied
  • ****
  • Beiträge: 339
  • Geschlecht: Männlich
  • I am from Austria
    • konfabulieren.com
Re:Export DB
« Antwort #2 am: 02.06.04 - 07:30:06 »
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?
Notes ist ein Bananenprodukt - es reift beim Kunden
--------------------------------------

Server: 6.5.5 EN auf Sun Solaris 8 & W2K / W2k3
Clients: 6.5.4 DE auf W2K und XP (ca. 3000)

Addon: Group 8.6

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Export DB
« Antwort #3 am: 02.06.04 - 07:56:11 »
Was verstehst Du in diesem Zusammenhang unter "universell" ? Soll das nur in einer oder in wenigen Deiner DBs laufen ?

Offline HipSlu

  • Senior Mitglied
  • ****
  • Beiträge: 339
  • Geschlecht: Männlich
  • I am from Austria
    • konfabulieren.com
Re:Export DB
« Antwort #4 am: 02.06.04 - 08:18:42 »
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
Notes ist ein Bananenprodukt - es reift beim Kunden
--------------------------------------

Server: 6.5.5 EN auf Sun Solaris 8 & W2K / W2k3
Clients: 6.5.4 DE auf W2K und XP (ca. 3000)

Addon: Group 8.6

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Export DB
« Antwort #5 am: 02.06.04 - 08:28:16 »
Dann erstelle Dir doch eine Ansicht, 1. Spalte sortiert nach Form.

Im Export-Agent:
- Über Forms in DB loopen
- Zur jeder Form aus Ansicht mit view.GetAllDocumentsByKey (Form) eine collection bilden
-> und diese dann am Stück abarbeiten.

Wegen "universell": Was macht Dein Export-Agent eigentlich, wenn er auf ein rich text item trifft ? Und wie behandelt er Felder, die Mehrfachwerte enthalten ?

Und was macht Ihr vor allem mit den resultierenden CSV-Files ? Da ist doch keinerlei Struktur drin ...

HTH,
Bernhard

Offline HipSlu

  • Senior Mitglied
  • ****
  • Beiträge: 339
  • Geschlecht: Männlich
  • I am from Austria
    • konfabulieren.com
Re:Export DB
« Antwort #6 am: 02.06.04 - 08:37:58 »
:o jaja, da hast du recht. mehrfachwerte werden nicht berücksichtigt, das stimmt. bei richtext wird nehme ich an die zeile "on error goto lende" aktiv  ;D

aber richtext kann man (ich) ja sowieso nicht wirklich exportieren, wüsste nicht, wie ich das anstellen sollte.

zu deinen hinweisen: ja, das klingt gut - ich werds wieder versuchen; bin bis jetzt jedesmal bei collections irgendwie gescheitert.

was die dann mit den csv-files machen ist mir egentlich egal; so wollten sie es, so bekommen sie es (ich hab irgendwas von einem import nach access gehört)
« Letzte Änderung: 02.06.04 - 08:38:56 von HipSlu »
Notes ist ein Bananenprodukt - es reift beim Kunden
--------------------------------------

Server: 6.5.5 EN auf Sun Solaris 8 & W2K / W2k3
Clients: 6.5.4 DE auf W2K und XP (ca. 3000)

Addon: Group 8.6

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz