fortlaufende Dateinamen?



  • Moin Moin
    und zwar schreibe ich grad ein Programm Aufträge aus ner DB ausliest und diese dann in ein WordDokument reinklatscht abspeichert und per ftp weiterjagt.
    Soweit so gut jetzt ist mir aber aufgefallen sobald mehr als ein Auftrag in die DB reinkommt überschreibt er einfach immmer nur die WordDokumente und das soll ja nicht sinn und zweck sein...
    Also die Frage kann ich hier noch ein zähler reinmachen un wenn ja wo???
    habs vor "Auftrag.doc" schon versucht oben unten un werd langsam irre 😉

    if(!vOLEWord.IsEmpty())
          CreateDocument(vOLEWord,ExtractFilePath(ParamStr(0))+"vorlage.doc",
            ExtractFilePath(ParamStr(0))+ "Auftrag.doc", false);
    

    dank schon mal im voraus!
    mfg
    hck



  • Hallo

    aus der BCB-Hilfe

    ParamStr(0) gibt den Pfad und den Dateinamen des ausgeführten Programms zurück (z.B. C:\TEST\MYPROG.EXE).

    bis bald
    akari



  • Hallo,

    Bau dir doch den String für den Dateinamen vorher zusammen.

    AnsiString auftragsname(ExtractFilePath(ParamStr(0)));
    auftragsname += "Auftrag";
    int i = 0; // das ist die Zahl für den Zähler
    auftragsname += IntToStr(i);
    auftragsname += ".doc";
    

    Den String verwendest du dann in deinem CreateDocument. Du mußt nur noch die Zahl bei Bedarf erhöhen.



  • Hallo

    und ich dachte heckticker erwartet im Parameter 0 einen Zähler, den er als Kommandozeilenparameter übergeben bekommt.

    bis bald
    akari



  • Wir warten am besten auf die Meinung des OP, um rauszubekommen, was er wirklich wollte.



  • danke Braunstein war das richtige 😉 tschuldigt bin heut nicht ganz so auf dem Damm schlechtes WE gehabt 🙄

    obwohl ich da wieder zu ner anderen Frage komme den zähler müsst ich ja global definieren weil das dokumente innerhalb eines Timers erstellt wird, wo kann man denn hier die variable global definieren 😕



  • global muss nich, mach es doch als member der form (im header der form)



  • oder static innerhalb der Timerfunktion.



  • habs jetzt im header definiert funktionukelt auch stellenweise..
    wenn gleichzeitig 5 Aufträge reinkommen gibt er mir trotzdem nur einen Auftrag raus der schimpft sich dann auftrag1.doc

    for (int i=0;i<t_adverkauf->RecordCount;i++)
        {
         if(t_adverkauf->FieldByName("Druck")->AsInteger != 1)
          {
           ca = q_adverk->FieldByName("CallAgent")->AsString;
           zt = q_adverk->FieldByName("Zeitschrift")->AsString;
    
           //OLE Server init
           Variant vOLEWord;
           bool blWordStarted = InitOleServer(vOLEWord);
    
           //Dokument erzeugen und speichern
           if(!vOLEWord.IsEmpty())
            CreateDocument(vOLEWord,ExtractFilePath(ParamStr(0))+"vorlage.doc", auftragsname, false);
           //zaehler einen nachoben
           anz++;
           //Word beenden wenn von mir gestartet wurde
           if(blWordStarted) TerminateOleServer(vOLEWord);   
    
           vl_verkauf->InsertRow(ca,zt,true);           //Eintrag ValueListEditor
           t_adverkauf->Edit();
           t_adverkauf->FieldByName("Druck")->AsInteger = 1;
           t_adverkauf->Post();
          }
         t_adverkauf->Next();
        }
      q_adverk->Close();
      t_adverkauf->Close();
    


  • ok Fehler meinerseits hab verpeilt

    AnsiString auftragsname(ExtractFilePath(ParamStr(0)));
      auftragsname += "Auftrag";
      auftragsname += IntToStr(anz);
      auftragsname += ".doc";
    

    mit in die Schleife reinzunehmen funktioniert einwandfrei! Danke für die Hilfe!!


Anmelden zum Antworten