Hi Celina
Wenn du sagst, dein Code funktioniert, sollte das eigentlich klappen:
Delphi-Quellcode:
Var
i: Integer;
Begin
// reset des ListView
With lvAnzeige
Do
Begin
Items.Clear;
Columns.Clear;
// Spalten aus der StringList als Caption der Columns
For i := 0
To pred(SelectedFields.Count)
Do
Columns.Add.Caption := SelectedFields[i];
End;
With qrMain
Do
Begin
SQL.Text :=
'
SELECT Order_Type' + #10 +
'
,Customer_Number' + #10 +
'
,Order_Number' + #10 +
'
,First_Event' + #10 +
'
,PrePrint' + #10 +
'
,Print' + #10 +
'
,BMSLogout' + #10 +
'
FROM table_ordertracking' + #10 +
'
WHERE Customer_Number Like :i_KNR' + #10 +
'
ORDER By Order_Number';
// Parse Statement um Variablen zu erkennen
Prepared := True;
// Parameterzuweisung
Parameters.ParamByName('
i_KNR').Value := edKNR.Text + '
%';
// Ausführen
Open;
If Not Eof
Then
// wurde keine Spalte gewählt werden alle Spalten der Query als "markiert" eingetragen
If SelectedFields.Count = 0
Then
For i := 0
To pred(FieldCount)
Do
SelectedFields.Add(Fields[i].FieldName);
While Not Eof
Do
Begin
// neues ListItem
With lvAnzeige.Items.Add
Do
Begin
For i := 0
To pred(SelectedFields.Count)
Do
If i = 0
Then
// erste Spalte als Caption
Caption := FieldList.Values[SelectedFields[i]]
Else
// Spalte 2-X als Subitems
SubItems.Add(FieldList.Values[SelectedFields[i]]);
End;
Next;
End;
End;
End;
Zutaten:
- eine private Variable SelectedFields :TStrings
- im OnCreate des Forms:
SelectedFields := TstringList.Create;
- im InClose:
Delphi-Quellcode:
If Assigned(SelectedFields ) Then
FreeAndNil(SelectedFields);
- vielleicht ein zweites Form, dass du modal zeigen lässt und in dem der User in einer CheckListBox die benötigten Spalten auswählen kann
Delphi-Quellcode:
Var
i: Integer;
dlgSelCols: TdlgSelCols;
Begin
// dlgSelCols = das Form mit der CheckListBox
dlgSelCols := TdlgSelCols.Create(self);
Try
With dlgSelCols Do
Begin
If ShowModal = mrCancel Then Exit;
// SL leeren
SelectedFields.Clear;
With CheckListBox1 Do
// jede markierte Spalte an die SL hängen
For i := 0 To pred(Count) Do
If Checked[i] Then
SelectedFields.Add(Items[i]);
End;
Finally
If Assigned(dlgSelCols) Then
FreeAndNil(dlgSelCols);
End;
End;
Da du die ZeosKompos verwendest, müsstest du den oberen Schnipsel etwas anpassen.
Ich hoffe mittlerweile weißt du wie man bei den Zeos Parameter verwenden kann.
Von solchen Statements kriege ich Ausschlag
'T.Customer_Number like ''' + edknr.Text + '''"%" '
Nachtrag: Den oberen Schnipsel habe ich von deinem anderen Thread kopiert und angepasst.
Das SELECT Statement war in dem Fall auch nicht das Problem (Es sollte mit jedem SELECT funktionieren).
Edit2: 5 mio. Tippfehler