Announcement

Collapse
No announcement yet.

ADO Recordset Optionen Problem mit Delphi 6

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

  • ADO Recordset Optionen Problem mit Delphi 6

    Weiss jemand wie der folgende Fehler beim Zugriff auf MS SQL Server 2000 mit nativem ADO und Delphi6 zu erklären ist?

    Wenn man ein ADO Recordset mit folgenden Optionen deklariert:

    aRecordset := CoRecordset.Create;
    aRecordset.CursorLocation := adUseClient;
    aCommand:=coCommand.Create;
    aCommand.CommandType:=adCMDStoredProc;
    ...
    aParam:=aCommand.CreateParameter('@RETURN_VALUE',a dInteger,adParamReturnValue,4,EmptyParam);
    aCommand.Parameters.Append(aParam);
    ...
    aRecordset.open aCommand,EmptyParam,adOpenStatic,adLockReadOnly,ad OptionUnspecified);

    meldet Delphi folgende Warnung :
    "Konstantenausdruck verletzt untere Grenzen"

    Welche Option soll man denn aber nehmen, wenn man nichts "Asynchron" ausführen möchte
    adOptionUnspecified = $FFFFFFFF;
    adAsyncExecute = $00000010;
    adAsyncFetch = $00000020;
    adAsyncFetchNonBlocking = $00000040;
    adExecuteNoRecords = $00000080;
    "ExecuteNoRecords" kann man auch nicht verwenden, wenn man ein Resultset lädt.

  • #2
    Hallo,

    die Warnung muss man an dieser Stelle einfach ignorieren, weil des Delphi mit seiner strengen Typprüfung zu genau nimmt (<i>adOptionUnspecified = $FFFFFFFF;</i>). Um diesen kosmetischen "Mangel" zu beseitigen, hilft nur eine Typumwandlung bei jedem Aufruf, wobei es 2 Alternativen gibt:

    Version 1: Typumwandlung
    <pre>
    ...
    aConnection.Open(cCS, '', '', Integer(adConnectUnspecified));
    ...
    aRS := Execute(vRowsAffected, EmptyParam, OleVariant(adOptionUnspecified));
    </pre>
    Version 2: Direktes INTEGER-Gegenstück zu $FFFFFFFF eintippen
    <pre>
    ...
    aConnection.Open(cCS, '', '', -1);
    ...
    aRS := Execute(vRowsAffected, EmptyParam, -1);

    </pre>
    &#10

    Comment

    Working...
    X