Autor Beitrag
nonni
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34



BeitragVerfasst: Sa 21.06.03 00:10 
Hallo,
also ich habe in einem dbGrid Daten drin und markiere mehrere Felder jetzt will ich nacheinander aus einer Spalte die Daten auslesen.
Mit:
ausblenden Quelltext
1:
dbGrid.SelectedRows.Count					

kriege ich die anzahl der ausgewählten Felder
mit Query.FieldByName('***').Asstring
lese ich nur das letzte ausgewälte Feld.
Ich muss also den Zeiger zum nächsten positionieren und dann auslesen.
Kann mir hierbei einer helfen?
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Sa 21.06.03 14:57 
hallo nonni!

sieh dir mal --> das an. vielleicht findest da was passendes.

mfg, stefan
nonni Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34



BeitragVerfasst: Sa 21.06.03 19:01 
danke ich probiere das mal aus.
Nikola
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 55

Win 3.11, Win 98, Win 2000, Win XP
D 1.0 C/S, D6 Prof. 2005 Prof.
BeitragVerfasst: Sa 21.06.03 20:13 
Hallo,

ausblenden Quelltext
1:
2:
3:
4:
5:
  Query.First;     // positioniert auf den ersten Datensatz der Datenmenge
  Query.Last;     // positioniert auf den letzten Datensatz der Datenmenge.
  Query.Next;     // positioniert auf den nächsten Datensatz der Datenmenge
  Query.Prior;     // positioniert auf den vorhergehenden Datensatz der Datenmenge.
  Query.MoveBy;(??)  // positioniert auf einen Datensatz relativ zum aktiven Datensatz in einer Datenmenge.


mfg
Nikola
nonni Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34



BeitragVerfasst: So 22.06.03 09:30 
@Nikola: ich möchte nicht direkt zum nächsten Satzt sondern zun nächsten in DBGrid markierten Satz.
Grayfox hat schon richtig verstanden.
nonni Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34



BeitragVerfasst: So 22.06.03 23:09 
kann mir einer sagen was hier falsch ist?
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
  with dbGrid1.DataSource.DataSet do <--Kann mir einer sagen was hier passiert?
  begin
    First;
    DisableControls;
    try
      while not EOF do
      begin
        if (dbGrid1.SelectedRows.CurrentRowSelected = True) then
        begin
          Showmessage('Hallo'); <--nur zur probe
        end;
        Next;
      end;
    finally
      EnableControls;
    end;
  end;


Beim Kompilieren tritt kein Fehler auf aber wenn ich 2 spalten markiere und dann das Button drücke das dieses code ausführen soll dann komm ein Fehler der klasse EAccsesViolation auf.
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Mo 23.06.03 18:27 
hallo nonni!

also bei mir funktionierts und es stürzt nix ab. der fehler liegt also nicht im programmcode.

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
unit Mainprog;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, DBTables, StdCtrls, ExtCtrls, DBCtrls, Grids, DBGrids;

type
  TForm1 = class(TForm)
    Table1: TTable;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    DBNavigator1: TDBNavigator;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not table1.active then
    table1.open;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  table1.close;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  close;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  Memo1.Lines.Clear;
  with dbGrid1.DataSource.DataSet do begin
    DisableControls;
    First;
    while not EOF do begin
      if dbGrid1.SelectedRows.CurrentRowSelected then
        Memo1.Lines.Add(IntToStr(RecNo));
      Next;
    end;
    First;
    EnableControls;
  end;
end;

end.


Zitat:

with dbGrid1.DataSource.DataSet do <--Kann mir einer sagen was hier passiert?


na was kann wohl der dataset nur sein, der über die datasource mit dem dbgrid verbunden ist?
richtig! dein angezeigter datensatz im grid.
auch beim programmieren darf man ein bisserl fantasie haben ;)

Zitat:

... wenn ich 2 spalten markiere ...


ich dachte immer, dass wir von datensätzen reden, die du markieren willst? spalten sind von oben nach unten und datensätze von links nach rechts. stimmts?

mfg, stefan