Autor Thema: Replace Design  (Gelesen 1661 mal)

Offline Lotolt

  • Frischling
  • *
  • Beiträge: 10
  • Ich liebe dieses Forum!
Replace Design
« am: 22.08.03 - 12:56:14 »
Hi Leute,
habe mal wieder ein Problem.

Folgendes möchte ich realisieren.

Es soll eine Email an die User geschickt werden, die einen Button oder ähnliches enthält.
Durch Drücken des Buttons soll überprüft werden welche Notes Version der User hat.
Bei Version 4.?? soll eine Email mit Username an mich gesendet werden, bei Version 5 soll überprüft werden ob das derzeitige Design (Mail Datenbank) das neueste ist und wenn nicht soll dieses durch das aktuelle ersetzt werden.

Das alles soll ohne Usereingriff (bis auf den Button) ablaufen.

Vielen Dank

Lotolt
Man muss nicht alles wissen, man muss nur wissen wo es steht.

Driri

  • Gast
Re:Replace Design
« Antwort #1 am: 22.08.03 - 13:21:32 »
Hi,

das wirst du wohl nur mit Script hinbekommen. Anbei nen Script, mit dem sich die Notesversion ermitteln läßt und mit einer vorgegenen Version vergleicht.
Allerdings mußt du da noch nen bißchen was drumherum bauen, vor allem weil das Script etwas anders gedacht ist.



Need to know the version of Notes/Domino running on every workstation in your company automatically? Make this small change to the mail template, set up a mail-in database, and you'll be collecting information the next day, after redesign occurs that night on the server. Handy when it's upgrade time.

1. Set up a mail-in database (e.g., Mail-in name = VersionControl)
2. Place the code into the code section into the PostOpen event of the    Database script in the mail template
3. Modify the constant tversion$ so it contains your target release

When the user opens their mail file for the first time, it will search for $Version in their notes.ini file, and compare with the version they actually have. If they are different, which they will be the first time, it sends a message from the user to the mail in database with their actual release in the subject line. It then writes the information into the notes.ini file, so that the next time they open mail, it will not send another message. If they upgrade, however, they will send mail again with the new version.

CODE:
Const tversion$ = "Release 5.0.6a" 'put your target release here
Dim vlength%
Dim version$
vlength% = Len(tversion$)

Dim s As New notessession
version$ = s.getenvironmentstring("Version")

' only send mail and update notes.ini if
' it has not been sent before, or if version of notes has changed
If Left$(version$, vlength%) <> Left$(s.NotesVersion, vlength%) Then
Call s.Setenvironmentvar("Version", s.NotesVersion)
Dim db As notesdatabase
Dim d As notesdocument
Set db = s.currentdatabase
Set d = New notesdocument(db)
d.form = "Memo"
d.Subject = s.Notesversion
d.SendTo = "VersionControl"
Call d.send(False)

End If

Driri

  • Gast
Re:Replace Design
« Antwort #2 am: 22.08.03 - 13:23:53 »
Was mir gerade noch einfällt :

Einfacher geht das einfach über die Notessession.

z.B.

Dim s As New notessession
Dim version as String

version = s.Notesversion

Driri

  • Gast
Re:Replace Design
« Antwort #3 am: 22.08.03 - 13:32:58 »
Und ich hab gerade noch was ausgegraben :

This LotusScript function allows you to replace a database design programmatically. Just provide server and file name for the template and target
databases, and you're set.
This will work in Windows 9x, NT and 2000 only. (server or workstation).

Disclaimer: this function uses undocumented Notes APIs. There is no guarantee it will work properly on every scenario, nor in future Notes versions.
 
 
'ReplaceDesign:

Option Public
Option Declare

' Notes functions
Declare Function NSFDbOpen Lib "nnotes.dll" Alias "NSFDbOpen" ( Byval filename
As String, hdb As Long ) As Integer
Declare Function NSFDbClose Lib "nnotes.dll" Alias "NSFDbClose" ( Byval hdb As
Long ) As Integer
Declare Function DesignReplace Lib "nnotes.dll" Alias "DesignReplace" ( Byval
ht As Long, Byval hdb As Long, Byval dw1 As Long, Byval dw2 As Long, Byval dw3
As Long, Byval dw4 As Long ) As Integer

Sub ReplaceDesign( tpl As NotesDatabase, db As NotesDatabase )
Dim source As String
Dim target As String
Dim status As Integer
Dim ht As Long
Dim hdb As Long

' open source (template) database
If tpl.Server="" Then
source=tpl.FilePath
Else
source=tpl.Server & "!!" & tpl.FilePath
End If
status=NSFDbOpen( source, ht )
If status<>0 Then Error 1, "Failed to open " & source & " (error code=" &
status & ")"

' open target database
If db.Server="" Then
target=db.FilePath
Else
target=db.Server & "!!" & db.FilePath
End If
status=NSFDbOpen( target, hdb )
If status<>0 Then
NSFDbClose ht
Error 1, "Failed to open " & target & " (error code=" & status & ")"
End If

' perform the design replacement
status=DesignReplace( ht, hdb, 0, 1, 0, 0 )

NSFDbClose ht
NSFDbClose hdb

If status<>0 Then Error 1, "Error during replace design (error code=" & status
& ")"

End Sub

Offline Lotolt

  • Frischling
  • *
  • Beiträge: 10
  • Ich liebe dieses Forum!
Re:Replace Design
« Antwort #4 am: 22.08.03 - 15:28:57 »
Hi,
vielen Dank für deine Antwort :o.
Klappt einwandfrei, mit einer Ausnahme.
Nach Designupdate veschwindet der Template Name von dem sich die Datenbank nachts den Design update holt. (siehe Anhang)

Eine Idee wie man den Template Name per Script setzen kann??? ???

Kannst du mir vielleicht die Parameter von dem Code erklären??? ???
"DesignReplace( ht, hdb, 0, 1, 0, 0 )"

Vielen Dank im vorraus, komme meinem Ziel immer näher.

CU

Lotolt
« Letzte Änderung: 22.08.03 - 15:30:02 von Lotolt »
Man muss nicht alles wissen, man muss nur wissen wo es steht.

Glombi

  • Gast
Re:Replace Design
« Antwort #5 am: 22.08.03 - 16:20:14 »
Hi,
ich habe ein Script aus der Lotus Developer Domain, mit dem man den Templatenamen ändert.
Das Script führt ausserdem eine Gestaltungsaktualisierung durch.

Anpassen musst Du die Stellen

TemplateName = "MailR5" '* ==> new TemplateName
         
DBname = "test.nsf" '* ==> Database on which you would change the templatename

DBServer = "Server" '* ==> Servername on which the Template resids

ALLES OHNE GEWÄHR!

Andreas

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz