Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: moprheusfgh am 18.09.09 - 10:42:03

Titel: Dateipfad auswählen Lotus Notes /Domino 8.5
Beitrag von: moprheusfgh am 18.09.09 - 10:42:03
Hallo zusammen,

ich bin neu hier und bin mir nicht sicher, ob ich meine Frage richtig eingestellt habe  ???

Ich möchte gerne aus einer Maske mit einem Button einen Dateipfad auswählen. Ich habe bereits aus einem anderen Beitrag, dass ich folgendes einfügen muss.

Decleration:

Type fileDlgStruct
   lStructSize As Long
   hwndOwner As Long
   lpstrFilter As String
   lpstrCusomfilter As Long
   nMaxCustFilter As Long
   nFilterIndex As Long
   lpstrFile As String
   nMaxFile As Long
   lpstrFileTitle As String
   nMaxFileTitle As Long
   lpstrInitialDir As String
   lpstrtTitle As String
   Flags As Long
   nFileOffset As Integer
   nFileExtension As Integer
   lpstrDefExt As String
   lCustData As Long
   lpfnHook As Long
   lpTemplsteName As Long
End Type


Declare Function getFileName Lib "comdlg32.dll" Alias _
"GetopenFileNameA" (fileDlg As fileDlgStruct) As Long

---------------------------------------------------------------------------------------------------------------------

APIGetFile:

Function APIGetFile()
   Dim Title As String
   Dim defExt As String
   Dim szCurDir As String
   Dim apiresults%
   
   title = "Datei für den export auswählen" & Chr$(0)
   FileName ="*.xls" & Chr$(0)
   FileTitle = Space$(255) & Chr(0)
   
   szCurDir = "C:\Dokumente und Einstellungen" & Chr$(0)
   myFileDlg.lStructSize = Len(myFileDlg)
   
   myFileDlg.hwndOwner = 0&
   myFileDlg.lpstrFilter = Filter
   myFileDlg.nFilterIndex = 1
   myFileDlg.lpstrFile = Filename
   myFileDlg.nMaxFile = Len (Filename)
   myFileDlg.lpstrFileTitle = FileTitle
   myFileDlg.nMaxFileTitle = Len(FileTitle)
   myFileDlg.lpstrTitle = Title
   myFileDlg.Flags = OFN_Filemustexist + OFN_Allowmultiselect
   myFileDlg.lpstrDefext = DefExt
   myFileDlg.hInstance = 0
   myFileDlg.lpstrCustomFilter = 0
   myFileDlg.nMaxCustFilter = 0
   myFileDlg.lpstrInitialDir = szCurDir
   myFileDlg.nFileOffset = 0
   myFileDlg.nFileExtension = 0
   myFileDlg.lCustdata = 0
   myFileDlg.lpfnhook = 0
   myFileDlg.lpTemplateName = 0
   
   REM Aufruf der Box
   
   APIResults% = GetFileName(myFileDlg ) ------> bekomme ich einen Fehler!?!?!
   If APIResults% <> 0 Then
      Filename = Cstr( myFileDlg.lpstrFile )
      Filetitle = Cstr (myFileDlg.lpstrFileTitle )
      OpenCommDlg = 1
      
   Else
      
      OpenCommDlg = 0
      
   End If
   
End Function
-------------------------------------------------------------------------------------------------------------

Unter "Click" steht nichts. Muss dort nicht noch etwas stehen?

Vielen dnak im voraus. Ich beschäftige mich noch nicht lang mit Lotus Script (sieht man vielleicht...).

Grüße
Titel: Re: Dateipfad auswählen
Beitrag von: Klafu am 18.09.09 - 10:52:56
Hallo,

Was genau hast du denn vor ?
Einen Button zum auswählen eines Dateipfades ist nicht so schwer.
Da hilft dir bestimmt auch noch die Forensuche.
eventuell hilft dir das ja schon:
http://atnotes.de/index.php/topic,8263.0.html

Chris
Titel: Re: Dateipfad auswählen
Beitrag von: moprheusfgh am 18.09.09 - 10:59:04
Hi,

ich möchte einen Import von einer Exceldatei in das Visio erstellen. Hab das auch alles hinbekommen. Das einzige Problem ist, dass ich selber im Script den Dateipfad ausgewählt habe:

