среда, 27 ноября 2013 г.

[SQLite] Отображение данных SQLite в DBGrid (Способ 1)

После Delphi 7, не смог сразу отобразить данные из базы SQLite в 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

Комментариев нет:

Отправить комментарий