FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 
smartsuitefaq.martinholz.de Foren-Übersicht

Eine Variable als Dateiname beim Export verwenden

 
Neues Thema eröffnen   Neue Antwort erstellen    smartsuitefaq.martinholz.de Foren-Übersicht -> Approach
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Hermann
Neuer User


Anmeldungsdatum: 04.05.2006
Beiträge: 7

BeitragVerfasst am: Mo 08.05.2006 14:02    Titel: Eine Variable als Dateiname beim Export verwenden Antworten mit Zitat

Verschiedene User sollen mit demselben Makro Teile einer Datei exportieren können, ohne dass der vorherige Export eines anderen Users überschrieben wird. Kann man für den Dateinamen der Exportdatei einen variablen Dateinamen aus bestimmten Feldern der Abfrage generieren?

Gruß
Hermann
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Cornelius
Moderator / CoAdmin


Anmeldungsdatum: 31.12.2004
Beiträge: 245
Wohnort: Duisburg

BeitragVerfasst am: Mi 10.05.2006 01:19    Titel: Antworten mit Zitat

Hi,

schon gelesen?

http://smartsuitefaq.vol4u.de/index.php?id=lotusScript-0206



Gruß

Cornelius
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden MSN Messenger
Hermann
Neuer User


Anmeldungsdatum: 04.05.2006
Beiträge: 7

BeitragVerfasst am: Mi 10.05.2006 19:49    Titel: Antworten mit Zitat

Vielen Dank für die Antwort, allerdings glaube ich dass ein Mißverständnis vorliegt:
Ich möchte nicht eine Datei öffnen, sondern aus der bestehenden Datenbank einzelne Teile in eine neue Datei (z.B. eine Textdatei) exportieren.

Beim Aufruf des Makrobefehls <exportieren> wird entweder nichts aufgerufen (auch keine Möglichkeit das Format und die Variablen anzugeben, die exportiert werden sollen) oder es öffnet sich ein Fenster, in dem der Dateityp und die Variablen ausgewählt werden können, aber es wird auch explizit ein Dateiname erwartet. Ohne Eingabe eines Dateinamens kann man dieses Fenster nicht verlassen.

Gibt es dafür auch eine Möglichkeit?

Hermann
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Logeno
Power-User


Anmeldungsdatum: 17.02.2005
Beiträge: 106
Wohnort: Bingen am Rhein

BeitragVerfasst am: Mi 10.05.2006 20:25    Titel: Antworten mit Zitat

Hallo Hermann,

vielleicht kannst Du hiermit was anfangen:

http://smartsuitefaq.vol4u.de/index.php?id=lotusScript-0205

Gruß

Michael
_________________
http://www.logeno.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hermann
Neuer User


Anmeldungsdatum: 04.05.2006
Beiträge: 7

BeitragVerfasst am: Mi 10.05.2006 21:44    Titel: Antworten mit Zitat

Vielen Dank für die prompte Antwort. Leider geht es haarscharf an meinem Problem vorbei.
Ich möchte es konkretisieren:
In meiner Schule werden die Schüler in unterschiedlichen Kursen mit einer jeweiligen Kursbezeichnung unterrichtet. Diese sind mit der jeweiligen Lehrerbezeichnung in einer Kursedatei abegelegt. Die Lehrer haben die Möglichkeit, sich für jeden Kurs eine Datei als Textdatei zu exportieren, die sie in unserem Computerraum in ein Linux-System einspielen, damit sie diesen Schülern Aufgaben schicken und Ergebnisse einsammeln können.
Bisher wird diese Textdatei aus wenigen Feldern (auch einigen berechneten Feldern) zusammengesetzt, jedoch ist der Dateiname der exportierten Datei für jedes Fach statisch. Dieser Name sollte jedoch möglichst dynamisch aus <Jahrgang+Kursbezeichnung+Lehrer> gebildet und als TXT-Datei abgelegt werden. Sonst muss nach jedem Export der Dateiname der exportierten Textdatei umbenannt werden, damit die nächste Datei exportiert werden kann, ohne die vorherige zu überschreiben.
Wir haben aber 1200 Schüler und 130 Lehrer. Das Chaos ist vorprogrammiert.

Für Hilfe wäre ich wirklich sehr dankbar, und auch meine Kollegen.

Gruß

Hermann
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Martin
Site Admin


Anmeldungsdatum: 31.12.2004
Beiträge: 389
Wohnort: Düsseldorf

BeitragVerfasst am: Sa 13.05.2006 07:45    Titel: Antworten mit Zitat

Hermann hat folgendes geschrieben:
Dieser Name sollte jedoch möglichst dynamisch aus <Jahrgang+Kursbezeichnung+Lehrer> gebildet und als TXT-Datei abgelegt werden. Sonst muss nach jedem Export der Dateiname der exportierten Textdatei umbenannt werden, damit die nächste Datei exportiert werden kann, ohne die vorherige zu überschreiben.


OK. Ich nehme an, dass Du die Aufgaben nach bestimmten Kriterien auswählst. Sind diese Kriterien in der Ansicht für den Export sichtbar?

Wenn ja könnte folgendes Konstrukt helfen:

Globale Definitionen
Code:

' Global Options
Option Public


Code:

' Global Declarations
Dim Jahrgang As String, Kursbezeichnung As String, Lehrer As String, Dateiname As String


zusätzliche Funktion "Leerzeichen Ersetzen"
Aus eigener Erfahrung weiß ich, das Leerzeichen sowohl in Approach und auch auf einem SAMBA-Share gelegentlich Probleme bereiten, deshalb werden alle Vorkommen von Leerzeichen in Datei- und Verzeichnisnamen vorsichtshalber durch Unterstriche ersetzt:
Code:

Function LeerzeichenErsetzen (Phrase As String)
   ' Testen ob Phrase (Dateiname) Leerzeichen enthält
   AnzahlLeerzeichen = Instr(1, Phrase$, " ")
   
   If AnzahlLeerzeichen = 0 Then
      ' keine Leerzeichen enthalten Dateiname wird
      ' unverändert übernommen
      LeerzeichenErsetzen = Phrase$
   Else
      ' Dateiname enthält Leerzeichen
      
      ' Länge des Dateinamens ermitteln
      Dim AnzahlZeichen As Integer
      AnzahlZeichen% = Len(Phrase$)
      
      ' Dateinamen leeren
      Dim TempName As String
      TempName$ = ""
      
      ' Leerzeichen suchen und ersetzen
      For i = 1 To AnzahlZeichen%
         Dim Zeichen As String
         Zeichen = Mid$(Phrase$, i, 1)
         
         If Zeichen = " " Then
            Zeichen = "_"
         End If
         TempName$ = TempName$ & Zeichen
      Next      
      LeerzeichenErsetzen = TempName$
   End If
End Function


Dateinamen dynamisch erzeugen (aus Ansicht)
Vorausgesetzt die drei Felder "Jahrgang", "Kursbezeichnung" und "Lehrer" sind in der Ansicht verfügbar, hole ich die Werte aus den Feldern und bilde daraus den Dateinamen:
Code:

Sub  DateinamenBilden
' Variablen für Dateinamen holen
   Jahrgang$ = CurrentView.Body.Jahrgang.text
   Kursbezeichnung$ = CurrentView.Body.Kursbezeichnung.text
   Lehrer$ = CurrentView.Body.Lehrer.text
   
' Dateinamen zusammensetzen
   Dateiname$ = Jahrgang$ & "-" & Kursbezeichnung$ & "-" & Lehrer$ & ".txt"
End Sub


Anzeige des Dateinamens
Dieses Script ist an eine Schaltfläche gebunden und zeigt in einer Messagebox den generierten Dateinamen an:
Code:

Sub ZeigeDateinamen
   ' Dateinamen erzeugen
   Call DateinamenBilden
   Messagebox LeerzeichenErsetzen(Dateiname$)
End Sub


Datei und Verzeichnisse für den Export erzeugen
Dieses Script muss ggf. angepasst werden. Zunächst wird wieder der Dateiname erzeugt (exkl. Leerzeichen), dann werden der SAMBA-Pfad und der lokale Pfad definiert (Anpassung erforderlich!).
Danach wird definiert ob auf einem SAMBA-Share oder lokal gespeichert werden soll und jeweils die Unterverzeichnisse (Jahrgang\Kursbezeichnung\Lehrer) angelegt.
Schließlich wird in diesem Verzeichnis die (leere) Text-Datei erzeugt.
Die eigentliche Export-Funktion musst Du noch einfügen, da dies von Deiner Datenbankstruktur abhängig ist.
Code:

Sub Exportieren
   ' Dateinamen erzeugen
   Call DateinamenBilden
   LeerzeichenErsetzen(Dateiname$)
   
    ' Ausgabedatei anlegen
   Dim Datei As Integer   
   Datei% = Freefile()   
   
   ' Speicherpfad generieren
   Dim Server As String, BasisVerzeichnis As String
   Dim SMBPfad As String, LokalerPfad As String
   Dim Pfad As String
   
   
   ' Pfad für Samba-Share
   Server$ = "martin"
   BasisVerzeichnis$ = "martin\TEST"
   SMBPfad$ = "\\" & Server$ & "\" & BasisVerzeichnis$ & "\"
   
   ' lokaler Dateipfad
   LokalerPfad$ = ""
   
   ' Sollte kein lokaler Pfad angegeben sein, wird das aktuelle Verzeichnis angenommen
   If LokalerPfad$ = "" Then
      LokalerPfad$ = CurrentDocument.Path 
   End If
   
   ' Festlegen wo gespeichert werden soll: Lokal oder SMB
   Pfad$ = LokalerPfad
'   Pfad$ = SMBPfad
   
   ' Verzeichnisbaum anhängen / erzeugen
   Dim Verzeichnisbaum(4) As String
   Verzeichnisbaum(0) = Pfad   
   Verzeichnisbaum(1) = Verzeichnisbaum(0) & LeerzeichenErsetzen(Jahrgang)
   Verzeichnisbaum(2) = Verzeichnisbaum(1) & "\" & LeerzeichenErsetzen(Kursbezeichnung)
   Verzeichnisbaum(3) = Verzeichnisbaum(2) & "\" & LeerzeichenErsetzen(Lehrer)
   
   Dim Test As Integer
   For Test% = 0 To 3
      If Dir(Verzeichnisbaum(Test%), 16) = "" Then
         Mkdir Verzeichnisbaum(Test%)
      End If
   Next
   
   Pfad$ = Verzeichnisbaum(3) & "\"    
   
   ' Datei exportieren
   Open Pfad & "\" & LeerzeichenErsetzen(Dateiname$) For Output As #Datei%
   '
   ' hier kommten die Export-Befehle hinein
   '
   Close #Datei%
   
   Messagebox "Datei wurde unter" & Chr$(13) & Pfad & Chr$(13) & "gespeichert."
End Sub


Eine funktionierende Beispieldatei liegt unter: http://smartsuitefaq.vol4u.de/download/DateinameAusScript.zip bereit.
Wenn noch Fragen sind ... nur zu.
_________________
FAQ gelesen?
=> http://smartsuitefaq.martinholz.de/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden AIM-Name Yahoo Messenger MSN Messenger
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    smartsuitefaq.martinholz.de Foren-Übersicht -> Approach Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2002 phpBB Group
Protected by Anti-Spam ACP