У меня есть две формы: frmMakeQuote и frmQuoteTemp.
В frmMakeQuote есть два TListboxes: lboMtrlList и lboSelectedMtrl.
lboMtrlList отображает столбец Описание продукта из базы данных.
procedure TfrmMakeQuote.FormCreate(Sender: TObject);
begin
con := TFDConnection.Create(nil);
query := TFDQuery.Create(con);
con.LoginPrompt := false;
con.Open('DriverID=SQLite;Database=C:\Users\kasio\Documents\Embarcadero\' +
'Studio\Projects\ProgramDatabase;');
query.Connection := con;
query.SQL.Text :=
'SELECT [Material Description] FROM MtrlDatabase ORDER BY MtrlID';
try
query.Open;
lboMtrlList.Items.Clear;
while not query.EOF do
begin
lboMtrlList.Items.Add(query.Fields[0].AsString);
query.Next;
end;
finally
query.Close;
end;
end;
Когда человек дважды щелкает любой «продукт» в lboMtrlList, он перемещается в lboSelectedMtrl. (В основном, он показывает выбранные «продукты».)
procedure TfrmMakeQuote.lboMtrlListDblClick(Sender: TObject);
begin
lboSelectedMtrl.Items.Add(lboMtrlList.Items.Strings[lboMtrlList.ItemIndex]);
end;
Я хочу иметь возможность отображать столбцы Product Description и Price из базы данных ТОЛЬКО для выбранных «продуктов» из lboSelectedMtrl. Они должны отображаться в TStringGrid с именем sgdMaterials в frmQuoteTemp.
Я написал что-то вроде этого:
procedure TfrmMakeQuote.performMtrlQuery;
var
i: integer;
begin
for i := 1 to frmMakeQuote.lboSelectedMtrl.ItemIndex do
begin
query.SQL.Text := 'SELECT [Material Description], Price FROM MtrlDatabase ' +
'WHERE [Material Description] = "'
+ frmMakeQuote.lboSelectedMtrl.Items.Strings[1]
+ '" ORDER BY MtrlID';
query.Open;
query.First;
end;
end;
Он не показывает никаких ошибок, но он не работает и ничего не отображает, и я знаю, что это, вероятно, совершенно неправильно.
performMtrlQuery
не пытается ничего отображать. Он просто открывает запрос. Если вы хотите отобразить данные, вам нужно либо писать в ячейки сетки строк, либо (лучше) использоватьTDBGrid
, специально предназначенный для отображения данных из набора данных. В документации Delphi есть руководства по написанию приложений для баз данных. Я настоятельно рекомендую вам пройти через них. Вы можете узнать о параметризованных запросах и элементах управления с учетом данных. - person Ken White   schedule 30.12.2015