run = path + "\Microsoft Office\Office12\OrgWiz.exe " + "/NAME-FIELD=Name /MANAGER-FIELD=Vorgesetzter /DISPLAY-FIELDS=Name,Abteilung   /UNIQUEID-FIELD=Eindeutige_ID /FILENAME=C:\temp\mappe7.xls"
   result = Shell(run, 1)

Ich will aber, dass ich den Filename durch eine Box auswählen kann.

Viele Grüße
Titel: Re: Dateipfad auswählen
Beitrag von: ascabg am 18.09.09 - 11:00:09
Hallo,

Klafu war schneller mit der Frage.

Was moechtest Du?

Mit ein bisschen Code hilft eventuell aber auch schon
Code
FileName = NotesUIWorkspace.OpenFileDialog(...)
weiter.

Aus dem Rueckgabewert kann man ohne groesseren Aufwand den gewaehlten Pfad extrahieren.

Aber auch
Code
@Prompt([LocalBrowse]; "Select File"; 1)

waere eventuell eine Alternative


Andreas
Titel: Re: Dateipfad auswählen
Beitrag von: Klafu am 18.09.09 - 11:02:19
Du musst nur den vordefinierten Pfad durch eine Variable ersetzen, welcher du die Pfadauswahl zuweist.

Chris
Titel: Re: Dateipfad auswählen
Beitrag von: moprheusfgh am 18.09.09 - 11:09:17
Also zum Beispiel:   

pfad = NotesUIWorkspace.OpenFileDialog(????)

run = path + "\Microsoft Office\Office12\OrgWiz.exe " + "/NAME-FIELD=Name /MANAGER-FIELD=Vorgesetzter /DISPLAY-FIELDS=Name,Abteilung _
/ UNIQUEID-FIELD=Eindeutige_ID /FILENAME=pfad"
result = Shell(run, 1)

Sorry bin echt neu in diesem Bereich. Mir fehlen einige Grundkenntnisse :-)
Titel: Re: Dateipfad auswählen
Beitrag von: moprheusfgh am 18.09.09 - 11:11:12
Hi

mit dem

@Prompt([LocalBrowse]; "Select File"; 1)


hat es geklappt.

Jetzt muss ich nur noch den Rückgabewert irgendwie rein bekommen
Titel: Re: Dateipfad auswählen
Beitrag von: Klafu am 18.09.09 - 11:20:43
Hier noch ein kleines beispiel aus der Notes Hilfe.

Löscht das über die OpenFileDialog-box ausgewählte File

Code
Sub Click(Source As Button)
	Dim ws As New NotesUIWorkspace
  REM Get filename from user
	filenames = ws.OpenFileDialog( _       ' hier wird der variablen das der Pfad zugewiesen
	True, "Select files to be deleted",, "c:\work")
	If Not(Isempty(filenames)) Then
		Forall filename In filenames     
			Kill filename                        ' hier wird mit dem Pfad weitergearbeitet
		End Forall
	End If
End Sub
Titel: Re: Dateipfad auswählen
Beitrag von: ascabg am 18.09.09 - 11:35:12
Eventuell ist ein Blick in die Designer-Hilfe hilfreich.

hier ein kleiner Auszug
Code
Datei:= @Prompt([LocalBrowse]; "Wählen Sie die Datenbank, die geöffnet werden soll"; "1");
@If(Datei = ""; @Return(1); "");

Andreas
Titel: Re: Dateipfad auswählen
Beitrag von: moprheusfgh am 18.09.09 - 11:36:27
Vielen Dank für deine Hilfe.

Es öffnet sich das Dialogfeld.

Es kommt aber nach der auswahl: Path/file access error

Was kann das sein?
Titel: Re: Dateipfad auswählen
Beitrag von: ascabg am 18.09.09 - 11:38:02
Ein kleines Stueckchen Code waere hier eventuell hilfreich.


Andreas
Titel: Re: Dateipfad auswählen
Beitrag von: moprheusfgh am 18.09.09 - 11:40:44
Sub Click(Source As Button)
   Dim ws As New NotesUIWorkspace
   Dim pfad As String
   Dim uiws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Set uidoc = uiws.CurrentDocument
  REM Get filename from user
   filenames = ws.OpenFileDialog( _       ' hier wird der variablen das der Pfad zugewiesen
   True, "Select files to be deleted",, "c:\work")
   If Not(Isempty(filenames)) Then
      Forall filename In filenames     
         Kill filename                        ' hier wird mit dem Pfad weitergearbeitet
      End Forall
   End If
End Sub

Sorry....
Titel: Re: Dateipfad auswählen
Beitrag von: ascabg am 18.09.09 - 11:42:26
Darf der Anwender, der den Button angeklickt hat, denn die gewaehlte Datei loeschen bzw. in dem betreffenden Verzeichnis?

Sieht mir stark nach einem Rechte-Problem auf Seiten des BS aus.


Andreas
Titel: Re: Dateipfad auswählen
Beitrag von: moprheusfgh am 18.09.09 - 11:45:21
Ja ich hab lokale adminrechte und kann auch die Datei löschen.

Hier nochmal mein kompletten script:

Sub Click(Source As Button)
   Dim visio As Variant
   Dim excel As Variant
   Dim uiws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Set uidoc = uiws.CurrentDocument
   Dim result As Integer
   Dim path As String
   Dim run As String
   Dim pfad As String
   
   Dim ws As New NotesUIWorkspace
  REM Get filename from user
   filenames = ws.OpenFileDialog( _       ' hier wird der variablen das der Pfad zugewiesen
   True, "Select files to be deleted",, "c:\work")
   If Not(Isempty(filenames)) Then
      Forall filename In filenames     
         Kill filename                        ' hier wird mit dem Pfad weitergearbeitet
      End Forall
   End If
   
   
   path=Environ$( "ProgramFiles" )
   
   pfad = "Select File"
   

   
   Sleep (5)
   run = path + "\Microsoft Office\Office12\OrgWiz.exe " _
   + "/NAME-FIELD=Name / MANAGER-FIELD=Vorgesetzter  /DISPLAY-FIELDS=Name,Abteilung   /UNIQUEID-FIELD=Eindeutige_ID /FILENAME=pfad"
   result = Shell(run, 1)
   
   
   
   
   
   
   
   
End Sub
Titel: Re: Dateipfad auswählen
Beitrag von: Klafu am 18.09.09 - 11:49:46
du hast da glaub was falsch verstanden:


Sub Click(Source As Button)
   Dim ws As New NotesUIWorkspace
   filenames = ws.OpenFileDialog( _    
   True, "Select files to be deleted",, "c:\work")
   If Not(Isempty(filenames)) Then
      
run = path + "\Microsoft Office\Office12\OrgWiz.exe " _
   + "/NAME-FIELD=Name / MANAGER-FIELD=Vorgesetzter  /DISPLAY-FIELDS=Name,Abteilung   /UNIQUEID-FIELD=Eindeutige_ID /FILENAME="+filenanames
   result = Shell(run, 1)

   End If
End Sub
Titel: Re: Dateipfad auswählen
Beitrag von: ascabg am 18.09.09 - 11:53:45
Ansich scheint der Code richtig zu sein (ist ja wie es aussieht 1:1 aus der Hilfe)

Frage:
Das Verzeichnis "c:\work" gibt es aber schon auf dem Rechner?

%EDIT
Auch der Debugger kann bei der Fehlersuche helfen.
In welcher Zeile Deines Codes kommt denn der besagte Fehler?


Andreas
Titel: Re: Dateipfad auswählen
Beitrag von: moprheusfgh am 18.09.09 - 12:07:35
Ja den Ordner work gibt es.

Ich hab mal den code von Klafu komplett übernommen.

Warum steht den da: Select files to be deleted?

Es kommt wieder die gleiche Meldung mit Access error.

Meine Datei, die ich auswählen will ist eine Exceldatei auf C:\temp\mappe7.xls

Vielleicht sollte ich nochmal meinen kompletten Sachverhalt schildern:

Ich habe einen Button erstellt, mit dem ich einen import ins visio erstellen will. Eine Exceldatei soll ins Visio importiert bzw. exportiert werden. Das funktioniert auch alles bis auf die manuelle Pfadauswahl.

So sieht im Moment mein Script aus:

Sub Click(Source As Button)
   Dim ws As New NotesUIWorkspace
   filenames = ws.OpenFileDialog( _   
   True, "Select files to be deleted",, "c:\work")
   If Not(Isempty(filenames)) Then
      
      run = path + "\Microsoft Office\Office12\OrgWiz.exe " _
      + "/NAME-FIELD=Name / MANAGER-FIELD=Vorgesetzter  /DISPLAY-FIELDS=Name,Abteilung   /UNIQUEID-FIELD=Eindeutige_ID /FILENAME="+filenanames
      result = Shell(run, 1)
      
   End If
End Sub


Danke nochmal
Titel: Re: Dateipfad auswählen
Beitrag von: Klafu am 18.09.09 - 12:21:52
Warum steht den da: Select files to be deleted?

Das ist der Fenster Titel. Den kannst du frei umbenennen

Du hast das Script in Visio und möchtest über dieses Script ein Excel file ins Viosio Impotieren ?
Wozu brauchst du dann Notes ?

Chris
Titel: Re: Dateipfad auswählen Lotus Notes /Domino 8.5
Beitrag von: moprheusfgh am 18.09.09 - 12:24:44
Nein Sorry...

Ich hab eine Maske in Notes. Da habe ich ein Button erstellen, damit ich aus dem Notes diesen Vorgang durchführen kann. Ich will dann am schluss alle exportvorgänge speichern usw. (das probiere ich aber wann anders). Zuerst möchte ich nur gerne, dass der Button funkt.

Titel: Re: Dateipfad auswählen
Beitrag von: Axel am 18.09.09 - 12:24:59
Warum steht den da: Select files to be deleted?

Das ist der Titel der Dialogbox. Da kann genauso gut stehen: "Gehe nicht über los".

run = path + "\Microsoft Office\Office12\OrgWiz.exe " _
      + "/NAME-FIELD=Name / MANAGER-FIELD=Vorgesetzter  /DISPLAY-FIELDS=Name,Abteilung   /UNIQUEID-FIELD=Eindeutige_ID /FILENAME="+filenanames

Hast du denn fettgedruckten Teil mal überprüft. Stimmt das so? Das kann ich mir nicht so recht vorstellen.

Axel
Titel: Re: Dateipfad auswählen Lotus Notes /Domino 8.5
Beitrag von: BigWim am 18.09.09 - 12:26:16
Außerdem ist der Variablenname falsch geschrieben.


Code
Sub Click(Source As Button)
   Dim ws As New NotesUIWorkspace
   filenames = ws.OpenFileDialog( _    
   True, "Select files to be deleted",, "c:\work")
   If Not(Isempty(filenames)) Then
      
      run = path + "\Microsoft Office\Office12\OrgWiz.exe " _
      + "/NAME-FIELD=Name / MANAGER-FIELD=Vorgesetzter  /DISPLAY-FIELDS=Name,Abteilung   /UNIQUEID-FIELD=Eindeutige_ID /FILENAME="+filenames

      stop

      result = Shell(run, 1)
      
   End If
End Sub

Probier mal das und teile mal mit, was in der Variable RUN steht. Vor allem der Teil nach /FILENAME.

Markus
Titel: Re: Dateipfad auswählen Lotus Notes /Domino 8.5
Beitrag von: moprheusfgh am 18.09.09 - 12:30:04
Hab den Teil umbenannt:

run = path + "\Microsoft Office\Office12\OrgWiz.exe " _
      + "/NAME-FIELD=Name / MANAGER-FIELD=Vorgesetzter  /DISPLAY-FIELDS=Name,Abteilung   /UNIQUEID-FIELD=Eindeutige_ID /FILENAME="+filename
      result = Shell(run, 1)

Jetzt bekomme ich die Meldung "datei nicht gefunden". Obwohl ich die Datei ausgewählt habe....
Titel: Re: Dateipfad auswählen Lotus Notes /Domino 8.5
Beitrag von: Axel am 18.09.09 - 12:32:57
Ich frage nochmal: stimmt das was du bei \FILENAME angegeben hast so?

Als Dialogrückgabe heisst die Variable filenames und bei  \FILENAME nur noch filename. Außerdem was soll das + - Zeichen?

Axel
Titel: Re: Dateipfad auswählen Lotus Notes /Domino 8.5
Beitrag von: moprheusfgh am 18.09.09 - 12:36:31
Das ist der vollständige Script. Wenn ich den Debugger laufen lasse, kommt "Datei not found" in der letzten Zeile: result = Shell(run, 1)


