AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

RecNo gibt ergibt immer -1

Ein Thema von HolgerCW · begonnen am 19. Mai 2021 · letzter Beitrag vom 20. Mai 2021
Antwort Antwort
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#1

RecNo gibt ergibt immer -1

  Alt 19. Mai 2021, 16:19
Delphi-Version: XE7
Hallo zusammen,

ich versuche im MouseUp Ereignis die Zeilennummer zu speichern:

var

Grd: TDBGrid;
FirstPosMouse: Integer;

begin
FirstPosMouse := Grd.DataSource.DataSet.RecNo;

RecNo liefert aber immer -1 ? Warum ? Was braucht Ihr noch für Infos ?

Gruss

Holger

Folgenden Code will ich zum laufen bringen: (Beim DBGrid durch Shift+Mouseklick einen Bereich markieren)

Code:
procedure TFormT.DBG_UWMouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  LastPos: Integer;
  TempBookmark: Integer;
  Grd: TDBGrid;
begin


 Grd := TDBGrid(Sender);

  if (Shift = [ssShift]) and (Button = mbLeft) and (dgMultiSelect in Grd .Options) and (FirstPosMouse > 0) then
  begin

   LastPos := Grd.DataSource.DataSet.RecNo;

   with Grd.DataSource.DataSet do
   begin

    DisableControls;
    Grd.DataSource.DataSet.MoveBy(FirstPosMouse - LastPos);

    repeat

     Grd.SelectedRows.CurrentRowSelected := True;
     if (FirstPosMouse < LastPos) then
      Next
     else
      Prior;

     TempBookmark := Grd.DataSource.DataSet.RecNo;

    until (TempBookmark = LastPos);

     EnableControls;

    end;

  end
  else

  FirstPosMouse := Grd.DataSource.DataSet.RecNo;
 
end;
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#2

AW: RecNo gibt ergibt immer -1

  Alt 19. Mai 2021, 16:25
Unterstützt denn das verwendete DataSet überhaupt RecNo?

Data.DB.TDataSet.RecNo
Zitat:
As implemented in TDataSet, the value of RecNo is always -1.
...
RecNo defines a property for derived datasets that support record numbers.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#3

AW: RecNo gibt ergibt immer -1

  Alt 20. Mai 2021, 07:42
Hallo,

das habe ich mir auch schon irgendwie gedacht.

Ich nutze TDataSource und daran TQuery

Gibt es eine andere Möglichkeit um den Code zum laufen zu bekommen ?

Gruss

Holger
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.368 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: RecNo gibt ergibt immer -1

  Alt 20. Mai 2021, 07:53
Gibt es eine andere Möglichkeit um den Code zum laufen zu bekommen ?
Indem du echte Bookmarks verwendest. Es gibt den Typ TBookmark. Der Umgang damit ist sehr einfach. Da sollte dir ein Blick in die Delphi-Hilfe genügen.
Hier ein Beispiel:
http://docwiki.embarcadero.com/CodeE...kmark_(Delphi)
Da wird zwar mit with gearbeitet, aber das kann man ja mal ignorieren.
Im Beispiel fehlt allerdings noch ein FreeBookmark.
Peter

Geändert von Jasocul (20. Mai 2021 um 07:58 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: RecNo gibt ergibt immer -1

  Alt 20. Mai 2021, 07:56
Hallo,
Zitat:
Ich nutze TDataSource und daran TQuery
Und woran hängt die TQuery?
Das ist das entscheidende Detail.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.368 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: RecNo gibt ergibt immer -1

  Alt 20. Mai 2021, 08:47
Was hoika meint, ist die Frage nach der Datenbank, die du verwendest.

Du bekommst von einigen Datenbanken die Information RecNo und RecordCount nicht korrekt geliefert. Teilweise gar nicht. Daher auch der Wert -1.

Man kann sich mit Tricks behelfen (Calculated Fields) aber das sind auch nur krücken. Spätestens, wenn der Anwender die Sortierung verändert oder Filter setzt, geht das nach hinten los.

Kurz gesagt, auf die Info RecNo und RecordCount kannst du dich nicht verlassen, außer du nutzt eine Datenbank, von der du weißt, dass es immer funktioniert. Bei sogenannten Desktop-Datenbanken (z.B. Paradox) ist das in der Regel so.

Es gibt allerdings TDataSets, die das dann auch bei den "problematischen" Datenbanken unterstützen. Aber wenn du auf Nummer sicher gehen willst, wähle einen anderen Weg für die Lösung deines Problems.
Peter
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#7

AW: RecNo gibt ergibt immer -1

  Alt 20. Mai 2021, 09:17
Ich verwende die Datenbank Oracle und an der stelle noch die BDE.

TBooksmark würde also gehen ? Kann mich da jemand etwas anstupsen und mir helfen wie ich den Codes anstatt Recno's in Bookmarks ändere, oder anders ?

Im Endeffekt brauche ich eine Lösung für Mausklick+Shift im DBGrid Datensätze markieren.

Gruss

Holger
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz