Autor Thema: wieder mal eine script frage  (Gelesen 4803 mal)

Offline sky-diver

  • Aktives Mitglied
  • ***
  • Beiträge: 138
  • Geschlecht: Männlich
  • belive it or ...leave it ..
wieder mal eine script frage
« am: 05.05.05 - 12:40:22 »
ist es möglich per button eine notes db zu suchen und diese zu löschen und danach eine neue repliak einer db anzulegen ?

für das anlegen ha ich es mal so veruscht ...leider ohne erfolg

Dim session As New NotesSession
Dim db As NotesDatabase
Set db = datenbankname
Call db.Replicate( "local" )

wäre toll wenn ich aber vorgängig noch per kill eine db löschen könnte ..

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: wieder mal eine script frage
« Antwort #1 am: 05.05.05 - 13:31:46 »
per kill eine db löschen könnte ..

Siehe Remove Methode der NotesDatabase - Klasse


Um eine Replik neu zu erstellen: siehe NotesDatabase.CreateReplica


Steht übrigens alles in der Designerhilfe, unter NotesDatabase.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline sky-diver

  • Aktives Mitglied
  • ***
  • Beiträge: 138
  • Geschlecht: Männlich
  • belive it or ...leave it ..
Re: wieder mal eine script frage
« Antwort #2 am: 05.05.05 - 13:51:19 »
danke für den tipp ..nun habe ich alle einzelen teile des codes ...

nun muss ich bastel ich poste einfach mal meinen code hier rein hoffe er passt ...
Zoel ist es eine db zu löschen auf dem lokalen notes books eine neue replik anzulegen und das ini anzupassen ...beim remove will ich auf die replik id zugreiffen ...klappt das so ?




Dim session As New NotesSession
Set notesDatabaseReplica = notesDatabase.CreateReplica( "", DC.nsf )
Call session.SetEnvironmentVar( "Names", "names.nsf, DC.nsf", True )
Dim db As New NotesDatabase( "", "repliID" )
Call db.Remove

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: wieder mal eine script frage
« Antwort #3 am: 05.05.05 - 14:21:46 »
Auch das steht in der Designer-Help (F1 im Designer !) unter NotesDatabase class .
Bitte dort mal *alles* lesen.

Zitat
To access an existing database when you know its server and replica ID, use the OpenByReplicaID method.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline sky-diver

  • Aktives Mitglied
  • ***
  • Beiträge: 138
  • Geschlecht: Männlich
  • belive it or ...leave it ..
Re: wieder mal eine script frage
« Antwort #4 am: 05.05.05 - 14:25:49 »
okee ich melde mich ...in 2 jahren wieder...ich werde *alles* lesen.

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: wieder mal eine script frage
« Antwort #5 am: 05.05.05 - 14:32:28 »
Du brauchst 2 Jahre um den Teil "NotesDatabase class" komplett zu lesen?
Sind ca. 2 Seiten Text.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline sky-diver

  • Aktives Mitglied
  • ***
  • Beiträge: 138
  • Geschlecht: Männlich
  • belive it or ...leave it ..
Re: wieder mal eine script frage
« Antwort #6 am: 05.05.05 - 14:39:09 »
nei das nicht habe gesagt ich lese *alles*

Spass bei seite, ich bin ja nicht zu faul aber hiert ist en vertändigungs problem.

Ich will die DC datenbank vom server runterrepliziern, und die eine per replik id löschen ..muss ich für das löschen die db zuerst öffnen ? Und sucht er nicht automatisch nach der DC.nsf auf dem server muss ich beide db zuerst öffnen ?
Habe den befehl gefunden aber wie kriege ich den dann rein gedückt ..bin mir ja nicht mal sicher ob dieser code richtig zusammengestellt ist..

Dim session As New NotesSession
Set notesDatabaseReplica = notesDatabase.CreateReplica( "", DC.nsf )
Call session.SetEnvironmentVar( "Names", "names.nsf, DC.nsf", True )
Dim db As New NotesDatabase( "", "repliID" )
Call db.Remove

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: wieder mal eine script frage
« Antwort #7 am: 05.05.05 - 15:07:48 »
ohnedasöffnenvondatenbankenkannmaninnotesfastnixmachendasgehtdassagenaber
auchdieentsprechendenfehlermeldungenundmansiehtesauchindenbeispieleninderhilfe
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: wieder mal eine script frage
« Antwort #8 am: 05.05.05 - 15:16:44 »
Bitte gib uns mehr Großbuchstaben in Deinen Postings, sonst fällt das Lesen sehr schwer.

Wie mehrfach erwähnt: steht eigentlich alles in der Designerhilfe inklusive Beispiele.

Code
	Const DB_REMOVE_SERVER$ = ""
	Const DB_REMOVE_REPID$ = "0123456789012345"	
	
	On Error Goto ErrorHandler
	
	Dim session As New NotesSession
	Dim dbToRemove As NotesDatabase
	Dim dbNewReplica As NotesDatabase
	Dim strTitleDbToRemove As String
	
	'Open Database by Replica ID
	Set dbToRemove = New NotesDatabase("", "")
	If Not dbToRemove.OpenByReplicaID(DB_REMOVE_SERVER, DB_REMOVE_REPID) Then 
		Error 1001, "Die zu löschende Datenbank kann nicht gefunden/geöffnet werden"
	End If
	strTitleDbToRemove = dbToRemove.Title
	
	'Ask
	If Not Msgbox ("Gewählte Datenbank: " & strTitleDbToRemove & Chr(10) _
	& "Diese Datenbank wirklich dauerhaft löschen?",1 + 32, "Sicher?") = 1 Then Exit Sub
	
	'Remove Database
	Call dbToRemove.Remove
	
	'Final msg
	Msgbox "Datenbank <" & strTitleDbToRemove & "> wurde gelöscht !", 64, ""
	
GoOut:
	Exit Sub
ErrorHandler:
	Select Case Err
	Case 4042:	'Database could not be deleted
		Msgbox "Datenbank konnte nicht gelöscht werden, ein möglicher Grund: Ist gerade von einem anderen User geöffnet",48
		Resume goOut		
	Case Else:
		Msgbox "Fehler " & Err & " - " & Error$ & Chr(10) _
		& "Fehler aufgetreten in Code-Zeile " & Erl, 48, "Laufzeitfehler"
		Resume GoOut	
	End Select

Den Code stelle ich Dir zur Verfügung, damit Du mal den grundsätzlichen Aufbau von so etwas siehst.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline sky-diver

  • Aktives Mitglied
  • ***
  • Beiträge: 138
  • Geschlecht: Männlich
  • belive it or ...leave it ..
Re: wieder mal eine script frage
« Antwort #9 am: 05.05.05 - 16:16:25 »
Danke, ja es staht alles in der Noteshilfe. Nur das Problem ist das zusammenhängen der einzelenen Scripts. Das steh ja nicht in der Hilfe. Ich versuche mal Dein Script zu Verstehen. Nun ist es für mich einfacher den Aufbau zu verstehen. Liege ich richtig, dass Du nur die Db gelöscht wird. Das Erstellen und den Eintrag in die Notes.ini werden noch nicht gemacht richtig?

Könnte ich nun weiterfahren mit meinen Script nach Deiner letzten Zeile.
Dim dbNewReplica hast du ja schon deklariert.

hoffeessindgnuggrossebuchstabenvorhanden


Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: wieder mal eine script frage
« Antwort #10 am: 05.05.05 - 17:18:10 »
Richtig, die DB wird nur gelöscht. Weiterfahren musst Du nicht nach dem Script, sondern vor der Zeile

GoOut:

- DB auf dem Server öffnen
- neue Replik local anlegen lassen
- notes.ini anpassen, falls nötig (sehe nicht, warum Du das willst??)
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline sky-diver

  • Aktives Mitglied
  • ***
  • Beiträge: 138
  • Geschlecht: Männlich
  • belive it or ...leave it ..
Re: wieder mal eine script frage
« Antwort #11 am: 05.05.05 - 18:41:38 »
Also ich hab mal etwas versucht ..kann das Funktionieren? Wie schon erwähnt ich bin da ein totaler Newbie.

Const DB_REMOVE_SERVER$ = ""
Const DB_DATABASE_SERVER$= "Mein Server"
Const DB_REMOVE_REPID$ = "0123456789012345"
Const DB_REPLICATE_REPID$ = "987654321"

On Error Goto ErrorHandler

Dim session As New NotesSession
Dim dbToRemove As NotesDatabase
Dim dbNewReplica As NotesDatabase
Dim strTitleDbToRemove As String

'Open Database by Replica ID
Set dbToRemove = New NotesDatabase("", "")
If Not dbToRemove.OpenByReplicaID(DB_REMOVE_SERVER, DB_REMOVE_REPID) Then
Error 1001, "Die zu löschende Datenbank kann nicht gefunden/geöffnet werden"
End If
strTitleDbToRemove = dbToRemove.Title

'Ask
If Not Msgbox ("Gewählte Datenbank: " & strTitleDbToRemove & Chr(10) _
& "Diese Datenbank wirklich dauerhaft löschen?",1 + 32, "Sicher?") = 1 Then Exit Sub

'Remove Database
Call dbToRemove.Remove

'Final msg
Msgbox "Datenbank <" & strTitleDbToRemove & "> wurde gelöscht !", 64, ""

'Open Db to replicate

Dim dbNewReplica As NotesDatabase
Set dbNewReplica = New NotesDatabase("DB_DATABASE_SERVER", "DB_REPLICATE_REPID")
dbNewReplica(DB_DATABASE_SERVER, DB_REPLICATE_REPID)
Set db = session.CurrentDatabase
Set replica = db.CreateReplica( DB_DATABASE_SERVER,DB_REPLICATE_REPID)

' Set new parameters in Notes.ini

Call session.SetEnvironmentVar( "Names", "names.nsf, DC.nsf", True )

GoOut:
Exit Sub
ErrorHandler:
Select Case Err
Case 4042: 'Database could not be deleted
Msgbox "Datenbank konnte nicht gelöscht werden, ein möglicher Grund: Ist gerade von einem anderen User geöffnet",48
Resume goOut
Case Else:
Msgbox "Fehler " & Err & " - " & Error$ & Chr(10) _
& "Fehler aufgetreten in Code-Zeile " & Erl, 48, "Laufzeitfehler"
Resume GoOut
End Selec

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: wieder mal eine script frage
« Antwort #12 am: 05.05.05 - 18:46:45 »
..kann das Funktionieren?

Warum testest Du das nicht selbst ???

Es gibt da "Tools":
 - Debugger
 - Option Declare
 - Compiler, der schwerwiegende Fehler erst gar nicht zulässt (und somit nicht kompiliert)

Erster Blick:
 - dbNewReplica ist doppelt gedimmt
 - Konstenten wie DB_DATABASE_SERVER stehen in Anführungszeichen


So, nun teste mal das Script. Benutze die Tools. Und poste genau, wo Du dann ggf. nicht mehr weiterkommst.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline sky-diver

  • Aktives Mitglied
  • ***
  • Beiträge: 138
  • Geschlecht: Männlich
  • belive it or ...leave it ..
Re: wieder mal eine script frage
« Antwort #13 am: 05.05.05 - 20:07:00 »
Danke für den Tipp, ich habe den code nochmals ein wenig angepasst.

Nur ist es so beim testen Springt er mir immer in den error handler.
Db nicht gefunden, kann ich auch einfach weitermachen wenn die Db nicht lokal vorhanden ist.
 Also ohne IF was kann ich Alternativ für ein Flag setzen Set  oder Call  geht nicht da Kompeliert er nicht. Hoffe ich krige das noch hin..

Sub Click(Source As Button)
   Const DB_REMOVE_SERVER$ = ""
   Const DB_DATABASE_SERVER$= "Mein Server"
   Const DB_REMOVE_REPID$ = "0123456789012345"
   Const DB_REPLICATE_REPID$ = "987654321"
   
   On Error Goto ErrorHandler
   
   Dim session As New NotesSession
   Dim dbToRemove As NotesDatabase
   Dim dbNewReplica As NotesDatabase
   Dim strTitleDbToRemove As String
   
'Open Database by Replica ID
   Set dbToRemove = New NotesDatabase("", "")
   If Not dbToRemove.OpenByReplicaID(DB_REMOVE_SERVER, DB_REMOVE_REPID) Then
   Error 1001, "Die zu löschende Datenbank kann nicht gefunden/geöffnet werden"
End If
strTitleDbToRemove = dbToRemove.Title

'Ask
If Not Msgbox ("Gewählte Datenbank: " & strTitleDbToRemove & Chr(10) _
& "Diese Datenbank wirklich dauerhaft löschen?",1 + 32, "Sicher?") = 1 Then Exit Sub

'Remove Database
Call dbToRemove.Remove

'Final msg
Msgbox "Datenbank <" & strTitleDbToRemove & "> wurde gelöscht !", 64, ""

'Open Db to replicate
Dim db As New NotesDatabase( "", "" )
If db.OpenByReplicaID( "MeinServer", "85255FA900747B84" ) Then
   Print( db.Title & " was successfully opened" )
Else
   Print( "Unable to open database" )
End If

Set db = session.CurrentDatabase
Set replica = db.CreateReplica( "", "" )


' Set new parameters in Notes.ini

Call session.SetEnvironmentVar( "Names", "names.nsf, DC.nsf", True )

GoOut:
Exit Sub
ErrorHandler:
Select Case Err
Case 4042: 'Database could not be deleted
   Msgbox "Datenbank konnte nicht gelöscht werden, ein möglicher Grund: Ist gerade von einem anderen User geöffnet",48
   Resume goOut
Case Else:
   Msgbox "Fehler " & Err & " - " & Error$ & Chr(10) _
   & "Fehler aufgetreten in Code-Zeile " & Erl, 48, "Laufzeitfehler"
   Resume GoOut
End Select
End Sub

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: wieder mal eine script frage
« Antwort #14 am: 05.05.05 - 21:22:09 »
Aehm, was für eine Meldung gibt der Error-Handler denn aus, wenn Du ihn durchläufst?
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline sky-diver

  • Aktives Mitglied
  • ***
  • Beiträge: 138
  • Geschlecht: Männlich
  • belive it or ...leave it ..
Re: wieder mal eine script frage
« Antwort #15 am: 05.05.05 - 22:11:22 »
Hi, also keine er macht genau das was er machen muss. Das Popup " Error 1001, "Die zu löschende Datenbank kann nicht gefunden/geöffnet werde"
Das ist ja richtig so. Aber eben besser wäre es ohne die IF Abfrage da ich nicht sicher bin wer die Db lokal hat oder nicht. Wenn die Db nicht vorhanden wäre müsste der Agent einfach weiterlaufen.

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: wieder mal eine script frage
« Antwort #16 am: 05.05.05 - 22:30:47 »
Versuchs mal damit:



Sub Click(Source As Button)
   Const DB_REMOVE_SERVER$ = ""
   Const DB_DATABASE_SERVER$= "Mein Server"
   Const DB_REMOVE_REPID$ = "0123456789012345"
   Const DB_REPLICATE_REPID$ = "987654321"
   
   On Error Goto ErrorHandler
   
   Dim session As New NotesSession
   Dim dbToRemove As NotesDatabase
   Dim dbNewReplica As NotesDatabase
   Dim strTitleDbToRemove As String
   
'Open Database by Replica ID
   Set dbToRemove = New NotesDatabase("", "")
   If dbToRemove.OpenByReplicaID(DB_REMOVE_SERVER, DB_REMOVE_REPID) Then
   
strTitleDbToRemove = dbToRemove.Title

'Ask
If Not Msgbox ("Gewählte Datenbank: " & strTitleDbToRemove & Chr(10) _
& "Diese Datenbank wirklich dauerhaft löschen?",1 + 32, "Sicher?") = 1 Then Exit Sub

'Remove Database
Call dbToRemove.Remove

'Final msg
Msgbox "Datenbank <" & strTitleDbToRemove & "> wurde gelöscht !", 64, ""

End If

'Open Db to replicate
Dim db As New NotesDatabase( "", "" )
If db.OpenByReplicaID( "MeinServer", "85255FA900747B84" ) Then
   Print( db.Title & " was successfully opened" )
Else
   Print( "Unable to open database" )
End If

Set db = session.CurrentDatabase
Set replica = db.CreateReplica( "", "" )


' Set new parameters in Notes.ini

Call session.SetEnvironmentVar( "Names", "names.nsf, DC.nsf", True )

GoOut:
Exit Sub
ErrorHandler:
Select Case Err
Case 4042: 'Database could not be deleted
   Msgbox "Datenbank konnte nicht gelöscht werden, ein möglicher Grund: Ist gerade von einem anderen User geöffnet",48
   Resume goOut
Case Else:
   Msgbox "Fehler " & Err & " - " & Error$ & Chr(10) _
   & "Fehler aufgetreten in Code-Zeile " & Erl, 48, "Laufzeitfehler"
   Resume GoOut
End Select
End Sub
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline sky-diver

  • Aktives Mitglied
  • ***
  • Beiträge: 138
  • Geschlecht: Männlich
  • belive it or ...leave it ..
Re: wieder mal eine script frage
« Antwort #17 am: 06.05.05 - 08:40:14 »
Soweit so gut ich habe nur noch ein kleines Problem,
beim Anlegen einer Replik ich habe mal versucht den script ein wenig anzupassen- leider ohne Erfolg. In der Hilfe werde ich auch nicht Fündig:

Original

''Open Db to replicate
Dim db As New NotesDatabase( "", "" )
If db.OpenByReplicaID( "MeinServer", "85255FA900747B84" ) Then
   Print( db.Title & " was successfully opened" )
Else
   Print( "Unable to open database" )
End If

Set db = session.CurrentDatabase
Set replica = db.CreateReplica( "", "" )

Die Db wird Sauber geöffnet, aber er Legt mir eine Replik meiner MailDb, da er diese als Current db erkennt.
Wie kann ich Notes nun beibringen das er die geöffnete Db (statuszeile) glich lokal anlegen soll?


Mein anpassung die Leider nicht Funktioniert

'Open Db to replicate
   Dim db As New NotesDatabase( "", "" )
   If db.OpenByReplicaID( "MeinServer", "C1256A3B002417C5" ) Then
      Print( db.Title & " was successfully opened" )   
      Set db = session.CurrentDatabase
      Set replica = db.CreateReplica( "", "C1256A3B002417C5" )
   Else
      Print( "Unable to open database" )
   End If

Glombi

  • Gast
Re: wieder mal eine script frage
« Antwort #18 am: 06.05.05 - 08:44:41 »
Sieh Dir mal die Hilfe an:

Set notesDatabaseReplica = notesDatabase.CreateReplica( newServer$, newDbFile$ )

Parameters
newServer$
String. The name of the server where the replica will reside. Use an empty string ("") to create a replica on the current computer.
newDbFile$
String. The file name of the replica.

also musst Du den Pfad und nicht die Replik-ID angeben.

Andreas

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: wieder mal eine script frage
« Antwort #19 am: 06.05.05 - 09:05:16 »
Da ist aber vor allem was anderes falsch.

Die Zeile

set db=session.currentdatabase


muss weg, da passiert der Fehler.

Das andere ist richtig, beim CreateReplica muss ein Filename angegeben werden, also zum Bleistift

Set replica = db.CreateReplica( "", db.filepath )

Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz