Autor Thema: DB-Auswahldialog mit Rückgabewert  (Gelesen 3179 mal)

Offline Jérôme

  • Aktives Mitglied
  • ***
  • Beiträge: 108
  • Geschlecht: Männlich
  • Teigwaren heißen Teigwaren weil sie mal Teig waren
    • jerome-gamez.de
DB-Auswahldialog mit Rückgabewert
« am: 14.08.02 - 15:28:30 »
Hallihallo!

Ich habe folgendes Problem:

Ich brauche einen DB-Auswahldialog, genauso wie wenn ich eine Datenbank mit STRG + O öffnen will, nur dass dann nicht die ausgewählte DB geöffnet, sondern ein DB-Objekt zurückgeliefert wird, aus dem ich dann Replik-ID, Server etc. rausziehen kann.

Ich habe das schon in einer Anwendung gesehen, dass das mit genau diesem Dialog geht, und ich möchte das auch unbedingt mit diesem durchführen.

Zum Befehl @PostedCommand([FileOpenDatabase]) bin ich schon gekommen, der liefert aber nichts zurück, sondern öffnet nur die Datenbank.

ich wäre froh, wenn das jemand wüsste, ich suche da nämlich schon den ganzen Tag danach :)
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: DB-Auswahldialog mit Rückgabewert
« Antwort #1 am: 14.08.02 - 16:50:46 »
Hi,

versuch's mal damit:

file := @Prompt([LOCALBROWSE]; "Wählen Sie eine zu öffnende Datenbank"; "1");

Ist allerdings wahrscheinlich nicht ganz was du suchst.
Vielleicht hilft es dir ja doch weiter.

Axel

« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Jérôme

  • Aktives Mitglied
  • ***
  • Beiträge: 108
  • Geschlecht: Männlich
  • Teigwaren heißen Teigwaren weil sie mal Teig waren
    • jerome-gamez.de
Re: DB-Auswahldialog mit Rückgabewert
« Antwort #2 am: 15.08.02 - 09:17:42 »
Auf diesen Weg bin ich vor ein paar Minuten auch gekommen ;) aber leider kann ich damit nichts anfangen. So komme ich auf Betriebssystemebene an die Datenbank ran, aber nicht unter Notes.

Es könnte ja erstens sein, dass der Benutzer gar keinen Zugriff auf das (Netz-) Laufwerk hat, auf dem die Datenbank liegt...

Aber trotzdem danke für den Vorschlag - vielleicht hat ja noch jemand eine Idee...
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline Jérôme

  • Aktives Mitglied
  • ***
  • Beiträge: 108
  • Geschlecht: Männlich
  • Teigwaren heißen Teigwaren weil sie mal Teig waren
    • jerome-gamez.de
Re: DB-Auswahldialog mit Rückgabewert
« Antwort #3 am: 15.08.02 - 09:52:50 »
Nach intensiver Suche in den LDD-Foren bin ich auf folgende undokumentierte (was auch sonst) Lösungen gestoßen (ich kopier's der Einfachheit halber mal nur rein):

Zitat
In formula language:

@Prompt( [ChooseDatabase];"";"";"";"");

result:

(0) - server name
(1) - file name (path)
(2) - Database title

In LotusScript:

Prompt method

Note This method is new with Release 5.

Defined in
NotesUIWorkspace

Syntax
variant = notesUIWorkspace.Prompt( type%, title$, prompt$ [, default ] [, values ] )

but as type use 13.

Both are not documented so use it with caution...
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline Meff

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.095
  • Geschlecht: Männlich
  • Das Denken der Zukunft muß Kriege unmöglich machen
    • apparet id etiam caeco
Re: DB-Auswahldialog mit Rückgabewert
« Antwort #4 am: 15.08.02 - 11:00:48 »
Hi Jerome,

warum baust Du Dir nicht einfach einen Array mit allen Datenbanken (schau mal nach 'dbdirectory' im Script) auf, welchen Du dann Dir anzeigen lässt. Die Auswahl kannst Du Dir dann in einen String übergeben lassen, auf welchen Du dann wiederum einen 'Database.Open' bzw. 'set NotesDatabase = new NotesDatabase('Server', 'dbfilename').

Meff ;)
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
"Zwei Dinge sind zu unserer Arbeit nötig: Unermüdliche Ausdauer und die Bereitschaft, etwas, in das man viel Zeit und Arbeit gesteckt hat, wieder wegzuwerfen."
Albert Einstein

Glombi

  • Gast
Re: DB-Auswahldialog mit Rückgabewert
« Antwort #5 am: 15.08.02 - 14:45:59 »
@Jerome:

Wie bekomme ich denn den Wert für die gewählte Datenbanken zurück - in LotusScript.
Der Variant ist bei mir immer leer  ???

Gruß
Andreas
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline Meff

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.095
  • Geschlecht: Männlich
  • Das Denken der Zukunft muß Kriege unmöglich machen
    • apparet id etiam caeco
Re: DB-Auswahldialog mit Rückgabewert
« Antwort #6 am: 15.08.02 - 14:51:06 »
Hi Andreas,

kannst Du Deinen Script mal hier posten, damit man sehen kann was Du gemacht hast...

Meff ;)
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
"Zwei Dinge sind zu unserer Arbeit nötig: Unermüdliche Ausdauer und die Bereitschaft, etwas, in das man viel Zeit und Arbeit gesteckt hat, wieder wegzuwerfen."
Albert Einstein

Offline Jérôme

  • Aktives Mitglied
  • ***
  • Beiträge: 108
  • Geschlecht: Männlich
  • Teigwaren heißen Teigwaren weil sie mal Teig waren
    • jerome-gamez.de
