Announcement

Collapse
No announcement yet.

Setzen von Properties in ADO Connection und Recordset

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

  • Setzen von Properties in ADO Connection und Recordset

    Hallo,

    wie kann ich unter Delphi die Properties von dem ADO Connection Objekt parametrisieren die nicht von der VCL gekapselt wurden.

    Ich meine Eigenschaften wie "Update Criteria" und "Update Resync". Hier
    habe ich bis jetzt in den Delphi Komponenten noch keine Möglichkeit gefunden, diese Properties zu ändern.

    Das wäre aber für mich sehr wichtig, da ich viel mit Client Cursern arbeiten möchte und die Aktionsabfragen zum größten Teil der ADO Cursor Engine überlassen will.

    Danke, Stefan

  • #2
    Hallo,

    das folgende Beispiel für TADODataset demonstriert den Aufruf. Da TADOConnection ebenfalls die Eigenschaft Properties unterstützt, ist das Beispiel übertragbar:
    <pre>
    procedure TForm1.ADODataSet1AfterOpen(DataSet: TDataSet);
    begin
    ADODataSet1.Properties['Unique Table'].Value := 'country';
    end;
    </pre&gt

    Comment


    • #3
      das setzen soweit funktioniert. Sowie ich aber auf die nicht gekapselten Properties von ADO zugreifen bzw. setzen will bekomme
      ich eine Access Violation.

      Die Properties sind "Update Criteria" und "Update Resync". Da die
      Konstanten nicht vorhanden sind, habe ich Sie direkt mit den
      Werten setzen wollen.

      Update Resync:
      adResyncAll = 15

      Update Criteria
      adCriteriaUpdCols = 2

      Vielleicht mache ich irgendwas falsch ?

      Danke für weitere Tips, Stefa

      Comment


      • #4
        Hallo,

        wenn die Konstanten in der importierten Typbibliothek nicht aufgeführt werden, stehen sie in der verwendeten MDAC-Version auch nicht zur Verfügung. Im Microsoft Data Access Components 2.5 SDK steht in diesem Teil der Satz "<i>Works only with Cursor Service version 2.1</i>".

        In meiner importierten ADO-TLB (C:\Programme\Gemeinsame Dateien\System\ADO\msado15.dll) sind die folgenden Konstanten zu finden:
        <pre>
        // Konstanten für enum CEResyncEnum
        type
        CEResyncEnum = TOleEnum;
        const
        adResyncNone = $00000000;
        adResyncAutoIncrement = $00000001;
        adResyncConflicts = $00000002;
        adResyncUpdates = $00000004;
        adResyncInserts = $00000008;
        adResyncAll = $0000000F;

        // Konstanten für enum ADCPROP_UPDATECRITERIA_ENUM
        type
        ADCPROP_UPDATECRITERIA_ENUM = TOleEnum;
        const
        adCriteriaKey = $00000000;
        adCriteriaAllCols = $00000001;
        adCriteriaUpdCols = $00000002;
        adCriteriaTimeStamp = $00000003;
        </pre>

        Ich würde daher zuerst die TLBs neu importieren und nachschauen, ob die richtige MDAC-Version auf dem Rechner ist

        Comment


        • #5
          Hallo,

          ich habe nochmal die ADO 2.5 auf dem NT-Rechner installiert und
          erhalten aber trotzdem noch diesen Fehler.

          Vielleicht können Sie mir kurz mitteilen wie man TLBs neu importiert.

          Danke im voraus.

          PS. Oder funktioniert das setzen mit den Properities so nicht, haben Sie es schon selbst getestet

          Comment


          • #6
            Hallo,

            mit den Eigenschaften "Update Criteria" und "Update Resync" habe ich noch nicht experimentiert.

            In Delphi kann man über den Menüpunkt <b>Projekt | Typbibliothek importieren</b> die dialogunterstützte Importfunktion für Typbibliotheken aufrufen. In der Liste werden alle im System registrierten Typbibliotheken angezeigt, so dass man die ADO-Bibliotheken auswählen kann. Falls diese dort nicht auftauchen, besteht auch die Option, die Typbibliothek über einen Datei öffnen-Dialog hinzuzufügen. In diesem Fall muss die DLL C:\Programme\Gemeinsame Dateien\System\ADO\msado15.dll etc. ausgewählt werden.

            Ausserdem gibt es bei Delphi 5 das Problem, das in den ADO-Units der VCL bestimmte Interfaces anders deklariert werden als in den original importierten ADO-Typbibliothek-Units. Es kommt also auch auf die Reihenfolge in der Uses-Deklaration ab (falls Delphi beim Compilieren bestimmte Interfaces "anmeckert")

            Comment

            Working...
            X