Programm schließt sich automatisch



  • Hallo zusammen,
    ich habe folgendes Problem;
    Ich habe ein Programm entwickelt , welches jede sec. via ODBC auf eine Excel Datei zugreift,benötigte Daten verarbeitet und übers LAN versendet.

    Nun ist dieses Programm auf einem FileServer installiert, jeder Benutzer des Netzwerkes muss diese Datei verändern könne.

    Und hier meine Fragen :

    1.) Kann ich an irgendeiner Schraube drehen, damit ich als Benutzer lese/schreib zugriff auf diese Datei habe, auch wenn das Programm bereits damit arbeitet?

    2.)Warum geht das Programm einfach aus? Keine Fehlermeldung... nichts.
    Ich habe mal in Internet irgenwas mit Datenbank Exception gelesen, kann ich solch ein DB-Exeption simulieren ? Könnte es noch andere bekannte Probleme geben?

    Vielen Danke



  • Nun ist dieses Programm auf einem FileServer installiert, jeder Benutzer des Netzwerkes muss diese Datei verändern könne.

    Warum muss jeder Nutzer das Programm verändern können??

    Exceptions wirft man mit throw



  • Es muss jeder die Datei verändern können.... da dort produktionsdaten drin stehen.



  • Hallo

    alle deine Probleme kannst du lösen, indem du anstatt Excel, ODBC und Dateifreigaben einen ordentlichen Datenbankserver verwendest. Es bieten sich zum Beispiel Firebird und PostgreSQL an.

    bis bald
    akari



  • Danke... es muss aber auch so gehen oder ?
    Vorallem warum schliesst sich ein Programm ohne Fehlermeldung ?
    Nun und wenn ich nicht Excel verwende muss ich den Benutzern eine GUI für den Datenbank-Server Programmieren.



  • Hallo

    Vorallem warum schliesst sich ein Programm ohne Fehlermeldung ?

    Das liegt an deinem Programm. Da du aber keinerlei Details veraten hast, können wir dazu nichts treffendes sagen.

    Nun und wenn ich nicht Excel verwende muss ich den Benutzern eine GUI für den Datenbank-Server Programmieren.

    Wenn du einen verteilten Zugriff mit mehreren Clients gleichzeitig programmieren willst, kommst du um eine saubere DB nicht drumherum. Denn unter Windows kann nunmal nur einer schreibend auf eine Datei gleichzetig zugreifen. Und viele Programme verhindern auch lesenden Zugriff, wenn eine Datei bereits schreibend geöffnet ist.

    bis bald
    akari



  • unter Windows kann nunmal nur einer schreibend auf eine Datei gleichzetig zugreifen.

    Und die Win32 API -> CreateFile mit dem Parameter dwShareMode=FILE_SHARE_WRITE??

    Solle doch gehen. Nur der Zugriff auf Excel über ODBC kann wohl nicht geshared werden (wenn der Treiber das nicht anbietet).



  • Das Problem mit dem Sharen des Excel Files bekomme ich hin..... aber das mit dem automatisch schliessen ist seltsam.

    @akari ... dass es an meinem Programm liegt ist mir bewust... nur wo....
    wenn ein programm abstürtzt kommt immer eine Fehlermeldung..... was kann es sein hast du vorschläge.... oder nachvollziehbare Beispielsituationen ?

    Danke @ all



  • Hallo

    Zuerst must du das Auftraten des Absturzes erstmal näher eingrenzen.
    Dann kannst du mit dem Debugger und selber eingefügten Logfunktionen genau den Programmverlauf und Variablenwerte verfolgen.

    Eine Fehlermeldung kommt übrigens nur, wenn sie explizit angezeigt wird.
    Auch Exception können abgefangen und übergangen werden.
    Allerdings wird spätestens bei Speicherzugriffsfehlern sich Windows je nach Version und Einstellungen sichtbar melden und das Programm zwangsweise schließen.

    bis bald
    akari



  • Morgen ;),

    das mit den Logfiles ist mir auch schon in den Sinn gekommen.... Danke



  • Hallo meine Freunde der Technik 🙂

    ich habe den Fehler gefunden.... man man man war dat ne arbeit....
    es hängt irgendwie mit der folgenden aussage zusammen :

    Form1->Database2->Connected=true;
       Form1->Query2->Active=true;
    
       while(Produkte>0&&!Form1->Query2->Eof)
    

    Sollang ich nichts an der Excel-Datei mache ist auch alles ok...
    Aber sobald ich die Datei lösche oder Sie bearbeite... bleibt die Software genau an dieser Stelle stehen und nach ca. 5 Minuten hängt sich das Programm auf 🙂

    Kommen wir nun zur lösung... wie muss ich die abfrage modifizieren so dass... wenn die Datei nicht vorhanden ist oder von einem anderem Benutzer verwendet wird dieser Programm part übersprungen wird ???

    Danke und MFG

    HeinzPeter



  • Ich würde Dir akaris Lösungsweg empfehlen...

    An der Abfrage kannst Du nichts ändern. Kannst höchstens try catch verwenden um den Fehler gezielt abzufangen. Du kannst weiterhin zuerst versuchen, die Datei schreibend zu öffnen, gelingt Dir das nicht, wird sie zur Zeit bearbeitet. Gelingt es Dir erstellst Du eine Kopie der Datei und wertest diese aus. Ist aber alles nur Frickelei, sauber wirst Du dieses Problem mit Excel nicht lösen können.


Anmelden zum Antworten