Autor Beitrag
jackie05
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 357



BeitragVerfasst: Sa 27.12.08 02:43 
Hallo,
ich lasse eine Verbindung zur MySQL Datenbank herstellen mit MySQL Direct, soweit funktioniert alles, jetzt möchte ich wissen, wie ich die Einträge in ListView anzeigen kann?

So kann ich die Einträge in StringGrid anzeigen:
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:
  if assigned(FResult) then begin
    if FResult.ResultType=rtStored then begin
      cr := FResult.RecNo;
      StringGrid2.RowCount := FResult.RowsCount+1;
      StringGrid2.ColCount := FResult.FieldsCount+1;
      for i:=0 to FResult.FieldsCount-1 do begin
        af := FResult.FieldDef(i)^;
        StringGrid2.cells[i+1,0] := af.Name;
      end;
      FResult.First;
      for i:=0 to FResult.RowsCount-1 do begin
        if FResult.RecNo=cr then
          StringGrid2.Cells[0,i+1] := '*'
        else
          StringGrid2.Cells[0,i+1] := '';
        for j:=0 to FResult.FieldsCount-1 do
          StringGrid2.Cells[j+1,i+1] := FResult.FieldValue(j);
        FResult.Next;
      end;
      FResult.RecNo := cr;
    end
    else begin
      StringGrid2.RowCount := 2;
      StringGrid2.ColCount := FResult.FieldsCount+1;
      for i:=0 to FResult.FieldsCount-1 do begin
        af := FResult.FieldDef(i)^;
        StringGrid2.cells[i+1,0] := af.Name;
      end;
      for j:=0 to FResult.FieldsCount-1 do
        StringGrid2.Cells[j+1,1] := FResult.FieldValue(j);
    end;
  end;


Damit werden alle Einträge in StringGrid angezeigt.

Wie könnte ich es in ListView anzeigen lassen?
Ich hab mir das mal so Überlegt:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
  ListIt := Liste2.Items.Add();
  ListIt.Caption := '';
  ListIt.SubItems.Add('Tabelle1');
  ListIt.SubItems.Add('Tabelle2');
  ListIt.SubItems.Add('Tabelle3');


Ist das irgendwie möglich?

Ich bedanke mich schonmal im Voraus.

MfG
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19313
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 27.12.08 03:16 
Genau so geht es doch auch. :nixweiss:

Du musst ja nur zum Beispiel statt
user profile iconjackie05 hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
        for j:=0 to FResult.FieldsCount-1 do
          StringGrid2.Cells[j+1,i+1] := FResult.FieldValue(j);
schreiben
ausblenden Delphi-Quelltext
1:
2:
3:
4:
        ListIt := Liste2.Items.Add();
        ListIt.Caption := FResult.FieldValue(0);
        for j := 1 to FResult.FieldsCount-1 do
          ListIt.SubItems.Add(FResult.FieldValue(j));

Bei dem StringGrid greifst du auf alle Zellen als Array zu, bei der ListView fügst du stattdessen eine neue Zeile und die Spalten hinzu. Auf die Daten greifst du aber nach wie vor genauso zu.
jackie05 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 357



BeitragVerfasst: Sa 27.12.08 04:30 
Danke Dir.

Ich habe das mit MySQL Direct gelassen und stattdessen mit ZeosLib MySQL angefangen.
Jetzt habe ich ein Problem, ich möchte nicht gleich wegen ein kleiner Fehler einen neuen Thread eröffnen und zwar, möchte ich bei der SQL Abfrage einen Like einfügen:

ausblenden Delphi-Quelltext
1:
2:
Name := PChar(ComboBox1.Text);
query := PChar('SELECT * FROM Tabelle WHERE (Name LIKE "%'+Name+'%")');


Wenn ich diese abfrage ausführe, sagt mir mein Programm, das die SQL Syntax falsch wäre.

Wieso funktioniert das nicht?

Edit: Ich habs jetzt so gemacht:
ausblenden Delphi-Quelltext
1:
query := PChar('SELECT * FROM Tabelle WHERE (Name LIKE "%'+Name+'%")');					

nun funktioniert es und Danke für die antwort.

MfG
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 27.12.08 10:19 
Du solltest Deine Abfragen parametrisieren, dann bist Du auch vor SQL-Injection geschützt.