Re: DB-Auswahldialog mit Rückgabewert
« Antwort #7 am: 15.08.02 - 15:00:55 »
Zitat
(...)warum baust Du Dir nicht einfach einen Array mit allen Datenbanken (...) auf (...)
Hi Meff!

Klar, das wäre auch gegangen, aber über den "Datenbank öffnen"-dialog ist es doch viel komfortabler und es sieht auch besser aus. ;)

@Andreas: Ich hab es auch grad mal mit LotusScript ausprobiert und bekomme auch nur den leeren String - mit Formelsprache geht's aber...

Ich schreibe meinen Code mal hierher:

Zitat

     Dim ws As New NotesUIWorkspace
     Dim var As Variant
     Dim i As Integer
     
     var = ws.Prompt( 13, "", "", "", "" )
     
     For i = 0 To Ubound(var)
           Msgbox var(i)      
     Next
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline Meff

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.095
  • Geschlecht: Männlich
  • Das Denken der Zukunft muß Kriege unmöglich machen
    • apparet id etiam caeco
Re: DB-Auswahldialog mit Rückgabewert
« Antwort #8 am: 15.08.02 - 15:09:59 »
Dim uiWs As New NotesUIWorkspace
Dim frage As Variant, start As Variant
Dim posCounter As Integer, negCounter As Integer, errCounter As Integer, counter As Integer
Dim fragenAuswahl(2) As String, dbListe() as string
     
start = Messagebox("Diese Aktion kan mehrere Minuten dauern. Während dieser Zeit können Sie nicht Ihren Client nutzen. Möchten Sie wirklich fortfahren ?", 4 + 32, "Hinweis")
     
If start = 7 Then Exit Sub
     
     'Zuweisung der Variablen
     Set session = New NotesSession
     Set curDb = session.CurrentDatabase
     Set dbDir = New NotesDbDirectory(curDb.Server)      
     
     'Jetzt wollen wir doch mal schauen, was wir scannen sollen.
     fragenAuswahl(0) = "Datenbanken"
     fragenAuswahl(1) = "Templates"
     fragenAuswahl(2) = "beides"
     
     frage = uiWs.Prompt(PROMPT_OKCANCELLIST, "Bitte wählen", "Bitte wählen Sie aus der Liste, ob Sie Datenbanken oder Templates durchsuchen möchten.", " ", fragenAuswahl())
     
     If frage = "Datenbanken" Then
           Set checkDb = dbDir.GetFirstDatabase(DATABASE)
     Elseif frage = "Templates" Then
           Set checkDb = dbDir.GetFirstDatabase(TEMPLATE)
     Elseif frage = "beides" Then
           Set checkDb = dbDir.GetFirstDatabase(TEMPLATE_CANDIDATE)
     End If

While Not checkDb Is Nothing
           If Not checkDb.IsOpen = True Then
                 Call checkDb.Open(curDb.Server, checkDb.FilePath)
           End If

if counter = 0 then
redim dbListe(counter) as string
dbListe(counter) = checkDb.Titel + "~" + checkDb.Filepath
else
redim preserve dbListe(counter) as string
dbListe(counter) = checkDb.Titel + "~" + checkDb.Filepath
end if

Set checkDb = dbDir.GetNextDatabase 'Nächste Datenbank im Directory
counter = counter + 1
Wend

So kannst Du Dir den Array aufbauen, welche Du später in einer Liste anzeigen lässt um Dir eine davon auszuwählen. Den Wert, welche Du hier zurückbekommst kannst Du dann verwenden um Dir die Datenbank mittels NotesDatabase.Open(Servername$, DB Filepath$) zu holen und alle Properties auszulesen.

Meff ;)
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
"Zwei Dinge sind zu unserer Arbeit nötig: Unermüdliche Ausdauer und die Bereitschaft, etwas, in das man viel Zeit und Arbeit gesteckt hat, wieder wegzuwerfen."
Albert Einstein

Glombi

  • Gast
Re: DB-Auswahldialog mit Rückgabewert
« Antwort #9 am: 15.08.02 - 15:56:34 »
@Jerome:
Ich habe noch mal bei LDD nachgesehen: Also die Script Methode liefert nur den Servernamen zurück. Da ich das erstmal mit einer lokalen DB ausprobiert hatte, kam "" zurück.

Mit Deiner Formel bekomme ich "Type mismatch"  ???

Wie kann man das mit der @Formelsprache machen ???

Gruß
Andreas
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline Jérôme

  • Aktives Mitglied
  • ***
  • Beiträge: 108
  • Geschlecht: Männlich
  • Teigwaren heißen Teigwaren weil sie mal Teig waren
    • jerome-gamez.de
Re: DB-Auswahldialog mit Rückgabewert
« Antwort #10 am: 15.08.02 - 16:03:51 »
Ich hab das in einer Maske eingesetzt. In der Maske ist ein Feld "DatabaseInfo", daneben habe ich einen Button gesetzt, in dessen Click-Ereignis ich folgende Zeile eingetragen habe:

FIELD DatabaseInfo := @Prompt( [ChooseDatabase];"";"";"";""); @All;


Das müsste eigentlich funktionieren (habe das grad aus dem Kopf geschrieben, ohne es zu testen)
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Glombi

  • Gast
Re: DB-Auswahldialog mit Rückgabewert
« Antwort #11 am: 15.08.02 - 16:26:46 »
Alles klar, funktioniert  :)

Das kann man immer mal brauchen !

Danke
Andreas
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: DB-Auswahldialog mit Rückgabewert
« Antwort #12 am: 15.08.02 - 16:34:31 »
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz