AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datensätze bei Listview-ItemSelcet abrufen
Thema durchsuchen
Ansicht
Themen-Optionen

Datensätze bei Listview-ItemSelcet abrufen

Ein Thema von Plague · begonnen am 8. Feb 2005 · letzter Beitrag vom 9. Feb 2005
Antwort Antwort
Plague

Registriert seit: 6. Okt 2003
591 Beiträge
 
#1

Datensätze bei Listview-ItemSelcet abrufen

  Alt 8. Feb 2005, 13:50
Datenbank: Paradox • Version: 7 • Zugriff über: Query Komponente
Hallo,

nach dem ich mit
SELECT * FROM Benutzer alle Daten aus meiner Tabelle abgerufen habe, möchte ich nun mit der Auswahl über ein Listview Item die einzelnen dazugehörigen Datensätze abrufen.
Dies wollte ich zB so machen:
Delphi-Quellcode:
if Query1.FieldByName ('Archiv').AsString = '1then begin
         CheckBox4.Checked := true
Aber hier bei wird immer nur der erste Datensatz ausgegeben... Was kann ich machen, damit das funktioniert...?

Danke
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Datensätze bei Listview-ItemSelcet abrufen

  Alt 8. Feb 2005, 13:57
Hai Plague,

da ein TListView keine Datenbanksensitive-Komponente ist musst Du das alles von Hand machen. Ich mache es immer so:
Ich speichere mit über die Eigenschaft .Data eines Items den Primärschlüssel eines Datensatzes (ID-Feld). Bei einem klick auf die Zeile des ListViews führe ich ein neues SELECT aus und filtere auf die Ausgewähle ID.

Hier mal ein Beispiel wie ich es in einem Projekt gemacht habe:
Delphi-Quellcode:
procedure TFRM_Main.ShowAnreden; // Alle Anreden in einem ListView anzeigen
var
  LI: TListItem;
  LC: TListColumn;
begin
  with DataModule1.ZReadOnlyQuery1 do
  begin
    close;
    SQL.Text := 'SELECT * FROM anreden ORDER BY anrede';
    open;
    ListView1.Items.BeginUpdate;
    Listview1.Items.Clear;
    Listview1.Columns.Clear;
    LC := ListView1.Columns.Add;
    LC.Caption := 'Anrede';
    LC.Width := 150;
    LC := ListView1.Columns.Add;
    LC.Caption := 'Briefanrede';
    LC.Width := 250;
    while not (EOF) do
    begin
      LI := Listview1.Items.Add;
      LI.ImageIndex := 0;
      LI.Data := Pointer(FieldByName('id').AsInteger); // ID speichern!
      LI.Caption := FieldByName('anrede').AsString;
      LI.SubItems.Add(FieldByName('briefanrede').AsString);
      Next;
    end;
    ListView1.Items.EndUpdate;
    close;
  end;
end;
An die ID des markierten Items kommst Du dann so:
 ID := Integer(ListView1.Items[ListView1.ItemIndex].Data)
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Plague

Registriert seit: 6. Okt 2003
591 Beiträge
 
#3

Re: Datensätze bei Listview-ItemSelcet abrufen

  Alt 9. Feb 2005, 10:12
Schon mal Danke im Vorraus für deine Hilfe!

Ich habe es nun so versucht:
Delphi-Quellcode:
procedure TFrame3.ListView1SelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
var
ID : Integer;
begin
ID := Integer(ListView1.Items[ListView1.ItemIndex].Data);
Query1.Close;
Query1.SQL.Text := ('SELECT * FROM Benutzer WHERE ID='+inttostr(ID));
Query1.Open;
end;
Aber hier sagt Delphi dass es zu einer Zugriffsverletzung kommt.
Was machte ich falsch?
Gruß
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Datensätze bei Listview-ItemSelcet abrufen

  Alt 9. Feb 2005, 10:20
Hast Du der Eigenschaft "Data" auch die ID des Datensatzes zugewiesen?
Zeige mal den Code wie Du das gemacht hast.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5

Re: Datensätze bei Listview-ItemSelcet abrufen

  Alt 9. Feb 2005, 10:21
Hallo,

auf den 1. Blick sehe ich eine überflüssige Klammer um das SQL-Statement:

Versuche einmal statt
Query1.SQL.Text := ('SELECT * FROM Benutzer WHERE ID='+inttostr(ID)); dieses:

Query1.SQL.Text:=Format('SELECT * FROM Benutzer WHERE ID=%d', [ID]);
  Mit Zitat antworten Zitat
Plague

Registriert seit: 6. Okt 2003
591 Beiträge
 
#6

Re: Datensätze bei Listview-ItemSelcet abrufen

  Alt 9. Feb 2005, 10:29
Hier weise ich Data den ID Wert zu...

Delphi-Quellcode:
with Frame31 do
  begin
    Query1.Close;
    Query1.SQL.Text := 'SELECT * FROM Benutzer';
    Query1.Open;
    While not (Query1.Eof) do
    begin
      item := ListView1.Items.Add;
      item.Data := Pointer(Query1.FieldByName('ID').AsInteger);
      item.Caption := Query1.FieldByName ('Benutzer').AsString;
      item.SubItems.Add(Query1.FieldByName ('Berechtigung').AsString);
      Query1.Next;
    end;
  end;
@Gollum: Hat leider auch nicht geklappt

Gruß
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Datensätze bei Listview-ItemSelcet abrufen

  Alt 9. Feb 2005, 10:30
An welcher Stelle genau knallt es denn?
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Plague

Registriert seit: 6. Okt 2003
591 Beiträge
 
#8

Re: Datensätze bei Listview-ItemSelcet abrufen

  Alt 9. Feb 2005, 10:38
Es knallt an der Stelle, wo ich auf dem Listview einen Eintrag auswählt. Dann soll das Programm ja eine neue SQL Anfrage starten. Aber das will einfach nicht klappen. Dann kommt nur der Fehler, dass es eine Zugriffsverletzung geben hat...
Am Anfang wird das Programm ganz normal erzeugt...

Gruß
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Datensätze bei Listview-ItemSelcet abrufen

  Alt 9. Feb 2005, 10:44
Und in der Tabelle stehen bei ID auch nur Zahlen?
Setze mal einen Breakpoint auf die erste Zeile deines OnClick ereignisses.

Delphi-Quellcode:
procedure TFrame3.ListView1SelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
var
  ID : Integer;
begin
  if (Selected) then
  begin
    ID := Integer(Item.Data);
    Query1.Close;
    Query1.SQL.Text := 'SELECT * FROM Benutzer WHERE ID = '+inttostr(ID);
    Query1.Open;
  end;
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Plague

Registriert seit: 6. Okt 2003
591 Beiträge
 
#10

Re: Datensätze bei Listview-ItemSelcet abrufen

  Alt 9. Feb 2005, 10:51
Vielen Danke
Es klappt!
  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 22:00 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