Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Selin am 19.07.06 - 13:45:16
-
Hallo zusammen,
wir haben für unsere Office Vorlagen eine User.ini Datei, die folgende Daten enthält:
uz= XYP
tel=111
email=abc@def.de
usw.
Im moment liegt sie noch nicht auf den Homelaufwerken, soll aber.
Nun meine Frage:
Wir würden gerne über eine eMail an alle einen Knopf in der Mail zuschicken, auf die die User draufklicken können und über eine Eingabeaufforderung im Hintergrund die Felder in der User.ini Datei ausfüllen können.
Ist sowas möglich?
Und wenn ja, wie?
Und, könnte man im Zuge der Eingabeaufforderung und Schreiben in die ini - Datei, gleich diese User.ini bei den Usern auf dem Homelaufwerk ablegen?
Bitte um Hife
Danke + Gruß
Selin
-
Das geht ganz einfach. Schau Dir dazu in der DesignerHelp mal unter "LotusScript Language" den Abschnitt "File Handling" an - dort ist alles incl. Beispiele beschrieben.
Bernhard
-
Hallo,
am einfachsten geht es über die Windows-API such mal in der Microsoft Knowledge-Base nach WritePrivateProfileString unter dem Produkt Visual Basic 6.
Rainer
-
Hallöchen,
danke für die Antworten.
Habe es wie folgt gelöst:
Die Eingaben lasse ich in einer Notes Maske machen statt über eine Inpubox und über eine Schaltfläche erstelle ich eine ini Datei und fülle sie mit den eingegebenen Werten.
Sub Click(Source As Button)
Dim var1, var2 As String
Open Environ$("HOMEDRIVE") & "\Datei.ini" For Output As #1
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = ws.CurrentDocument
var1= uidoc.FieldGetText("name")
Print #1, "name= " & var1
var2= uidoc.FieldGetText("abt")
Print #1, "abteilung= " & var2
Close #1
Call uidoc.Close
End Sub
Danke + Gruß
Selin
-
den Aufruf der Maske mache ich über einen Knopf in einer eMail
Kann ich denn auch über einen adneren Knopf z.B. "Ändern" auf das bereits vom User ausgefüllte Dokument zugreifen?
Könnte ich z.B. die DocID beim Speichern der Maske zurück in die Mail schreiben oder so ähnlich?
Habt ihr eine Idee?
Danke + Gruß
Selin
-
... das geht alles - schau mal in der Designer-Hilfe bezüglich schreiben und lesen von Dateien.
Um einen einzelenen Schlüssel in der ini-Datei zu ändern wäre allerdings die Win-Api besser geeignet => s.o. GetProfileString...
-
Hallöchen,
ich will eigentlich über die Mail auf das bereits erstellte Notes Dokument zugreifen und nicht auf die ini Datei.
Oder ist das der selbe Weg?
Grüsse
Selin
-
... vielleicht ist es heute auch zu heiß - aber ich habe dein Anliegen noch nicht ganz verstanden...
1. Du versendest eine Mail mit einem Button
2. Beim Drücken des Buttons wird "Datei.ini" mit bestimmten Informationen im Home-Verzeichnis generiert.
3. Du möchtest mit einem weiteren Button in der Mail auf ein erstelltes Notes-Dokument (???) zugreifen?
ich will eigentlich über die Mail auf das bereits erstellte Notes Dokument zugreifen und nicht auf die ini Datei.
Bisher ist lediglich die Mail ein NotesDocument. Die ini-Datei ist eine ganz normale Datei im File-System, aber kein Notes-Dokument - also hier steh ich nun auf dem Schlauch - willst du auf die ini-Datei zugreifen, oder was hast du genau vor? Von welchem Notes-Dokument sprichst du?
Toni
-
ok, sorry.
ich versuche es noch mal:
Ich habe in einer Notes Datenbank eine Maske.
In einer Mail habe ich einen Knopf "ini erstellen" und einen "ini bearbeiten"
Der Knopf "ini erstellen" öffnet die eine Maske:
@Command([Compose];"ServerONIK" : "DB.nsf"; "Maskenname")
Der User füllt die Maske aus und über einen Knopf "Abschicken" wird eine ini datei im Homeverzeichnis angelegt und die Werte in dem soeben angelegten Notes Dokument werden in die ini Datei geschrieben.
Hierzu der Code im vorigen Posting.
Nun meine Frage:
Ich möchte, dass der User die Möglichkeit hat über den anderen Knopf in seiner Mail "ini bearbeiten" auf sein bereits angelegtes Dokument in der Datenbank zugreift und ggf. die Daten ändert und wieder in die ini Datei schreibt.
Ist sowas möglich?
Ich hoffe, dass ich jetzt verständlicher mein Problem schildern konnte.
-
Da Du ja sicher im Dokument den Usernamen gespeichert hast, holst Du Dir das Dokument mit NotesView.GetDocumentByKey. Vor dem Speichern löschst Du die INI und baust sie wie in Button 1 neu auf.
Ob der User später allerdings die betreffende Mail noch wiederfindet ...
Bernhard
-
Wird das Dokument mit der die ini-Datei bearbeitet wird, überhaupt gespeichert?
Warum machst du es denn nicht mit einer Dialogbox. Beim Bearbeiten einer bestehenden ini-Datei liest du dir die Werte bei Aufruf der Dialogobx aus. Der User kann sie anpassen und beim Schließen des Dialoges schreibst du die Werte wieder in die ini-Datei.
Axel
-
im moment wird es zwar nicht gespeichert aber das kann man ja ändern.
das mit der Dialogbox hört sich gut an aber wie kann ich die Werte aus der ini in mein Dokument einlesen?
Danke + Grüsse
Selin
-
Du gehst genau den umgekehrten Weg wie beim Schreiben:
Open Environ$("HOMEDRIVE") & "\Datei.ini" For Input As #1
Das "As #1" ist aber ungeschickt und gefährlich - der Handle könnte ja schon belegt sein. Freefile ist Dein Freund.
Bernhard
-
ok, danke Bernhard.
Werde es mal versuchen.
Grüsse
Selin
-
Fehlermeldung: "Dialogbox kann nicht in diesem Kontext verwendet werden. Es muss ein Dokument ausgewählt werden"
Diese Meldung kommt beim Versuch über eine Schaltfläche in der Mail eine Dialogbox aufzurufen
Sub Click(Source As Button)
Dim WS As New NotesUIWorkspace
Dim doc As NotesDocument
Set doc = WS.CurrentDocument.Document
Call WS.Dialogbox("Maskenname", True, True, False, False, False, False, "Titel",doc )
End Sub
Was mache ich falsch???
-
Erstelle ein neues Dokument auf Basis Deiner Dialogbox-Maske und verwende dann dieses. Das gerade offene Doc wird ja nicht das sein, das Du für die Dialogbox brauchst, oder?
Bernhard
-
Wieso willst Du denn aus einem Dokument heraus das gleiche Dokument noch einmal in einer Dialogbox öffnen ? Zumal Du dann den Parameter "doc" auch einfach weglassen kannst.
Hast Du schonmal im Debugger geprüft, ob doc überhaupt existiert ?
-
Das Aufrufen eines neuen Dokumentes in einer Dialogbox kann z.B. so aussehen:
Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase
Dim docdlg As NotesDocument
Set db = ws.CurrentDatabase
Set docdlg = New NotesDocument(db)
docdlg.Form = "Maskenname"
'Hier können die Felder der Dialogobx gefüllt werden
If ws.Dialogbox("Maskenname", True, True, False, False, False, False, "Titel",docdlg) Then
'Hier stehen die Anweisungen, die ausgeführt werden sollen, wenn OK angeklickt wurde
Else
'Hier stehen die Anweisungen, die ausgeführt werden sollen, wenn Abbrechen angeklickt wurde
End If
End Sub
Axel
-
Hallo Zusammen,
nach einigen Gehversuchen nun hier der Letze, der aber leider auch nicht funktioniert ;-(
Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
Dim fileNum As Integer
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = ws.CurrentDocument
filePath=Environ$("HOMEDRIVE") & "\Datei.ini"
fileNumber = Freefile()
Open filePath For Input As fileNumber
Do Until Eof (fileNumber)
uidoc.FieldGetText( "name" )
Set name= filePath.name
uidoc.FieldGetText ("abt")
Set abt = filePath.abt
Loop
End If
End Sub
Wie kann ich denn die Werte aus der ini auslesen?
-
Hallo,
habe es wie folgt gelöst.
Kann sein, dass die Lösung nicht ganz sauber ist, aber es funktioniert.
Ich habe noch eine Frage.
ich habe Feldhinweise hinterlegt. Diese werden auch angezeigt, wenn ich die Maske aufrufe nicht aber wenn die Maske über die Dialogbox aufgerufen wird.
Geht es prinzipiell nicht oder kann ich das irgendwie einstellen?
danke+ gruß
Selin
Sub Postopen(Source As Notesuidocument)
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = ws.CurrentDocument
Dim text As String
Dim fileNum As Integer
Dim linecounter As Integer
fileNum = Freefile()
linecounter = 1
Open Environ$("HOMEDRIVE") & "\Datei.ini" For Input As fileNum
Do While Not Eof(fileNum)
Line Input #fileNum, text
Select Case linecounter
Case 2:
uz = Mid$( text, 4, 4)
Print name
Call source.FieldSetText("name", name)
Case 2:
abt = Mid$( text, 5, 7)
Print abt
Call source.FieldSetText("abt", abt)
'usw..
End Select
If linecounter = 12 Then
linecounter = 1
Else
linecounter = linecounter + 1
End If
Loop
Close fileNum
End Sub
-
Feldhinweise gehen in einer Dialogbox leider nicht.
Axel
-
Hi Axel,
schade.
Aber Danke für die Antwort.
Hab Spaß