Announcement

Collapse
No announcement yet.

Probleme mit MS Access

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

  • Probleme mit MS Access

    Hallo zusammen,

    ich habe eine Problem mit MS Access. Ich schreibe ein kleine WebProgramm, welches als datenbank Access nutzt. Jetzt für ich per insert einen Satz in die Datenbank ein. Dannach wird der Benutzer, insofern der insert geklappt hat, auf die nächste Seite weitergeleitet. Auf dieser Seite wird der satz, der zuvor mit insert in die Tabelle eingefügt wurde, geprüft. Jetzt scheint das aber so schnell zu gehen, dass der Satz noch nicht in der Tabelle steht, und ich damit auf einen Fehler laufe. Was kann ich tun, um zu warten, bis Access den Satz wirklich verarbeitet hat? Hier der Code für die Datenbankanbindung:

    <pre>
    public void SQLProcessor(bool Active, string SQL)
    {
    if (fQuery != null)
    {
    fQuery.Close();
    }
    if (fConn != null && fConn.State == System.Data.ConnectionState.Open)
    {
    fCmd = new System.Data.OleDb.OleDbCommand(SQL, fConn);
    if (Active)
    {
    try
    {
    fQuery = fCmd.ExecuteReader();
    }
    catch (System.Data.OleDb.OleDbException aExp)
    {
    throw (new Exception(aExp.Message, aExp.InnerException));
    }
    }
    else
    {
    try
    {
    fCmd.ExecuteNonQuery();
    if (fCmd.Connection.State == System.Data.ConnectionState.Executing)
    {
    System.Threading.Thread.Sleep(1000);
    }
    }
    catch (System.Data.OleDb.OleDbException aExp)
    {
    throw (new Exception(aExp.Message, aExp.InnerException));
    }
    }
    fCmd.Dispose();
    fCmd = null;
    }
    }

    </pre>

  • #2
    Vermutlich gleiches Problem wie <a href="http://www.entwickler-forum.de/WebX?13@@.ee8d7d4/0>hier</a> schon beschriebe

    Comment


    • #3
      Hi,

      danke für die Antwort. Leider habe ich eine Funktion in .NET (C#) mit der ich den RefreshCache ansprechen kann. Auch eine Transaktionsgestützte Verarbeitung geht mit der JET4 leider nicht, zumindest nicht in Verbindung mit MS ACCESS. Der Zeitverzug des Schreibens beträgt derzeit ca. 1-2 Sekunden. Aber es sind auch nicht viele Daten in der DB. Daher gehe ich mal davon aus, dass mit zunehmender Datenmenge, das Ganze auch entsprechend länger dauern wird.
      Gibt des speziell in C# keine Möglichkeit zu prüfen, ob die Funktion "ExecuteNonQuery()" schon verarbeitet wurde, oder sich noch in Verarbeitung befindet?

      Gruß

      Sasch

      Comment


      • #4
        Access ist nicht für den Servereinsatz gedacht. Von daher kann man nicht zuverlässig sagen, ob die nächste neue Connection (auf der neuen Seite), die Daten schon lesen kann. Dazu braucht es einen SQL-Server, sonst ist jeder Erfolg nur zufällig und nicht für Dauer garantiert. Gerade für den Webbereich bietet sich hier die MSDE an. Diese ist kostenlos, bietet alle Funktionalitäten von MSSQL und auf dem Client braucht nichts installiert zu werden, da es ja eine WebAnwendung ist.<p>
        Eine Desktop-Datenbank hat im Web nichts zu suchen. Das Problem ist der Datenbankzugriff. Die Lese/Schreibzugriff übernimmt beim SQL-Server ein Dienst. Bei Desktop-Datenbanken bringt jeder Client seinen eigenen Schreib/Lese-Dienst mit.<p>
        Mari
        Schöne Grüße, Mario

        Comment

        Working...
        X