AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datensatz-Nummer im DBGrid
Thema durchsuchen
Ansicht
Themen-Optionen

Datensatz-Nummer im DBGrid

Ein Thema von RPW · begonnen am 24. Sep 2007 · letzter Beitrag vom 27. Sep 2007
Antwort Antwort
Seite 2 von 3     12 3      
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#11

Re: Datensatz-Nummer im DBGrid

  Alt 25. Sep 2007, 07:23
Herzlich willkommen in der Delphi-PRAXiS, Ralph.

Was war nochmal der Grund warum die Eigenschaft RecNo nicht verfügbar sein sollte?

Delphi-Quellcode:
procedure TDataForm.CalcFields(DataSet: TDataSet);
begin
  with Dataset do
    FieldByName('RecNo').AsInteger := RecNo;
end;
Die per Filter ausgeblendeten Datensätze ändern nichts an der Satznummer.

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: Datensatz-Nummer im DBGrid

  Alt 25. Sep 2007, 07:40
Ich hatte ihn so verstanden, daß er laufende Nummern im Grid haben will
Markus Kinzler
  Mit Zitat antworten Zitat
SMALLID

Registriert seit: 10. Aug 2004
78 Beiträge
 
#13

Re: Datensatz-Nummer im DBGrid

  Alt 25. Sep 2007, 07:42
Genau, RecNo gibt genau das zurück, was du brauchst. Was du meintest, war sicher ein AutoIncrement Feld (ID, Pos, oder wie auch immer genannt), dass man natürlich nicht zur Anzeige nehmen kann. RecNo und RecordCount beziehen sich aber immer auf die aktuelle Menge von Datensätzen, also beachten die auch Filter etc.

Aber Achtung: Ich meine mich zu erinnern, dass es mit RecNo und RecordCount einige kleine Probleme bei der Verwendung bestimmter Datenbanken gab. Ich weiß aber leider nicht mehr, welche das waren. War auch kein schwer verbreitetes Problem, also kannst du es ruhig über RecNo machen

Hmmm, wenn natürlich nur das GRID gefiltert wird, und nicht die zugrundeliegende Table, ist das wieder was anderes, aber wieso sollte man das so machen? Filterst du die Table oder nur die Grid?
Muh
  Mit Zitat antworten Zitat
RPW

Registriert seit: 20. Feb 2006
16 Beiträge
 
#14

Re: Datensatz-Nummer im DBGrid

  Alt 25. Sep 2007, 22:15
Hi, da ist ja richtig was los früh um sieben, war leider nicht meine Zeit, deshalb reagiere ich erst jetzt. Erstmal Danke für die rege Anteilnahme....

versuche mal alles klarzustellen:

- die Datenbank wird über TTable.OnFilterRecord gefiltert
- die Daten werden im DBGrid angezeigt
- wenn z.Bsp. Datensatz 2 herausgefilter wird und ich verwende RecNo, dann ist die Nummerierung im Grid 1 3 4 5 6 ...
- das Ganze hat weniger mit der Datenbank als vielmehr mit der Nummer der Zeile im DBGrid zu tun, die ich nicht ermitteln kann

Ich suche die Nummer der aktuellen Zeile im DBGrid, egal auf welchem Datensatz sich der Fokus befindet, wenn z.Bsp. RecNo = 321 ist und der datensatz in der 234 Zeile angezeigt wird (wegen dem Filter), dann will ich diese 234 irgendwie rauskriegen.

Gruß Ralph
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#15

Re: Datensatz-Nummer im DBGrid

  Alt 26. Sep 2007, 11:47
Hallo,

das DBGrid ist auch nur ein Grid wie jedes andere ....

An die Zeilennummer kommst du so:

Delphi-Quellcode:
type
  TGridCracker = class(TDBGrid);

procedure TDataForm.DBGridDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
var
  rn: Integer;
begin
  with TGridCracker(Sender) do
    rn := Row;
  // ...
end;
Freundliche Grüße
  Mit Zitat antworten Zitat
RPW

Registriert seit: 20. Feb 2006
16 Beiträge
 
#16

Re: Datensatz-Nummer im DBGrid

  Alt 26. Sep 2007, 19:46
Hi, Marabu
danke für den Tipp, leider wird dabei nur der sichtbare Teil des Grids bedient, wenn mann scrollt, sieht man das Dilemma.
Muß wohl weiterforschen...

Gruß Ralph
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#17

Re: Datensatz-Nummer im DBGrid

  Alt 26. Sep 2007, 22:18
Hallo...

ich hätte noch einen Tip über Umwege...

-Du kannst in der Tabelle ein Feld anlegen z.B. 'Datensatznummer'.
-vor dem Anzeigen des Grids setzt du eine Variable z.B. 'Nummer' auf 1.
-in OnDrawColumCell schreibst du die Variable 'Nummer' in die Tabelle in Feld 'Datensatznummer' und erhöhst die Variable um 1

...dann hast du zu jedem gefilterten Datensatz eine laufende Nummer, welche nicht der eigentlichen
RecNo entspricht.

....ungetestet aber als Idee machbar..

[edit] ist vieleicht nicht nicht die genialste Lösung ein Tabellenfeld für die Durchnummerierung zu mißbrauchen, aber wie Du weißt ist das Grid ja datensensitiv und zeigt nur das an, was in der Tabelle vorhanden ist... [edit/]
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#18

Re: Datensatz-Nummer im DBGrid

  Alt 27. Sep 2007, 03:21
Menschenskinder, dann bastele eben eine FOR-SELECT-SP zusammen und übergebe die Ergebnismenge. Z.B. so :

SQL-Code:
CREATE PROCEDURE ERMITTLE_ALLE_DATEN_MIT_NR
RETURNS (
    NR INTEGER,
    ANZAHL INTEGER)
AS
BEGIN
  ANZAHL = 0;
FOR
  SELECT NR FROM TABLEX
  ORDER BY NR INTO :NR DO BEGIN
    ANZAHL = ANZAHL + 1;
    SUSPEND;
  END
END^
P.S.: das ist auch getestet. Die Antwort bezieht sich aber eher auf meinen Vorredner und den Vorschlag, die Tabelle unnötig aufzublähen !

P.S.2 : sehe gerade BDE. Wenn die die stored Procedure überhaupt verkraftet, dann muss die Datenmenge so abgerufen werden (Dataset.SelectSQL) : SELECT * FROM ERMITTLE_ALLE_DATEN_MIT_NR Im Delphi - Programm dann wie üblich bis EOF durchwandern oder eben DBGrid.
Gruß
Hansa
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#19

Re: Datensatz-Nummer im DBGrid

  Alt 27. Sep 2007, 06:19
SPs in Paradox? Wusste gar nicht das die damals so weit waren
Markus Kinzler
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#20

Re: Datensatz-Nummer im DBGrid

  Alt 27. Sep 2007, 06:42
Gibts die echt nicht ? War sowieso nur als Denkanstoß für Fragesteller gedacht.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 17:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz