Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Сокровищница
  
 

Фильтр по датам

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  15:09[Войти] | [Зарегистрироваться]

База данных без BDE

Григорий
дата публикации 17-09-2004 17:42

База данных без BDEПосвящается "старым программистам", которым переходить на Д6 - нет смысла, а в Д7 - нет QReport.

Вы мечтаете о базе данных, которую можно копировать вместе с экзешкой в любое место и, при этом, не устанавливать BDE на каждом компьютере? Наверняка, Вы читали о технологии Midas, но не до конца - вам этого не нужно было. Зря остановились на полпути - осуществление мечты было совсем рядом.

90% того, что мы здесь будем делать, вы делали много раз с популярным компонентом TTable, но на этот раз, вместо него, воспользуемся компонентом TClientDataSet из закладки Midas в палитре компонентов. Давайте создадим простейшее приложение, в котором будет база данных. Это может быть обычный прайс-лист с полями: Товар, Оптовая цена, Розничная цена.

Создайте новое приложение. На форму посадите DataSource1, ClientDataSet1, DBGrid1 и DBNavigator1. DataSource1 свяжите с ClientDataSet1, как обычно связывают DataSource с Table. DBGrid1 и DBNavigator1 свяжите с DataSource1. Как видите - почти, ничего нового. Свойства и методы компонента TClientDataSet, процентов на 90, совпадают со свойствами и методами компонента TTable, но свойств DatabaseName и TableName здесь нет. Здесь есть свойство FileName, где нужно указывать имя файла нашей базы данных с расширением cds. Например: ProbaDB.cds. Когда мы работали с компонентом TTable, то файлы базы данных создавали с помощью DateBase Desktop. Здесь мы пойдем другим путем.

Сделайте двойной клик по ярлыку компонента ClientDataSet1, в открывшемся редакторе полей, нажмите правую клавишу и выберите New field. Присвойте имя первому полю и укажите тип - String. Таким же образом создайте поля для обеих цен, но тип поля укажите Float. Когда укажите все поля нашего файла, то щелкните правой клавишей по ярлыку компонента ClientDataSet1 и укажите Create file. Еще раз щелкните правой клавишей по ярлыку компонента ClientDataSet1 и укажите Save to file. Присвойте файлу имя: ProbaDB.cds.

Если вы все сделали правильно, то можете выполнить эту программу и убедиться, что эта программа полностью работоспособна. Файл ProbaDB.cds должен быть в папке, в которой находится экзешка. В эту же папку скопируйте библиотеку Midas.dll, она находится на вашем компьютере в папке C:\WINDOWS\SYSTEM. Скопируйте эту троицу на любой компьютер, где не установлен BDE и убедитесь, что он не нужен. Библиотека Midas.dll должна быть в папке SYSTEM, так пишут в учебниках, но это не совсем так - она может быть в папке, где находится экзешка. Весь ваш дистрибутив поместится на одну дискету с большим запасом. Установка будет производиться обычным копированием, как в старом, добром Досе.

Молодняк говорит, что начиная с Д6 не нужно уже копировать и библиотеку Midas.dll, но нам, ветеранам, не лень, ведь, копирнуть один лишний файлик?

Если стандартные базы данных вы можете просматривать DateBase Desktop'ом, то файлы *.cds он <не берет>. Для этого рекомендую написать простейшую программу.

Создайте новый проект и посадите на форму все компоненты из предыдущего примера, но не создавайте никаких полей, только свяжите их. Добавьте диалоговый компонент OpenDialog1 для открытия файлов. Создайте процедуру обработки события формы OnActivate и вставьте в нее такой код:

procedure TForm1.FormActivate(Sender: TObject);
begin
   if OpenDialog1.Execute then begin
      ClientDataSet1.FileName:=OpenDialog1.FileName;
      ClientDataSet1.Open;
   end;
end;

Вы получите универсальную программу для просмотра и редактирования любых файлов *.cds. Если посидеть пару деньков, то можно написать полноценный заменитель DateBase Desktop'а.

Надеюсь, что после этого вы раскроете учебник на главе "Распределенные многозвенные приложения и технология DataSnap", дочитаете эту главу до конца и узнаете много интересного.

P.S.

Недавно, я купил CD с городским телефонным справочником. База данных сидит в нескольких DBF-файлах и при инсталляции происходит установка, всеми любимого, BDE очень древней версии. Хорошо, что я чуть-чуть в этом что-то понимаю и не установил его. А если бы программист, который творил сей продукт, знал о существовании компонента ClientDataSet?




Смотрите также материалы по темам:
[TClientDataSet]

 Обсуждение материала [ 17-04-2009 03:58 ] 42 сообщения
  
Время на сайте: GMT минус 5 часов

Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
Функция может не работать в некоторых версиях броузеров.

Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

 
© При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
Все используемые на сайте торговые марки являются собственностью их производителей.

Яндекс цитирования