Announcement

Collapse
No announcement yet.

Prior - BOF, Next - EOF; MovePrevious, MoveNext ?

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

  • Prior - BOF, Next - EOF; MovePrevious, MoveNext ?

    Hallo,

    ich habe folgende Probleme:

    <b>1. Problem</b>

    Ich versuche durch Anklicken des entsprechendem Button den Datenzeiger nach vorne oder zurück zu positionieren (".RST.<b>Next</b>" und ".RST.<b>Prior</b>"). Es klappt bis zum letzten oder ersten Datensatz. Trotz einer Abfrage von <b>.EOF</b> oder <b>.BOF</b> löst durch ein erneutes Anklicken eine Exception aus.

    <p>
    -- z.B.: Routine für Next --

    DModule.ADO_TADRESSE.Recordset.MoveNext;<br>
    if DModule.ADO_TADRESSE.Recordset.EOF then<br>
    DModule.ADO_TADRESSE.Recordset.MoveLast;

    --
    </p>

    <b>2. Problem</b>

    Warum funktioniert bei mir die Funktionen <b>MovePrevious</b>, <b>MoveNext </b>, <b>MoveFirst</b>, <b>MoveLast</b> nicht ? Der Datensatz-Zeiger verändert seine Position nicht (in der Sicht von TDBGrid oder TDBEdit's).

    Gruss
    Adi

  • #2
    Hallo,

    ich kann die geschilderten Probleme nicht nachvollziehen. Da kein Hinweis auf die verwendete Datenbank ersichtlich war, verwende ich im folgenden Beispiel eine SQL Server 2000-Datenbank:

    <b>DFM:</b>
    <pre>
    object Form1: TForm1
    Left = 215
    Top = 107
    Width = 492
    Height = 319
    Caption = 'Form1'
    Color = clBtnFace
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = []
    OldCreateOrder = False
    PixelsPerInch = 96
    TextHeight = 13
    object ButtonFirst: TButton
    Left = 112
    Top = 16
    Width = 75
    Height = 25
    Caption = 'First'
    TabOrder = 0
    OnClick = ButtonFirstClick
    end
    object ButtonNext: TButton
    Left = 192
    Top = 16
    Width = 75
    Height = 25
    Caption = 'Next'
    TabOrder = 1
    OnClick = ButtonNextClick
    end
    object ButtonPrior: TButton
    Left = 272
    Top = 16
    Width = 75
    Height = 25
    Caption = 'Prior'
    TabOrder = 2
    OnClick = ButtonPriorClick
    end
    object ButtonLast: TButton
    Left = 352
    Top = 16
    Width = 75
    Height = 25
    Caption = 'Last'
    TabOrder = 3
    OnClick = ButtonLastClick
    end
    object DBGrid1: TDBGrid
    Left = 8
    Top = 56
    Width = 425
    Height = 153
    DataSource = DataSource1
    TabOrder = 4
    TitleFont.Charset = DEFAULT_CHARSET
    TitleFont.Color = clWindowText
    TitleFont.Height = -11
    TitleFont.Name = 'MS Sans Serif'
    TitleFont.Style = []
    end
    object ADOConnection1: TADOConnection
    Connected = True
    ConnectionString =
    'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initi' +
    'al Catalog=Northwind;Data Source=(local);Use Procedure for Prepa' +
    're=1;Auto Translate=True;Packet Size=4096;Workstation ID=SOLO915' +
    '0;Use Encryption for Data=False;Tag with column collation wh' +
    'en possible=False'
    LoginPrompt = False
    Provider = 'SQLOLEDB.1'
    Left = 8
    Top = 16
    end
    object ADODataSet1: TADODataSet
    Active = True
    Connection = ADOConnection1
    CursorType = ctStatic
    CommandText = 'select RegionID, RegionDescription from Region'
    Parameters = <>
    Left = 40
    Top = 16
    end
    object DataSource1: TDataSource
    DataSet = ADODataSet1
    Left = 72
    Top = 16
    end
    end
    </pre>
    <b>Pas:</b>
    <pre>
    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    Grids, DBGrids, StdCtrls, Db, ADODB;

    type
    TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    ADODataSet1: TADODataSet;
    DataSource1: TDataSource;
    ButtonFirst: TButton;
    ButtonNext: TButton;
    ButtonPrior: TButton;
    ButtonLast: TButton;
    DBGrid1: TDBGrid;
    procedure ButtonFirstClick(Sender: TObject);
    procedure ButtonNextClick(Sender: TObject);
    procedure ButtonPriorClick(Sender: TObject);
    procedure ButtonLastClick(Sender: TObject);
    private
    { Private-Deklarationen }
    public
    { Public-Deklarationen }
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.DFM}

    procedure TForm1.ButtonFirstClick(Sender: TObject);
    begin
    ADODataSet1.First;
    end;

    procedure TForm1.ButtonNextClick(Sender: TObject);
    begin
    ADODataSet1.Next;
    end;

    procedure TForm1.ButtonPriorClick(Sender: TObject);
    begin
    ADODataSet1.Prior;
    end;

    procedure TForm1.ButtonLastClick(Sender: TObject);
    begin
    ADODataSet1.Last;
    end;

    end.
    </pre&gt

    Comment

    Working...
    X