Autor Thema: Problem bei export ins txt  (Gelesen 4335 mal)

Offline LisaS

  • Senior Mitglied
  • ****
  • Beiträge: 429
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
    • [WCM4U]
Problem bei export ins txt
« am: 25.08.03 - 09:01:52 »
Hallo,
ich wieder...

Also ich hatte vor geraumer Zeit hier mein Problem mit dem 64k Limit geschildert. Jetzt habe ich vermutlich die Lösung meines Problems gefunden, aber noch ein Paar Probleme bei den ich Eure Hilfe benötige.
Noch mal kurz erklärt worum es geht:
Es geht um ein Dukument in dem Qualifikationen der Mitarbeiter über eine Eingabemaske gespeichert werden.
Früher gab es ein Problem mit den Projektbeschreibungen, die unter umständen sehr viel Text enthalten und so schnell die 64k Grenze erreicht ist.
In meiner jetzigen Lösung schreibe ich die Daten in ein txt und hänge dieses in ein RT-Feld. Dieses txt läßt sich dann auch gut zum exportieren nach Word benutzen. Der Nachteil dieser Lösung ist daß, das Dokument immer gespeichert und geschlossen werden muß bevor ich den nächsten Datensatz erfassen kann.
Und da liegt auch schon mein erstes Problem:
Wie schaffe ich es das am Ende des Scriptes sich das uidok schließt und sich dann wieder öffnet?
Es öffnet sich zwar ein neues Fenster aber das alte schließt sich einfach nicht.
Vieleicht endeckt Ihr ja auch noch andere Formfehler, oder habt eine elegantere Lösung - ich bin ja noch am lernen ;D.
Hier das Script(Button im Dok.):

Sub Click(Source As Button)
   
   Dim workspace As New NotesUIWorkspace
   Set uidoc = workspace.CurrentDocument
   Set doc = uidoc.document
   
   WorkDir="c:\"
   fileName = "projekte1.txt"
   fileName2 = "projekte2.txt"
   
   ColData
   ColCheck
   Set rtitem = doc.GetFirstItem( "ObjCont" )
   If (rtitem.Type = RICHTEXT ) Then
     
  ' check for attachment in ObjCont item
      Set object = rtitem.GetEmbeddedObject( filename)
      If ( object Is Nothing ) Then
         NewCont
         MaskInit
         dspMask
         Attach
      Else
         Detach
         del
         AppendCont
         MaskInit
         dspMask
         Attach
      End If
      Call workspace.EditDocument( True , doc )
   End If
End Sub
----------------------------------------------------------------------
Sub ColData
   Dim workspace As New NotesUIWorkspace
   
   Set uidoc = workspace.CurrentDocument
   
     'Werte aus der Eingabemaske übernehmen
   start=uidoc.fieldgettext("Datum_Start")
   ende=uidoc.fieldgettext("Datum_Ende")
   kunde=uidoc.fieldgettext("BezeichnungKunde")
   branche=uidoc.fieldgettext("BezeichnungBranche")
   prjf=uidoc.fieldgettext("ProjektFunktion")
   prjt=uidoc.fieldgettext("ProjektTask")
   titel="Von|Bis|Kunde|Branche|Tätigkeit|Projektbeschreibung$"
End Sub
-----------------------------------------------------------------------------------
Sub ColCheck
            'Inhalte Prüfen
   If start="" Then
      start="..."
   End If
   If ende="" Then
      ende="..."
   End If
   If kunde="" Then
      kunde="..."
   End If
   If branche="" Then
      branche="..."
   End If
   If prjf="" Then
      prjf="..."
   End If
   If prjt="" Then
      prjt="..."
   End If
End Sub
------------------------------------------------------------
Sub NewCont
   writestr=start+"|"+ende+"|"+kunde+"|"+branche+"|"+prjf+"|"+prjt+"$"
   fileNum% = Freefile()
   Open WorkDir+fileName For Output As fileNum%
   Print #fileNum% ,writestr
   Close fileNum%
   Open WorkDir+fileName2 For Output As fileNum%
   Write #fileNum% ,start,ende,kunde,branche,prjf,prjt
   Close fileNum%
End Sub
------------------------------------------------------------------
Sub AppendCont
   writestr=start+"|"+ende+"|"+kunde+"|"+branche+"|"+prjf+"|"+prjt+"$"
   fileNum% = Freefile()
   Open WorkDir+filename For Append As fileNum%
   Print #fileNum% ,writestr
   Close fileNum%
   Open WorkDir+filename2 For Append As fileNum%
   Write #fileNum% ,start,ende,kunde,branche,prjf,prjt
   Close fileNum%
End Sub
-.-----------------------------------------------------------------
Sub MaskInit
   'Eingabemaske initialisieren  
   Dim workspace As New NotesUIWorkspace
   Set uidoc = workspace.CurrentDocument
   Call uidoc.fieldsettext("Datum_Start","")
   Call uidoc.fieldsettext("Datum_Ende","")
   Call uidoc.fieldsettext("BezeichnungKunde","")
   Call uidoc.fieldsettext("BezeichnungBranche","")
   Call uidoc.fieldsettext("ProjektFunktion","")
   Call uidoc.fieldsettext("ProjektTask","")
End Sub
--------------------------------------------------------------------
Sub Attach
   Dim workspace As New NotesUIWorkspace  
   Dim doc As NotesDocument
   Dim ni As Variant
   Dim no As Variant
   Dim no2 As Variant
   Dim cUNID As String
   
   Set uidoc = workspace.CurrentDocument
   Set doc = uidoc.document          
   
   Call uidoc.Save
   Call uidoc.Close
   InItem="ObjCont"
   Set ni = doc.GetFirstItem( InItem )
   Set no = ni.EmbedObject( EMBED_ATTACHMENT , "" ,  WorkDir & FileName )
   Set no2 = ni.EmbedObject( EMBED_ATTACHMENT , "" ,  WorkDir & FileName2 )
   Call doc.Save( True , False )
   doc.SaveOptions = "0"
   Call uidoc.Close  
End Sub
----------------------------------------------------------------------
Sub Detach
   Dim doc As NotesDocument
   Dim rtitem As Variant
   Dim fileCount As Integer
   Dim workspace As New NotesUIWorkspace
   Set uidoc = workspace.CurrentDocument
   Set doc = uidoc.document          
   Set rtitem = doc.GetFirstItem( "ObjCont" )
   If ( rtitem.Type = RICHTEXT ) Then
      Forall o In rtitem.EmbeddedObjects
         If ( o.Type = EMBED_ATTACHMENT ) Then
            fileCount = fileCount + 1
            wert=fileCount
            dest=WorkDir+"projekte"+wert+".txt"
            Call o.ExtractFile ( dest )
            Call doc.Save( True, True )
         End If
      End Forall
   End If
End Sub
----------------------------------------------------------------------

Sub del
   Dim workspace As New NotesUIWorkspace
   Set object = rtitem.GetEmbeddedObject( FileName )
   Call object.Remove
   Set object2 = rtitem.GetEmbeddedObject( FileName2 )
   Call object2.Remove
   Call doc.Save( True , False )
   doc.SaveOptions = "0"
   Call workspace.EditDocument( True , doc )
End Sub
--------------------------------------------------------------
Sub dspMask
   Dim uidoc As NotesUIDocument
   Dim workspace As New NotesUIWorkspace
   Dim dsp As dataRec
   
   Set uidoc = workspace.CurrentDocument
   Set doc = uidoc.document    
   'DSP-Felder initialisieren
   Call uidoc.FieldsetText("PR_1","")
   Call uidoc.FieldsetText("PR_2","")
   Call uidoc.FieldsetText("dspProjekte_3","")
   Call uidoc.FieldsetText("dspProjekte_4","")
   Call uidoc.FieldsetText("dspProjekte_5","")
   Open WorkDir+fileName2$ For Input As fileNum%
   While Not Eof(fileNum%) ' Read until end of file.
      Input #fileNum%, dsp.SDat, dsp.EDat, dsp.Firma, dsp.Branche, dsp.Funktion, dsp.Task
      
      Call uidoc.FieldAppendText("PR_1",dsp.SDat)
      Call uidoc.FieldAppendText("PR_1",";")
      Call uidoc.FieldAppendText("PR_2",dsp.EDat)
      Call uidoc.FieldAppendText("PR_2",";")
      Call uidoc.FieldAppendText("dspProjekte_3",dsp.Firma)
      Call uidoc.FieldAppendText("dspProjekte_3",";")
      Call uidoc.FieldAppendText("dspProjekte_4",dsp.Funktion)
      Call uidoc.FieldAppendText("dspProjekte_4",";")
      Call uidoc.FieldAppendText("dspProjekte_5",dsp.Task)
      Call uidoc.FieldAppendText("dspProjekte_5",";")
      Call doc.Save( True, True )
   Wend
End Sub
----------------------------------------------------------------------------


Ok, das wars ;)

Danke für Eure Hilfe
Hitcher
« Letzte Änderung: 25.08.03 - 09:03:28 von Hitcher »
Rechtschreibfehler sind beabsichtigt und dienen der allgemeinen Belustigung.
Server Windows , Domino 8.5.2, Workstation Win 7, Client 8.5.2, Designer 8.5.2 Browser IE 9, Firefox

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Problem bei export ins txt
« Antwort #1 am: 25.08.03 - 10:10:31 »
... wenn ich das auf die schnelle begriffen habe, dann benötigst du Eknorie's ReAttach...

... ansonsten habe ich auf meiner Homepage eine Funktion namens ReOpen - die öffnet das uidoc erneut - bei neuen Dokumenten eventuell noch die Form speichern...

ata
Grüßle Toni :)

Offline LisaS

  • Senior Mitglied
  • ****
  • Beiträge: 429
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
    • [WCM4U]
Re:Problem bei export ins txt
« Antwort #2 am: 25.08.03 - 12:31:55 »
Hallo ata,

Dein ReOpen scheint der richtige Weg zu sein, ich weiß bloß nicht wie ich es in mein Script am besten einbinde.  Du hast ja als Notesdokument docthis das müßt doch bei mir doc sein oder?
ich hab das Script wie folgt abgeändert:
Jetzt bekomme ich Folgenden Fehler:
"Notes Error:Der angegebene Befehl ist vom Arbeitsplatz nicht verfügbar"

Function ReOpen(doc As NotesDocument) As Integer
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim db As NotesDatabase
   Dim unid As String
   
   ReOpen = 0
   Set db = doc.ParentDatabase
   Call doc.Save(True , True)
   unid = doc.UniversalID
   doc.SaveOptions = "0" ' # ... Speicherabfrage vermeiden
   Set uidoc = ws.CurrentDocument
   Call uidoc.Close
   Set doc = db.GetDocumentByUNID(unid)
    Set uidoc = ws.EditDocument(True , doc) ' Hier kommt der Fehler
   Set doc = uidoc.Document
   If doc.HasItem("SaveOptions") Then  
            ' # ... das Feld SaveOptions wieder entfernen...
      doc.RemoveItem("SaveOptions")
      Call doc.Save( True , True )
   End If
   ReOpen = 1
   Print "Das Dokument wurde erneut geöffnet"
End Function

Ich führe die Funktion ReOpen Ganz am Ende meines Scripts durch.
Gib mir bitte ein Tip was ich noch tun könnte oder was ich falsch gemacht habe

Gruß
Hitcher
Rechtschreibfehler sind beabsichtigt und dienen der allgemeinen Belustigung.
Server Windows , Domino 8.5.2, Workstation Win 7, Client 8.5.2, Designer 8.5.2 Browser IE 9, Firefox

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Problem bei export ins txt
« Antwort #3 am: 25.08.03 - 13:09:17 »
... bist du im Editmode?

ata
Grüßle Toni :)

Offline LisaS

  • Senior Mitglied
  • ****
  • Beiträge: 429
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
    • [WCM4U]
Re:Problem bei export ins txt
« Antwort #4 am: 25.08.03 - 13:11:30 »
@ata:
....Ja

Hitcher
Rechtschreibfehler sind beabsichtigt und dienen der allgemeinen Belustigung.
Server Windows , Domino 8.5.2, Workstation Win 7, Client 8.5.2, Designer 8.5.2 Browser IE 9, Firefox

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Problem bei export ins txt
« Antwort #5 am: 25.08.03 - 15:09:34 »
... un du rufst den Code nicht über einen Agenten auf?

ata
Grüßle Toni :)

Offline LisaS

  • Senior Mitglied
  • ****
  • Beiträge: 429
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
    • [WCM4U]
Re:Problem bei export ins txt
« Antwort #6 am: 25.08.03 - 15:17:24 »
@ ata:

...ne, der Code wird über einen Button im geöffneten Dokument gestartet (Editmode) gestartet.

Hitcher
Rechtschreibfehler sind beabsichtigt und dienen der allgemeinen Belustigung.
Server Windows , Domino 8.5.2, Workstation Win 7, Client 8.5.2, Designer 8.5.2 Browser IE 9, Firefox

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Problem bei export ins txt
« Antwort #7 am: 25.08.03 - 15:32:27 »
... hast du im doc irgendwo Code, welcher das Dokument beim Öffnen nicht mehr in den EditMode lässt?...

... die Fehlermeldung ist dann typisch, wenn man versucht UI-Operationen im Lesemodus auszuführen, oder wenn man versucht in ein RichText-Feld per Formel zu schreiben und man ist in keinem RichText-Feld...

... ich habe die Funktion ohne Probleme in mehreren DB's im Einsatz - ohne Probleme  ???

... wenn du Zeit hast - kannst du mir eine reduzierte Version mit einem Beispieldoc zusenden, dann schau ich mal - Default als Designer genügt...

ata
Grüßle Toni :)

Offline LisaS

  • Senior Mitglied
  • ****
  • Beiträge: 429
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
    • [WCM4U]
Re:Problem bei export ins txt
« Antwort #8 am: 25.08.03 - 16:38:41 »
@ ata:
Hier ist nochmal der aktuelle Code als txt.
Vieleicht habe ich die Funktion falsch eingebunden?

Das mit der Test DB wird nicht gehen da die Teilmaske
Referenzen zu andern DBs hat.

Ich denke nicht, daß irgendwo der Edit Modus blockiert wird.

Gruß
Hitcher



« Letzte Änderung: 25.08.03 - 16:39:21 von Hitcher »
Rechtschreibfehler sind beabsichtigt und dienen der allgemeinen Belustigung.
Server Windows , Domino 8.5.2, Workstation Win 7, Client 8.5.2, Designer 8.5.2 Browser IE 9, Firefox

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Problem bei export ins txt
« Antwort #9 am: 25.08.03 - 16:49:05 »
... du arbeitest zuvor mit sehr vielen Frontend-Zuweisungen - ich würde die zunächst mal alle ins Backend übernehmen - läuft deutlich stabiler...

... du verwendest Konstanten von Notes - es ist nicht immer gewährleistet, daß sie funktionieren - entweder nochmals deklarieren oder die direkten Werte verwenden -

If rtItem.Type = 1 Then...

... das wär so auf die schenlle was ich gesehen habe - ich schau mir den Code später nochmals genauer an - es fehlt auch ein Funktionskopf, wenn ich das richtig gesehen habe...

ata
Grüßle Toni :)

Offline LisaS

  • Senior Mitglied
  • ****
  • Beiträge: 429
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
    • [WCM4U]
Re:Problem bei export ins txt
« Antwort #10 am: 26.08.03 - 14:53:20 »
@ata:

Danke erstmal für Deine Mühe!
Was meinst Du den mit Funktionskopf und an welcher Stelle?
Wenn ich Backend benutzen soll, dann weis ich aber nicht wie ich die Werte aus der Eingabe-Maske holen und dann wieder löschen soll. Dann müßte ich nach der Eingabe in die Eingabemaske als erstes das uidoc speichern und dann alles im Backend weitermachen und auf keinen Fall zwischendurch das uidoc nochmal speichern, oder?
Man da hab ich was angefangen, aber ich glaube wenns mal läuft hat es sich gelohnt......

Gruß
Hitcher
Rechtschreibfehler sind beabsichtigt und dienen der allgemeinen Belustigung.
Server Windows , Domino 8.5.2, Workstation Win 7, Client 8.5.2, Designer 8.5.2 Browser IE 9, Firefox

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Problem bei export ins txt
« Antwort #11 am: 26.08.03 - 17:42:43 »
... der Funktionskopf fehlt nach
Code
Sub AppendCont
   writestr=start+"|"+ende+"|"+kunde+"|"+branche+"|"+prjf+"|"+prjt+"$"
   fileNum% = Freefile()
   Open WorkDir+filename For Append As fileNum%
   Print #fileNum% ,writestr
   Close fileNum%
   Open WorkDir+filename2 For Append As fileNum%
   Write #fileNum% ,start,ende,kunde,branche,prjf,prjt
   Close fileNum%
End Sub
---------------------------------------------------------------------------
Dim workspace As New NotesUIWorkspace
... wie du sehen kannst geht es hier direkt mit "Dim workspace..." weiter - eigentlich fehlt hier der Kopf der Routine...

... einen Wert über das Backend einlesen...

sValue = Doc.FeldName(0) ' # in String-Variable

... oder

vValue = Doc.FeldName ' # in Variant-Variable
If IsArray( vValue ) Then
    sValue = Cstr(vValue(0)) ' # der erste Wert im Feld als String
End If

... es gibt natürlich noch viele Wege nach Rom...

ata


Grüßle Toni :)

Offline LisaS

  • Senior Mitglied
  • ****
  • Beiträge: 429
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
    • [WCM4U]
Re:Problem bei export ins txt
« Antwort #12 am: 27.08.03 - 15:31:57 »
@ata:

Jetzt klappt es ;D.

Der Fehler kommt jetzt nur noch wenn ich den Debugger mitlaufen lasse ???, keine Ahnung wieso.
Ich habe jetzt fast alles ins Backend übertragen, ich glaube auch das, das besser ist.
Für alle die es interessiert hänge ich das aktuelle Script an.

Danke für die Unterstützung

Gruß
Hitcher

ps.: Da ich ja kein LS-Profi bin, bin ich für jeden Hinweis, wie man Dinge im Script eleganter bzw. professioneller machen könnte, dankbar.
« Letzte Änderung: 27.08.03 - 15:36:37 von Hitcher »
Rechtschreibfehler sind beabsichtigt und dienen der allgemeinen Belustigung.
Server Windows , Domino 8.5.2, Workstation Win 7, Client 8.5.2, Designer 8.5.2 Browser IE 9, Firefox

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Problem bei export ins txt
« Antwort #13 am: 27.08.03 - 20:30:42 »
... ein kleiner Tip zur Namensgebung deiner Variablen. Du verwendest zum Beispiel "doc" als globale Variable - dann würde ich die Variable "gDoc" nennen - damit wird auch für einen Aussenstehenden klar, daß es sich um eine globale Variable handelt...

... entsprechend vergebe ich auch den DatenTyp mit in der Variablen

Dim gsValue As String => globale Variable als String
Dim giCount As Integer => globale Variable als Integer

... damit wird der Code besser erfassbar und man achtet eher auf eine Daten-Konvertierung - falls erforderlich...

... ich versuche für jede deklarierte Variable eine Zeile zu verwenden, auch wenn das einen Rattenschwanz an Deklarationen nach sich zieht - aber der Code wird schneller erfassbar...

ata
Grüßle Toni :)

Offline LisaS

  • Senior Mitglied
  • ****
  • Beiträge: 429
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
    • [WCM4U]
Re:Problem bei export ins txt
« Antwort #14 am: 28.08.03 - 10:13:19 »
@ata:

....Du hast recht, auf diese Weise wird ein Code wirklich übersichtlicher.
Das lohn sich auf jeden Fall das nach zu bessern, zumal ich ja noch einige
Progammier-Aufgaben rund um diese txt-Files zu erledigen habe.
Da fallen mir bestimmt noch viele, viele Fragen ein ;)....


Gruß
Hitcher
Rechtschreibfehler sind beabsichtigt und dienen der allgemeinen Belustigung.
Server Windows , Domino 8.5.2, Workstation Win 7, Client 8.5.2, Designer 8.5.2 Browser IE 9, Firefox

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz