Autor Thema: Errorhandling  (Gelesen 1844 mal)

Offline CLI_Andreas_Schmidt

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
    • Lotus Notes & Domino Schulung und Entwicklung
Errorhandling
« am: 05.12.06 - 13:53:29 »
Hi @Dev,

ich versuche mich gerade an der folgenden Funktion:

Open "c:\importordner\txt\" & fileName$ For Input As fileNum%

Gibt es hier auch ein vernünftiges Errorhandling ?  Was ist, wenn der file gar nicht da ist ? Ein isOpen(File) habe ich so nicht gefunden. Ich habe schon mit der Stream-Klasse gearbeitet. Aber die guckt leider nur auf (Verzeichnis leer oder nicht leer).

Aber die Frage hier heißt. Wie prüfe ich ab, ob eine bestimmte Datei tatsächlich da ist ?
Viele Grüße

Andreas.Schmidt@lotus-schmidt.de

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: Errorhandling
« Antwort #1 am: 05.12.06 - 14:00:16 »
mit
strFileName = Dir$( "c:\importordner\txt\" & fileName$ , 0 )
Kannst Du prüfen, ob die Datei vorhanden ist (strFileName <> "")
Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline ZaLudtske

  • Senior Mitglied
  • ****
  • Beiträge: 319
  • Geschlecht: Männlich
  • carpe diem
Re: Errorhandling
« Antwort #2 am: 05.12.06 - 14:03:53 »
Hallo,

wenn auf Windows-Rechnern arbeitest kann du auch mit den FileSystemObject arbeiten. Dieses bietet viele und sehr bequeme Möglichkeiten auf das Vorhandensein von Dateien und Verzeichnissen zu prüfen.

Rainer
Rainer Zaske

MCSD - C#

Glombi

  • Gast
Re: Errorhandling
« Antwort #3 am: 05.12.06 - 14:05:45 »
@Rainer: Poste doch mal ein Beispiel dafür.

Andreas

Offline CLI_Andreas_Schmidt

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
    • Lotus Notes & Domino Schulung und Entwicklung
Re: Errorhandling
« Antwort #4 am: 05.12.06 - 14:56:03 »
Ich habe den Code mal unten reingehängt. Was soll das Script tun ?

1. Sehe in Verzeichnis txt und nehme das erste file
2. Öffne es und lese den Dateinahmen aus (zeile 2) und suche dann in Verzeichnis doc nach der Datei.

Der Code funktioniert auch soweit. Ein Fehler ist jedoch noch drin, denn in Zeile X s.u. wird der erste File gezogen. In Zeile Y springt der Cursor bereits auf File 2 aus dem txt-Verzeichnis. Das soll aber nicht sein. Das Programm arbeitet also den ersten File nicht ab. Also ein Schleifenproblem.


---------------------->

Sub Initialize
   On Error Goto fehlermeldung
   
   
   Dim s As New NotesSession
   Dim db As NotesDatabase
   Dim logdb As NotesDatabase
   Dim logdoc As NotesDocument
   Dim newdoc As NotesDocument
   Dim rtitem As NotesRichTextItem
   Dim strFileName As String
   
   Set db = s.CurrentDatabase
   
   Dim fileName As String
   Dim pathName As String
   pathName$ = "c:\ordner\txt\*.txt"
   
   fileName$ = Dir$(pathName$, 0) -------------------------> ZEILE X
   
   Dim txt As String
   Dim fileNum As Integer
   Dim counter As Integer
   Dim var() As String
   Dim getdocstringfile As String
   Dim getdocstringmail As String
   Dim getdocstringsubject As String
   Dim getdocstringbody As String
   Dim countvar As Integer
   

   Do     
      
      counter% = 0
      
      fileNum% = Freefile
      
      Open "c:\ordner\txt\" & fileName$ For Input As fileNum%
      
      fileName$ = Dir$() -------------------> Zeile Y
      
      Do While Not Eof(fileNum%)
         Line Input #fileNum%, txt$  ' Read each line of the file.
         Redim Preserve var(counter%)
         var(counter%) = txt$
         counter% = counter% + 1     ' Increment the line count.
      Loop
      
      Close fileNum%
      
      
      getdocstringmail = var(0)
      getdocstringfile = var(1)
      getdocstringsubject = var(2)
      getdocstringbody = var(3)
      
      
      strFileName = Dir$( "c:\ordner\doc\" & getdocstringfile , 0 )   

      If strFileName <> "" Then
         
         Open "c:\ordner\doc\" & getdocstringfile For Input As fileNum%
         Set newdoc = db.CreateDocument
         Call newDoc.ReplaceItemValue("FORM","Memo")
         Call newDoc.ReplaceItemValue("Sendto", getdocstringmail)
         Call newDoc.ReplaceItemValue("Subject", getdocstringsubject)
         
         Set rtitem = New NotesRichTextItem( newdoc, "Body" )
         Call rtitem.EmbedObject(EMBED_ATTACHMENT,"", "c:\ordner\doc\" & getdocstringfile )
         Call rtitem.AddNewline(2)
         Call rtitem.AppendText(getdocstringbody)         
         Call newdoc.Send(True)
         newdoc.Save True,False   
         countvar = 1
                  
      End If
      
   Loop Until fileName$ = ""
   
   Exit Sub
fehlermeldung:
   
   Print "Error" & Str(Err) & ": " & Error$
      
End Sub
Viele Grüße

Andreas.Schmidt@lotus-schmidt.de

Offline CLI_Andreas_Schmidt

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
    • Lotus Notes & Domino Schulung und Entwicklung
Re: Errorhandling
« Antwort #5 am: 07.12.06 - 10:39:00 »
Der Fehler ist gefunden.

fileName$ = Dir$(pathName$, 0)
strFileName = Dir$( "c:\ordner\doc\" & getdocstringfile , 0 )   

Diese beiden Zeilen verwenden die Variable (Dir$). Der Fehler ist, dass die zweite Zeile den Inhalt aus Zeile 1 überschreibt. Man darf die Dir-Varibale nicht zum Suchen in zwei verschiedenen Verzeichnissen verwenden. Gefunden wie ? Debugger.
Viele Grüße

Andreas.Schmidt@lotus-schmidt.de

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re: Errorhandling
« Antwort #6 am: 07.12.06 - 10:51:57 »
@Rainer: Poste doch mal ein Beispiel dafür.

Andreas

Gedächtnisprotokoll:

dim fs as variant
set fs=CreateObject("Scripting.FileSystemObject")
if fs.FileExists("c:\file.txt")=true then
  msgbox("File exists")
else
   msgbox("File does not exist!")
end if
set fs=nothing
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline CLI_Andreas_Schmidt

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
    • Lotus Notes & Domino Schulung und Entwicklung
Re: Errorhandling
« Antwort #7 am: 07.12.06 - 11:26:51 »
Genau dieses Lösung habe ich dann auch verwendet.

:  )

Prima, Danke

Viele Grüße

Andreas.Schmidt@lotus-schmidt.de

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz