После Delphi 7, не смог сразу отобразить данные из базы SQLite в DBGrid. Необходимы дополнительные манипуляции.
В проекте который я пишу, мне нужно просто просматривать данные из базы в виде таблицы. Сделаем это. Есть несколько способов.
На форме у нас есть уже
Устанавливаем свойство Active в True.
У DataSetProvider устанавливаем DataSet = SQLQuery1
У ClientDataSet1 устанавливаем ProviderName = DataSetProvider1, Active=True
У DataSource устанавливаем DataSet = ClientDataSet1
И наконец у DBGrid устанавливаем DataSource = DataSource1
Связать можно и кодом, например в отдельной процедуре.
procedure LinkDBGridToBase;
begin
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Text :='SELECT * FROM '+TableOfBase;
SQLQuery1.Open;
DataSetProvider1.DataSet := SQLQuery1;
ClientDataSet1.ProviderName := 'DataSetProvider1';
ClientDataSet1.Active := true;
DataSource1.DataSet := ClientDataSet1;
DBGrid1.DataSource := DataSource1;
end;
Обратите внимание, ClientDataSet1.ProviderName является строковым параметром.
P.S. Если в полях отображается (WIDEMEMO), есть пару решений. См. Борьба с (WIDEMEMO) в DBGrid
В проекте который я пишу, мне нужно просто просматривать данные из базы в виде таблицы. Сделаем это. Есть несколько способов.
Способ 1. Используем провайдер
На форме у нас есть уже
- DBServer(TSQLConnection),
- SQLQuery1(TSQLQuery).
Они связаны и настроены (см. Подключаемся к базе данных (Delphi XE3 + SQLite3)).
Кроме этого необходимо задать запрос на отображение всех данных. У свойства SQL компонента SQLQuery1 прописываем следующую строку
SELECT * FROM myBid;<myBid> - имя таблицы в базе.
Устанавливаем свойство Active в True.
Кидаем на форму DBGrid. Как я уже писал, просто так не получится его прикрутить. Необходимо использовать провайдер. Для этого нам потребуется несколько компонентов:
- DataSetProvider1(TDataSetProvider),
- ClientDataSet1(TClientDataSet),
- DateSource(TDateSource).
У DataSetProvider устанавливаем DataSet = SQLQuery1
У ClientDataSet1 устанавливаем ProviderName = DataSetProvider1, Active=True
У DataSource устанавливаем DataSet = ClientDataSet1
И наконец у DBGrid устанавливаем DataSource = DataSource1
Можно все сделать в дизайнере, сразу увидите результат. Единственное, что при изменении данных в базе, чтоб они изменились в таблице DBGrid (в режиме дизайнера) надо выключить и включить ClientDataSet1.
Связать можно и кодом, например в отдельной процедуре.
procedure LinkDBGridToBase;
begin
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Text :='SELECT * FROM '+TableOfBase;
SQLQuery1.Open;
DataSetProvider1.DataSet := SQLQuery1;
ClientDataSet1.ProviderName := 'DataSetProvider1';
ClientDataSet1.Active := true;
DataSource1.DataSet := ClientDataSet1;
DBGrid1.DataSource := DataSource1;
end;
Обратите внимание, ClientDataSet1.ProviderName является строковым параметром.
P.S. Если в полях отображается (WIDEMEMO), есть пару решений. См. Борьба с (WIDEMEMO) в DBGrid
Комментариев нет:
Отправить комментарий