Domino 9 und frühere Versionen > ND8: Entwicklung
Dateiressource aus DB in Verzeichnis ablegen
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