Announcement

Collapse
No announcement yet.

Could not update; currently locked.

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

  • Could not update; currently locked.

    Hallo Leute,<br>
    seit 2 Tagen schlage ich mich jetzt mit dieser Fehlermeldung herum. Mit D5 E und ADO greife ich auf eine Access97 DB zu.<br>
    Provider ist Microsoft.Jet.OLEDB.4.0. Der Fehler tritt bei folgender Zeile auf:<br>
    <pre>
    sSQL := 'DELETE FROM MPD WHERE NOT Field1 IN (' + asql + ')';
    MPT_CON.Execute(sSQL, iRows);
    </pre>
    MPT_CON ist die ADO - Connection; MPD ist eine Tabelle in der Datenbank, Field1 ist unique und primary, asql ist relativ komplex.<br>
    Es sind keinerlei Tabellen (TADODatasets) vom Programm derzeit geöffnet und auch keine anderen user drin.<br>
    Kann jemand helfen, oder ne Idee?<br>
    Hendrik

  • #2
    Hast Du schon mal probiert die SQL-Anweisung direkt in Access auszuführen? Liefert die asql-Anweisung nur eine Spalte zurück

    Comment


    • #3
      Also direkt in Access habe ich das noch nicht probiert,<br>
      die asql liefert nur eine Spalte (Field1) zurück <br>
      und sieht ungefähr so aus:
      <pre>
      aSQL:='select A.Field1';
      aSQL:=aSQL + ' from MPD A, MPD_RCT B, MPD_EFFS C';
      aSQL:=aSQL + ' where B.Field1=A.Field1 and C.Field1=A.Field1';
      aSQL:=aSQL + ' and A.MY_Revision = true';
      aSQL:=aSQL + FORMAT(' and B.IVN = %d',[F_IVN]);
      </pre>
      F_IVN ist integer und im aktuellen Fall immer 1<br>
      es schliessen sich dann noch einige einschränkende Bedingung bzgl der Tabelle C an.<br>
      Das Programm macht auch ne ganze Menge aber nach ca 3 min. kommt diese <br>
      Fehlermeldung.<br>
      Hendri

      Comment


      • #4
        Ich würde erst mal folgendes Probieren (dann können wir weiterschauen):

        Stell deine asql-Anweisung so um, daß statt einer großen where-Bedingung zur Tabellen verknüpfung alls über Joins läuft.

        SELECT A.Field1 FROM MPD A INNER JOIN MPD_RCT B ON A.Field1=B.Field1 ...

        Evtl. wird deine Abfrage über die JOINS schneller werden (hab da noch keinen Vergleich gemacht, da ich immer über JOINS gehe). Vielleicht bringt ja das schon etwa

        Comment


        • #5
          Hallo Bernhard,
          vielen Dank erstmal, aber ich muss ganz schuldbewusst die Frage zurückziehen. Ich habe mir selbst von hinten ins Knie geschossen.<br>
          Ich habe unter Delphi getestet und offenbar waren noch Datenbankverbindung und einige Tabellen aktiv. <br>
          Mit einer anderen Datenbank hat alles (wieder) funktioniert.<br>
          Das mit dem JOIN werde ich aber trotzdem probieren, vielleicht wird es wirklich schneller. <br>
          Danke Hendri

          Comment

          Working...
          X