Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TStringList и Dataset, загнать в стринглист значения Датасет 
:(
    Опции темы
Sed0Y
  Дата 31.5.2010, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 16.1.2009

Репутация: нет
Всего: нет



у меня программа, считывает с екселя данные каждую секунду, эти данные нужно проверять с другими данными с БД, к примеру

Данные с екселя:
text='ENU' price=2.26, name='london', count=200

Данные с БД

 id = 2, text='ENU' price=2.26
 id = 3, text='UFA' price=3.16
 ....

если есть совпадение text и price происходит дальше проверка или дейсвие..

ВОпрос, что бы не держать данные с БД в Датасете как их загнать в  TStringList что бы был там ID, text, price (я пологаю, что работать с TStringList будет быстрее чем с Датасетом?) или как лучше сделать?
PM MAIL ICQ   Вверх
Данкинг
Дата 1.6.2010, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



Не понял, что ты делаешь: почему нельзя сразу проверять совпадение данных?  
Цитата(Sed0Y @  1.6.2010,  00:16 Найти цитируемый пост)
как их загнать в  TStringList 

Видимо,
Код

MyStr:=TStringList.Create;
MyStr.Add('.....');

 -как ещё загонять.
Цитата(Sed0Y @  1.6.2010,  00:16 Найти цитируемый пост)
или как лучше сделать? 

Да уж лучше поиск по таблице сделать (снова-таки не знаю, как там в твоём случае).


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Демо
Дата 1.6.2010, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Цитата(Sed0Y @  31.5.2010,  23:16 Найти цитируемый пост)
ВОпрос, что бы не держать данные с БД в Датасете как их загнать в  TStringList что бы был там ID, text, price (я пологаю, что работать с TStringList будет быстрее чем с Датасетом?) или как лучше сделать?


Вопрос в накладных расходах.

1. Если объём данных в БД очень велик (сотни тысяч записей и более), то расходы оперативной памяти и время поиска превысят выгоду отказа от БД.
При правильном проектировании БД запрос к ней на поиск единственной записи будет выполняться за десятые доли секунды.
2. Если объём данных невелик, то вполне можно использовать TStringList, а именно  его свойство - Objects
Для использования определяем структуру:

Код

PPrice=^TPrice;
TPrice=record
  id: Integer; 
  text: String; 
  price: Double;
end;



После получения набора данных из БД заполняем структуру и добавляем в список:

Код

var
  List: TStringList; //Глобальная переменная



Код

var
  p: PPrice;
begin
  List := TStringList.Create;
  while not Dataset.Eof do
  begin
    New(p);
    p^.Id := ...
    p^.Text := ...
    p^.Price := ...
    List.AddObject(IntToStr(p^.Id),p);
    Dataset.Next;
  end;



После использования не забываем уничтожить список и структуры, которые он содержит:

Код

  for i := 0 to List.Count-1 do Dispose(PPrice(List.Objects[i]));
  List.Free;


Добавлено @ 09:19
Также можно обратить свой взгляд на TObjectList, а структуры заменить на экземпляры класса.

Это сообщение отредактировал(а) Демо - 1.6.2010, 10:35


--------------------
    
PM MAIL ICQ Skype   Вверх
superVad
Дата 1.6.2010, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 4
Всего: 15



Если используешь какие то компоненты EH, RX, JVCL - то там есть компоненты, представляющие из себя датасеты без соединения к базе, хранящие все в памяти (MemoryData, MemTable).
Там можно каким то методом сразу перекачать данные и структуру из обычного датасета. Когда то давно юзал это дело.
PM MAIL   Вверх
Sed0Y
Дата 1.6.2010, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 16.1.2009

Репутация: нет
Всего: нет



2 Демо - Большое спасибо, именно это и искал

2 superVad - спасибо, посмотрю вечерком
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1278 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.