Sub Click(Source As Button)
   Dim ws As New NotesUIWorkspace
   Dim uiws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Set uidoc = uiws.CurrentDocument
   Dim path As String
   Dim run As String
   Dim pfad As String
   Dim result As Integer
   filenames = ws.OpenFileDialog( _    
   True, "Select your file",, "c:\temp")
   If Not(Isempty(filenames)) Then
      
      run = path + "\Microsoft Office\Office12\OrgWiz.exe " _
      + "/NAME-FIELD=Name / MANAGER-FIELD=Vorgesetzter  /DISPLAY-FIELDS=Name,Abteilung   /UNIQUEID-FIELD=Eindeutige_ID /FILENAME="+filename
      result = Shell(run, 1)
      
   End If
End Sub
Titel: Re: Dateipfad auswählen Lotus Notes /Domino 8.5
Beitrag von: ascabg am 18.09.09 - 12:39:11
Zum einen.
siehe letztes Posting von Axel

Zum Anderen.
Lt. Hilfe gibt ws.OpenFileDialog einen Array zurueck.
Muesste also hier dann nicht

filenames(0)

verwendet werden

Andreas
Titel: Re: Dateipfad auswählen Lotus Notes /Domino 8.5
Beitrag von: Klafu am 18.09.09 - 12:41:39
@Alex
Das ["...FILENAME="+filename] ist von mir. Ich hab filename aus den " " rausgenommen, da es eine Variable ist.

Chris
Titel: Re: Dateipfad auswählen Lotus Notes /Domino 8.5
Beitrag von: Axel am 18.09.09 - 12:50:39
@Alex
Das ["...FILENAME="+filename] ist von mir. Ich hab filename aus den " " rausgenommen, da es eine Variable ist.

Chris


Okay. Dann sollte das aber besser der richtige Operator für Stringverkettungen sein, nämlich das & - Zeichen.

Axel
Titel: Re: Dateipfad auswählen Lotus Notes /Domino 8.5
Beitrag von: moprheusfgh am 18.09.09 - 12:53:26
Sub Click(Source As Button)
   Dim ws As New NotesUIWorkspace
   Dim uiws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Set uidoc = uiws.CurrentDocument
   Dim path As String
   Dim run As String
   Dim pfad As String
   Dim result As Integer
   filenames = ws.OpenFileDialog( _   
   True, "Select your file",, "c:\temp")
   If Not(Isempty(filenames)) Then
      
      run = path + "\Microsoft Office\Office12\OrgWiz.exe " _
      + "/NAME-FIELD=Name / MANAGER-FIELD=Vorgesetzter  /DISPLAY-FIELDS=Name,Abteilung   /UNIQUEID-FIELD=Eindeutige_ID /FILENAME=&filenames"
      result = Shell(run, 1)
      
   End If
End Sub


Hab es mal soweit... Immernoch File not found.  Ich hab den Script getestet mit Filename="C:\temp..." das hat geklappt. Nur die manuelle auswahl nicht
Titel: Re: Dateipfad auswählen Lotus Notes /Domino 8.5
Beitrag von: ascabg am 18.09.09 - 12:58:49
Versuch mal dieses

Code
run = path & "\Microsoft Office\Office12\OrgWiz.exe " _
      & "/NAME-FIELD=Name / MANAGER-FIELD=Vorgesetzter  /DISPLAY-FIELDS=Name,Abteilung   /UNIQUEID-FIELD=Eindeutige_ID /FILENAME=" & filenames(0)
      result = Shell(run, 1)


Andreas
Titel: Re: Dateipfad auswählen Lotus Notes /Domino 8.5
Beitrag von: moprheusfgh am 18.09.09 - 13:24:20
Hab es geade probiert. Leider kommt immernoch die Meldung "File not found"
Titel: Re: Dateipfad auswählen Lotus Notes /Domino 8.5
Beitrag von: ascabg am 18.09.09 - 13:29:50
Dann naechste Frage.

Wann wird der Variablen "path" ein Wert zugewiesen?


Andreas
Titel: Re: Dateipfad auswählen Lotus Notes /Domino 8.5
Beitrag von: moprheusfgh am 18.09.09 - 13:33:16
Hallo Andreas und thanks,

ES FUNKTIONIERT!!!!!!!!!!!!!!!!!!!!!!

Vom lauter umschreiben, hab ich vergessen dem path einen wert zu geben.

Danke an alle. Geiles Forum!!!