Технический форум

Технический форум (http://www.tehnari.ru/)
-   Программы и программирование (http://www.tehnari.ru/f211/)
-   -   Базы данных на Delphi (http://www.tehnari.ru/f211/t2942/)

VipeR 03.11.2010 09:26

нет, bde не обязателен

MrSTEP 03.11.2010 14:27

А как тогда обойтись, что нужно скопировать?

vasilych 12.12.2013 00:38

Цитата:

Сообщение от VipeR (Сообщение 412860)
нет, bde не обязателен

Глупости. Как аббревиатура BDE расшифровывается, хотя бы, в курсе?
Без него ничего не заработает. Другое дело, что у грамотно написанного софта всегда есть инсталлятор. Большинство серьёзных сред разработки инсталляторов (вроде InstallShield) при компиляции инсталлера позволяют установкой одной галочки прикрутить к инсталлятору BDE.

Debianer 02.05.2014 05:08

Немного подниму тему.
Для создания не особо сложных баз данных порекомендую использовать такой компонент Delphi, как TClientDataSet. Бросаем компонент на форму, создаем таблицу, сохраняем ее или в формате .cds или в формате .xml.
Преимущества: небольшой размер, высокая скорость работы, нет необходимости устанавливать BDE; также нормально организуется и работает совместный доступ к базе (например, по сети). У меня есть несколько приложений, работающих с таблицами в формате .cds
Если у кого есть интерес, могу расписать более подробно создание и работу с такими таблицами

MrSTEP 02.05.2014 09:47

Было бы интересно увидеть, пиши.

Debianer 05.05.2014 05:55

Итак, базы данных с использованием компонента TClientDataSet.
После того, как мы определились с полями таблицы, создадим ее.
Создаем новый проект, на форму бросаем TClientDataSet из вкладки Data Access, нажимаем на компоненте правкой кнопкой мыши и выбираем пункт Fields Editor.
Опять щелкаем правой кнопкой мыши в появившемся редакторе полей, и выбираем пункт "New Field". Задаем параметры создаваемого поля: его имя (Name), выбираем тип поля (Type) и, при необходимости, размер поля.
После создания необходимых полей опять нажимаем на компоненте TClientDataSet правую кнопку мыши и выбираем пункт Create Dataset, а затем Save to binary MyBase file. Сохраняем таблицу под нужным именем. При необходимости создаем дополнительные таблицы таким же образом.
Теперь перейдем к использованию созданных таблиц. Первым делом в секцию uses разрабатываемого приложения обязательно дописываем MidasLib - это позволит использовать приложение безо всяких сторонних библиотек (в противном случаем нам пришлось бы распространять приложение с библиотекой Midas.dll).
Ну а далее бросаем на форму TDataSource, TClientDataSet, связываем их. В свойствах TClientDataSet указываем путь к созданной таблице (FileName), и устанавливаем свойство Active в True. Готово.
Работать с записями можно точно также, как при использовании компонента TTable; например, для отображения записей можно подключить TDBGrid. Я делал небольшой телефонный справочник для агентства недвижимости, ниже простейший пример по добавлению записи (в моем cлучае запись добавляется из файла Excel):
cds.Append;
cds.FieldByName('FIO').AsString:=String(Sheet.Cell s[i,1]);
cds.FieldByName('Phone').AsString:=Copy(s,1,Pos(', ',s)-1);
cds.Edit;
cds.Post;


Для поиска данных можно использовать процедуру Locate:
CDS.Locate('FIO;Address;Phone',VarArrayOf(['Васечкин','Ленинская','67-55-55']),[]);

В заключение хочу сказать о некоторых преимуществах данного метода создания и использования баз данных:
- очень компактный размер. В моем случае таблица с тремя полями и кол-вом записей 2775 весит 88 Кб.
- быстрая скорость работы, за счет того, что операции производятся в ОЗУ.
- нет необходимости таскать с приложением BDE.

vasilych 05.05.2014 11:18

В данном случае СУБД состоит из двух файлов - *.exe и файла самой таблицы? Так? Приложение видит таблицу только если они в одной папке?

Debianer 05.05.2014 11:37

В простейшем случае - да, больше ничего за собой тащить не надо. Таблицу можно положить куда угодно, и подключать ее динамически. Свойство Active ставим в False, потом указываем путь к таблице, делаем Open, потом свойство Active ставим в True.

Debianer 06.05.2014 03:30

Да, маленькое дополнение: необязательно таскать ЕХЕ и таблицу. Я делал так: созданную таблицу потом пихал в файл .RES и линковал с ЕХЕ. При первом запуске делал проверку на наличие таблицы, и, если ее нет, то просто извлекал пустую таблицу из ЕХЕ, клал рядом и потом уже активировал ClientDataSet. Пустые таблички занимают ну до смешного ничтожно мало места, так что оно того стОит

vasilych 06.05.2014 10:34

Цитата:

Сообщение от Debianer (Сообщение 1030117)
Я делал так: созданную таблицу потом пихал в файл .RES и линковал с ЕХЕ

А зачем так сложно? С тем же успехом при старте exe можно проверять наличие таблицы, и в случае её отсутствия создавать со всеми необходимыми полями и свойствами.


Часовой пояс GMT +4, время: 08:44.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.