Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.08.2015, 01:46
Kaktuz Kaktuz вне форума
Начинающий
 
Регистрация: 30.10.2011
Сообщения: 149
Репутация: 10
По умолчанию БД файлов с описанием

Доброго времени суток. Делаю большой проект (для меня он большой и сложный) и так получилось что необходимо подключать БД, так как данных будет много. Создал БД и две таблицы. В первой таблице должен быть список файлов. При запуске функция сканирует каталог и необходимо это записать в таблицу без повторяемых записей при следующем запуске.
http://hexadecimal.url.ph/db.7z

Последний раз редактировалось Kaktuz, 28.08.2015 в 01:50.
Ответить с цитированием
  #2  
Старый 28.08.2015, 05:50
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Сделай временную таблицу. При запуске вставляешь записи туда. Потом просто переносишь только те записи, которых нет в основной таблице. Читать SQL по ключевому слову EXISTS.
Ответить с цитированием
  #3  
Старый 28.08.2015, 14:24
Kaktuz Kaktuz вне форума
Начинающий
 
Регистрация: 30.10.2011
Сообщения: 149
Репутация: 10
По умолчанию

Я не могу разобраться с тем как объединить Delphi и Access. Какие компоненты использовать, через какой компонент лучше добавлять / удалять / изменять данные в таблице. Как получить данные из строки таблицы и вывести их допустим в Label1. Основная масса примеров ссылаются на то что ADOConnection подключились, ADOQueri сделали запрос в DataSource и вывели в DBGrid. Но мне не нужно DBGrid это еще один объект с которым я не знаю как работать и общее изучение займет много времени. Нужно чтобы все было проще и понятнее как в PHP. Сделал запрос, получил массив запрашиваемой строки и выводи потом что и куда хочешь. Я уже недель колупаю, а результат нулевой.
Ответить с цитированием
  #4  
Старый 28.08.2015, 19:19
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Просто ничего не бывает.
ADOConnection нужен для подсоединения к БД.
ADOQuery - для выполнения SQL запросов, результатом будет набор записей (собственно, та информация, котрую ты из БД хочешь получить)
DataSource - просто посредник между набором данных и компонентами отображения.
DBGrid - это просто отображение данных.

Можно и без БД обойтись.
Создай TStringList при старте приложения и подгрузи туда из файла текущий список (если файл существует). При закрытии - сохраняешь.
В принципе, если не ошибаюсь, можно просто использовать Key-Value возможности StringList'а. Должно хватить для твоей задачи.

Код:
const
  dataFile : String = 'c:\myfile.txt';

type
  TForm1 = class(TForm)
    ...
    Lst : TStringList;
  end;
...
procedure TForm1.FormCreate(Sender : TObject);
begin
  Lst := TStringList.Create;
  If FileExists(dataFile) Then
    Lst.LoadFromFile(dataFile);
end;

procedure TForm1.FormDestroy(Sender : Tobject);
begin
  Lst.SaveToFile(dataFile);
  Lst.Free;
end;

procedure TForm1.Button1Click(Sender : TObject);
begin
  // Loop through files
    Lst.Values[filename] := 'aaa';
end;
Ответить с цитированием
  #5  
Старый 28.08.2015, 23:21
Kaktuz Kaktuz вне форума
Начинающий
 
Регистрация: 30.10.2011
Сообщения: 149
Репутация: 10
По умолчанию

Финальная задача куда более масштабная. И список файлом может достигать 5000. Я изначально так и делал, подключил TIniFile для удобства, но когда файлов стало больше 400, он перестал читать остальные. Как выяснилось это из-за маленького буфера чтения. Вроде можно увеличить, но при таком количестве файлов посоветовали использовать БД, а как не сказали)) Единственно посоветовали использовать две таблицы. Список файлов и список данных.

Таблица #1
Содержит три важных параметра
id - уникальный номер, через него будем читать данные с второй таблицы.
file - путь к файлу
condition - состояние файла

Таблица #2
id - уникальный номер для поиска
string - данные
text1 - данные
text2 - данные

Ниже привет рисунок работы, как-то так должно получить и вроде будет нормально.

При чтении хочу добавить условие. Если файла нет, спросить пользователя об удалении данных связанных с этим файлов, тоесть удалить данные с обоих таблиц. Ну и конечно удобно когда список файлов и данные будут в одном файле. Удобно переносить.
Кстати заметил такую особенность. Если тип ячейки "текст" то его длина максимум 255. Если установить тип "memo" то в delphi при отображении данных в таблице просто написано "(MEMO)". Эм... Это вообще нормально? Я не могу нормально записать строку длинее 255 символов чтоли?

Последний раз редактировалось Kaktuz, 28.08.2015 в 23:45.
Ответить с цитированием
  #6  
Старый 29.08.2015, 08:31
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну тогда читай, что я тебе ответил в первый раз и разбирайся с доступом к БД.
Ответить с цитированием
  #7  
Старый 31.08.2015, 00:09
Аватар для Kailon
Kailon Kailon вне форума
Активный
 
Регистрация: 06.06.2010
Сообщения: 339
Версия Delphi: 10.4
Репутация: 429
Сообщение

Цитата:
Сообщение от Kaktuz
Если установить тип "memo" то в delphi при отображении данных в таблице просто написано "(MEMO)".
А подключить компонент TDBMemo к полю типа Memo не подойдет? И все нормально будет отображаться.
__________________
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:13.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter