Autor Thema: Dateiressource aus DB in Verzeichnis ablegen  (Gelesen 5152 mal)

Offline MarkusL

  • Aktives Mitglied
  • ***
  • Beiträge: 124
  • Geschlecht: Männlich
Dateiressource aus DB in Verzeichnis ablegen
« am: 07.09.11 - 16:31:56 »
Hallo zusammen,

kann ich eine Dateiressource aus einer DB per Script im Dateisystem ablegen?
Die Datei ist eine cmd und soll anschließend ausgeführt werden. (Das Script für die Ausführung klappt schon.)

Leider finde ich hierzu nirgendwo eine Aussage oder einen Ansatz.
« Letzte Änderung: 26.09.11 - 15:24:55 von MarkusL »
Version Lotus Notes / Domino: 8.5.3
Server: 1 Cluster, 1 weiterer Server
Anzahl Benutzer: ca. 230

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Dateiressource aus DB in Verzeichnis ablegen
« Antwort #1 am: 07.09.11 - 17:49:49 »
Hallo,

Muss es denn unbedingt eine Resource sein?

Pack die CMD-Datei in ein "normales" Dokument (Profil-Dokument), extrahiere sie aus dem Dokument und fuehre sie anschliessend aus.


Andreas

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Dateiressource aus DB in Verzeichnis ablegen
« Antwort #2 am: 07.09.11 - 17:54:18 »
Eigentlich hätte ich gesagt über die NotesNoteCollection- Klasse ans Dokument kommen, und dann ganz normal das Attachment detachen... Aber leider hat die Klasse kein "SelectFileRessources", ist also wohl zu neu... Und auch ich würde das ganze nicht im Design hinterlegen, sondern in nem Konfig- Dokument. Im Design ist das doch viel zu unflexibel...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline MarkusL

  • Aktives Mitglied
  • ***
  • Beiträge: 124
  • Geschlecht: Männlich
Re: Dateiressource aus DB in Verzeichnis ablegen
« Antwort #3 am: 08.09.11 - 11:11:17 »
Danke für die Infos.
Ich dachte, man könnte die Ressourcen dann auch als normaler User in der nsf entpacken und nutzen.

Eine (Profil-)Dokument wäre eine Lösung. Allerdings müsste die cmd dann in ein RichTextFeld einfügen und die gelten leider nicht fürs web. (Oder liege ich da falsch?)

Dann bleibe ich bei meiner bisherigen Lösung und hinterlege die Datei an einem festen Punkt im Dateisystem.
Version Lotus Notes / Domino: 8.5.3
Server: 1 Cluster, 1 weiterer Server
Anzahl Benutzer: ca. 230

Offline marschul

  • Senior Mitglied
  • ****
  • Beiträge: 280
  • Geschlecht: Männlich
Re: Dateiressource aus DB in Verzeichnis ablegen
« Antwort #4 am: 08.09.11 - 12:24:20 »
...und die gelten leider nicht fürs web....

Interessantes Detail, das mit dem Web. Im ersten Posting schreibst Du etwas über Script-Ausführung klappt schonmal. Da siehe ich jetzt mögliche Widersprüche (falls LotusScript, oder war JavaScript gemeint???). Kannst Du bitte genauer erläutern, was da (in welchem Client) passieren soll?
Gruß
Marco

Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß. (Sokrates)
Keiner ist unnütz, er kann immer noch als schlechtes Beispiel dienen. (unbekannt)

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Dateiressource aus DB in Verzeichnis ablegen
« Antwort #5 am: 08.09.11 - 12:42:56 »
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...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline MarkusL

  • Aktives Mitglied
  • ***
  • Beiträge: 124
  • Geschlecht: Männlich
Re: Dateiressource aus DB in Verzeichnis ablegen
« Antwort #6 am: 08.09.11 - 14:01:10 »
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.
Version Lotus Notes / Domino: 8.5.3
Server: 1 Cluster, 1 weiterer Server
Anzahl Benutzer: ca. 230

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Dateiressource aus DB in Verzeichnis ablegen
« Antwort #7 am: 08.09.11 - 14:10:36 »
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...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline MarkusL

  • Aktives Mitglied
  • ***
  • Beiträge: 124
  • Geschlecht: Männlich
Re: Dateiressource aus DB in Verzeichnis ablegen
« Antwort #8 am: 26.09.11 - 15:24:41 »
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
Version Lotus Notes / Domino: 8.5.3
Server: 1 Cluster, 1 weiterer Server
Anzahl Benutzer: ca. 230

Offline marschul

  • Senior Mitglied
  • ****
  • Beiträge: 280
  • Geschlecht: Männlich
Re: Dateiressource aus DB in Verzeichnis ablegen
« Antwort #9 am: 26.09.11 - 15:47:25 »
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 ;)
Gruß
Marco

Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß. (Sokrates)
Keiner ist unnütz, er kann immer noch als schlechtes Beispiel dienen. (unbekannt)

Offline ata

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Dateiressource aus DB in Verzeichnis ablegen
« Antwort #10 am: 27.09.11 - 07:33:41 »
... ich halte den Weg für viel zu aufwändig - einfacher Text in einem Textfeld, wie es Torsten schon vorgeschlagen hat - oder falls der Code fix sogar in einer Library als berechnenbare Variable gehalten - hätte genügt. Das erspart das Lösen eines Attachments ins Filesystem - die Überprüfung ob das Profildokument auch wirklich existiert (... und das ist nicht immer gesagt, daß Profildokumente wirklich vorhanden sind...).

Für das Ausführen des cmd benötigt man auch keine Datei, die dann gestartet wird, das geht über LS auch direkt.

Über Webzugriff wird es dann etwas komplexer, aber auch das sollte machbar sein...

Ansonsten hat Marco richtig erwähnt, daß ein Fehlerhandling unerläßlich ist

Toni
Grüßle Toni :)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz