Domino 9 und frühere Versionen > ND8: Entwicklung

Dateiressource aus DB in Verzeichnis ablegen

<< < (2/3) > >>

Tode:
Du schreibst ziemlich wirr... Also erst mal: Was hat das ganze mit "Web" zu tun?
Dann: Natürlich "gelten" RichTextFelder auch im Web (was auch immer Du unter gelten verstehst).

Ich denke, Du skizzierst kurz, was Du eigentlich genau erreichen willst, dann kann man Dir auch passende Lösungsvorschläge machen...
So wird das nix...

MarkusL:
OK, dann mal der Reihe nach.

Im Moment entwickel ich eine DB, die bestimmte Daten der Mitarbeiter enthalten soll. Unter anderem auch die LAN-Rechte aus unserem Filesystem. Zum Auslesen dieser Rechte habe ich eine cmd geschrieben, die bestimmte Daten auf einem Fileserver zur Verfügung stellt.
Über einen Button in einer Maske starte ich die cmd und lese ich die Daten per LS aus und füge sie in ein Maskenfeld ein. Das klappt auch alles.

Meine Idee war jetzt, die cmd in der Notes-DB zu speichern, damit mein LS-Script die Datei temporär im Filesystem auf dem Rechner ablegt, startet, die Daten ausliest und wieder löscht. Somit wäre ich flexibler.

Hier kommen die Ideen von ascabg und Tode ins Spiel, dies über ein Rich-Text-Feld in einem weiteren (Profil-) Dokument zu lösen. Hier hatte ich einen Denkfehler, weil ich dachte, dass Rich-Text-Felder im web nicht funktionieren. Aber das waren die Rich-Text-Lite-Felder.
Warum web? Weil diese DB irgendwann auch über unser Intranet aufrufbar sein soll. Aber das kommt später.

Somit werde ich erstmal die Lösung für den Notes Client umsetzen und mir später über die web-Lösung Gedanken machen.

Ich kann erstmal weitermachen. Wenn von euch niemand mehr Fragen oder Anmerkungen zu diesem Thema hat, schließe ich diesen Thread morgen.

Danke.

Tode:
Also ein File- Attachment brauchst Du in Deinem Konstrukt eigentlich gar nicht... Du kannst den Text in einem Textfeld speichern (leicht editierbar) und dann einfach Deine CMD on the fly erstellen und dann ausführen bzw. per Shell() den Befehl ausführen ohne ihn vorher in ne Datei zu schreiben...

ABER: Das Ding wird im Browser niemals automatisch ablaufen, weil Du mit keiner Programmiersprache aus dem Browser raus ins filesystem des Clients greifen kannst: Du kannst also weder die cmd erstellen, noch die Ergebnisse der CMD auslesen... Das lässt das Security- Konzept der Browser gar nicht zu...

MarkusL:
Hi,

ich habe mein Problem gelöst.
Problemstellung war:
Im Profildokument wird in einem RichText-Feld eine cmd-Datei gespeichert, welche im Dateisystem bestimmte Operationen ausführen soll.
Erst wird die Datei per LS ins Dateisystem gespeichert, dann ausgeführt und anschließend gelöscht.
Meine ursprüngliche Aussage, dass die Datenbank webfähig sein soll, haben wir erstmal zurück gestellt.

Danke für die Hilfe. Diese Forum ist wirklich hilfreich.

Hier mein Code für alle, die wie ich suchen müssen:

Sub Click(Source As Button)
   Dim db As NotesDatabase
   Dim session As New NotesSession   
   Dim workspace As New NotesUIWorkspace
   Dim doc As NotesUIDocument      
   Dim profiledoc As NotesDocument      
   Dim fileNum As Integer   
   Dim textalt As String
   Dim text As String
   Dim nam As NotesName      
   Dim mynam As String   
   Dim rtitem As Variant   
   Const PATHCMD = "d:\test.cmd"   ' Hier den Pfad zur CMD eingeben
   Const PATH = "d:\test.txt"   ' Hier den Pfad zur Log-Datei eingeben
   Const FIELD1 = "Feld1"   'Hier das Feld in der Maske eingeben, in welchem der User steht
   Const FIELD2 = "Feld2"   'Hier das Feld in der Maske eingeben, welches mit den Daten aus der cmd befüllt werden soll
   Const FIELD3 = "Feld3"   'Hier das Feld in der Maske eingeben, in welches die Meldung geschrieben werden soll
   Dim user As String
   
   Set db = session.CurrentDatabase   
   Set doc = workspace.CurrentDocument
   Set profiledoc = db.GetProfileDocument( "Konfiguration")
   
   'Speichern der cmd aus dem Konfigurationsdokument in den Pfad PATHCMD
   Set rtitem =profiledoc.GetFirstItem( "Batchdatei" )
   Forall o In rtitem.EmbeddedObjects
      Call o.ExtractFile _
      ( PATHCMD )
   End Forall   
   
   'Programmaufruf und schreiben der Log-Datei:
   user = doc.FieldGetText( FIELD1 )
   Call ShellExecute(0, "open", PATHCMD, user , "", 1)
   'Messagebox "Warte auf die CMD... "
   Sleep 1
   
   'Hier folgt der Code, der die Daten aus dem Filesystem weiter verarbeitet.........
   # Danach geht es weiter

   'Eintrag im Status-Feld
   Call doc.FieldSetText(FIELD3,"Gruppen aktualisiert am " + Format(Now(), "Short Date") + Chr(13) & Chr(10)+" von " + mynam)
   
   'Löschen der cmd und der Log-Datei
   Kill PATHCMD
   Kill PATH
   
End Sub

marschul:
Na dann hoffen wir mal, dass

- das Profildokument auch ja das Feld "Batchdatei" enthält (dazu muss das Profil nat. auch vorh. sein),
- der Anhang enthalten ist,
- jeder Rechner ein Laufwerk D: mit Schreibrecht für den / die User hat,
- das Feld "Feld1" einen entsprechenden User enthält,
- die Ausführung der cmd unter 1 Sekunde dauert,
- die Daten zur Weiterverarbeitung im Filesystem auch stimmen,
- Löschrechte für PATHCMD & PATH existieren, ...

Will sagen: 0 Errorhandling bedeutet Stress, wenn mal eine der Bedingungen nicht zutreffen sollte ;)

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln