Announcement

Collapse
No announcement yet.

Datei _QSQL???.DBF

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datei _QSQL???.DBF

    Hallo,

    In Laufzeit bekomm Ich in mein Verzeichniss viel automatische .DBF Datei welcher genummert sind von _QSQL100->999. Es sind SQL DBF Datei.

    Wann dass programm beendet werde mach Ich ein generale "delete", aber
    kann Ich nicht diese Datei automatish löschen oder überhaupt die Datei auf Festplatte nicht generieren lassen?

    Danke,

  • #2
    Kein Wunder, du nutzt Zeichen im Dateinamen, die NICHT genutzt werden dürfen

    http://www.marquardtnet.info/cecke/q...quicky_24.html
    Christian

    Comment


    • #3
      @Christian: Ich glaube - nein, ich bin fast sicher, da ich dieses kenne: er meint _QSQL100.dbf ... _QSQL999.dbf
      Außerdem wieder falsches Forum, oder?

      @Quadran: Diese Dateien werden von der BDE-Engine im Arbeitsverzeichnis (siehe: Session->PrivateDir) erzeugt, wenn SQL-Abfragen über mehrere Tabellen oder mit "komplizierten" Filtern ausgeführt werden, um Zwischenergebnisse zu speichern. Demzufolge sind sie mindestens so lange im Zugriff des Programms, solange die Abfrage läuft, unschönerweise (Bug?) aber auch noch danach.

      Es ist also nicht möglich, diese Dateien nicht zu erzeugen. Aber natürlich kannst Du sie beim Beenden des Programms (sinnvollerweise möglichst weit am Ende), allerdings nach Schließen der Datenbank löschen (lassen).

      Gruß Knut

      Comment


      • #4
        Da es um Dateinamen geht habe ich es von der DB-Seite hierher verschoben.
        :-)
        Christian

        Comment


        • #5
          **OFFTOPIC** Naja, meines Erachtens geht's eben eher nicht um die Dateinamen, sondern um einen Effekt im Zusammenhang mit BDE/SQL-Abfragen, also doch Datenbank?

          Gruß Knut

          Comment


          • #6
            Na, dann wieder zurück
            Christian

            Comment


            • #7
              Entschuldigung für die Komplexe frage, aber est geht genau uber das Effekt im Zusammenhang mit BDE/SQL-Abfragen.

              Ok, dann mach Ich selbst ein routine wo die DBF Datei gelöscht wird am ende des Programms.

              Ich dachte nür dass irgendwo ein Kommando war zum automatisch löschen.
              Dass die .DBF Datei durch BDE gemacht wird war Ich schön aus.

              Comment


              • #8
                Jetz dachte Ich:

                Code:
                   DeleteFile("_QSQL*.DBF");
                das muss funkionieren, aber diese Kode macht nichts...
                Das verzeichniss ist korrekt angezeigt, da sind mehr dann 800 _QSQL.DBF Datei, aber DeleteFile macht nichts ?

                Das hilfe uber diese Kommando: "Deletes a file from disk",

                Darf Ich nicht dass "*" brauchen wie in alten DOS?

                Wass mach Ich falsh oder muss Ich ein andere Kommando nehmen ?



                Danke!

                Comment


                • #9
                  Die Wildcards funktionieren nicht in DeleteFile. Da muss der genaue Name vorgegeben werden.

                  Ggf. das ganze Verzeichnis mit SHFileOperation löschen...
                  Christian

                  Comment


                  • #10
                    ...oder eben mit FindFirst .. FindNext .. FindClose arbeiten und in der Schleife die gewünschten Dateien löschen:
                    Code:
                    TSearchRec sr;
                    if (FindFirst("MyDir\\_QSQL*.dbf", faAnyFile, sr) == 0)
                    {
                        do
                        {
                            if ((sr.Attr & faDirectory) == faDirectory)
                                continue;
                            DeleteFile("MyDir\\" + sr.Name);
                        } 
                        while (FindNext(sr) == 0);
                        FindClose(sr);               // <= muss hierher (Danke, Christian!)
                    }
                    // FindClose(sr);     // falsch!
                    Gruß Knut
                    Zuletzt editiert von Knut Lohse; 28.08.2007, 07:50. Reason: Code-Snippet korrigiert

                    Comment


                    • #11
                      Ich habe diese Kode einmahl getestet aber keine Delete ...

                      Ich habe C:\\PROGRAM FILES\\BORLAND\\CBUILDER6\\PROJECTS\\VOETBAL\\_QSQ L*.DBF eingestellt.

                      Wass mach Ich falsh ?

                      Comment


                      • #12
                        Wass mach Ich falsh ?
                        Debugge dein Programm, beobachte die Daten der Struktur und deine Variablen. Und wenn du dir den Code von Knut angesehen hättest (obwohl da ein kleiner Fehler drin ist), hättest du erkannt, dass deine Vorgabe so nicht geht
                        Zuletzt editiert von Christian Marquardt; 28.08.2007, 07:17.
                        Christian

                        Comment


                        • #13
                          Originally posted by Christian Marquardt View Post
                          ...obwohl da ein kleiner Fehler drin ist...
                          Danke, ist korrigiert.

                          Comment


                          • #14
                            Ähhhh, sehe ich jetzt nicht.....

                            FindFirst("MyDir\\_QSQL*.dbf",

                            müsste nach

                            FindFirst(MyDir+"\\_QSQL*.dbf


                            @Quadran

                            Preisfrage?

                            Was ist nun in MyDir zu übergeben??
                            Christian

                            Comment


                            • #15
                              Danke für Ihen Beitrage,

                              Code:
                              TSearchRec sr;
                              
                              if (FindFirst("C:\\PROGRAM FILES\BORLAND\\CBUILDER6\\PROJECTS\\VOETBAL\\_QSQL*.dbf", faAnyFile, sr) == 0)
                              {
                                  do
                                  {
                                      if ((sr.Attr & faDirectory) == faDirectory)
                                          continue;
                                      DeleteFile("C:\\PROGRAM FILES\BORLAND\\CBUILDER6\\PROJECTS\\VOETBAL\\" + sr.Name);
                                  }
                                  while (FindNext(sr) == 0);
                              }
                              FindClose(sr);
                              Ich habe diese Kode ohne Mydir und funkioniert nicht.

                              Comment

                              Working...
                              X