Поиск:

Ответ в темуСоздание новой темы Создание опроса
> После добавления новой строки в базе, переместитсья к последней, но быстро 
:(
    Опции темы
Rodeon
  Дата 5.10.2009, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Имеется база, через справочники с ней соединяюсь, перемещаюсь к последней строке!
Код

AdoDataSet.Active:=true;
AdoDataSet.Last;
Edit5.Text:=adodataset.Fields.Fields[54].Value;
Edit9.Text:=adodataset.Fields.Fields[53].Value;

Все бы хорошо, но она (база) обновляеться каждую секунду, т.е. появляеться новая строка, и надо каждую секунду или может как-то по другому можно, но пока датасет идет в конец базы, уже может появиться несколько новых строк!?
Как-то можно ускорить процесс этот!
Заранее спасибо за ответ!

Что за база не могу сказать, так как и сам не знаю на основе чего построена, соединение к ней идет только через справочники!
Указываю их в AdoConnection, вместе с путем к самим файлам
Первая строка файла если что, мало ли пригодиться!?
00 00 00 00 00 00 40 06 37 FF 01 00 69 20 D1 40
PM MAIL   Вверх
Данкинг
Дата 5.10.2009, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


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

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



Цитата(Rodeon @  5.10.2009,  10:19 Найти цитируемый пост)
через справочники с ней соединяюсь, 

Обычно с базами соединяются через компоненты, а не через справочники. smile 

Цитата(Rodeon @  5.10.2009,  10:19 Найти цитируемый пост)
Все бы хорошо, но она (база) обновляеться каждую секунду, т.е. появляеться новая строка, и надо каждую секунду или может как-то по другому можно, но пока датасет идет в конец базы, уже может появиться несколько новых строк!?

Ну, перемещайся в конец каждые 5 секунд...

Цитата(Rodeon @  5.10.2009,  10:19 Найти цитируемый пост)
Что за база не могу сказать, так как и сам не знаю на основе чего построена, соединение к ней идет только через справочники!

Т.е. СУБД не знаешь? smile  А строка подключения-то в AdoConnection известная хотя бы?

Цитата(Rodeon @  5.10.2009,  10:19 Найти цитируемый пост)
Первая строка файла если что, мало ли пригодиться!?
00 00 00 00 00 00 40 06 37 FF 01 00 69 20 D1 40 

Строка какого файла? Лучше открой просмотрщиком в "Тотал Коммандере" и там посмотри на первую строку. Так понятней будет.


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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

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



Цитата(Rodeon @  5.10.2009,  12:19 Найти цитируемый пост)
перемещаюсь к последней строке
каков критерий последней строки?


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Rodeon
  Дата 5.10.2009, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

каков критерий последней строки?

В смысле критерий!? Просто последняя строка! Файл формируется по порядку, т.е. в начале файла записи сделанные раньше, чем ниже в файле записи соответственно позже!
Оно то так работает все, но уж больно медленно! И это еще файл не самый большой брал, около 300 метров, бывает выростает до 1 гига и больше!
Цитата

Обычно с базами соединяются через компоненты, а не через справочники.  

Я знаю, не правильно выразился! Компоненты доступа к данным ставяться отдельно! Просто в файлах справочниках храняться наименнования всех колонок, их 254. И путь к справочникам указываеться в строке подключения!
Код

ADOConnection.ConnectionString:='Provider=IMS OLE DB Provider for DEP;Data Source='+ExtractFilePath(OpenDialog2.FileName)+';References='+Sprav_file+';Extended Properties=""';

Цитата

Ну, перемещайся в конец каждые 5 секунд...

Да в том то и дело, что перемещаеться медленно очень! А смысл всего, что бы как можно быстрее программа получила данные из базы, проанализировала их и выдала соответствующие действия!
Цитата

Т.е. СУБД не знаешь?   А строка подключения-то в AdoConnection известная хотя бы?

Строку подлючения указал выше!
Цитата

Строка какого файла? Лучше открой просмотрщиком в "Тотал Коммандере" и там посмотри на первую строку. Так понятней будет.

Это и есть первая строка файла базы! Открывал в DN.
PM MAIL   Вверх
Данкинг
Дата 5.10.2009, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


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

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



Цитата(Rodeon @  5.10.2009,  12:57 Найти цитируемый пост)
В смысле критерий!? Просто последняя строка! Файл формируется по порядку, т.е. в начале файла записи сделанные раньше, чем ниже в файле записи соответственно позже!

Ну, в том же Access данное утвеждение верным не будет. smile 

Цитата(Rodeon @  5.10.2009,  12:57 Найти цитируемый пост)
Да в том то и дело, что перемещаеться медленно очень!

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

Цитата(Rodeon @  5.10.2009,  12:57 Найти цитируемый пост)
Строку подлючения указал выше!

Не знаю, что за DEP такой...


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


Шустрый
*


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

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



Цитата

Ну, в том же Access данное утвеждение верным не будет.

Ты имеешь ввиду что данные могут быть записаны не по порядку! Ну, если про эту базу конкретно, то тут как раз данные должны быть записаны по порядку, по ключевому полю "Время сбора данных", если порядок не верный, приходиться делать сортировку!
Цитата

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

Я почему задал вопрос то! Родные клиенты к базе могут считывать ежесекундные значения, и отображать в виде графиков каждую новую секунду записанных данных! И таких клиентов сейчас вот подключено с 4-х компов! И у всех данные отображаються нормально!
Вот как они так быстро загружаються!? Причем от размера базы скорость не зависит!

Это сообщение отредактировал(а) Rodeon - 6.10.2009, 04:43
PM MAIL   Вверх
ТоляМБА
Дата 6.10.2009, 05:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


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

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



Цитата(Rodeon @  6.10.2009,  07:42 Найти цитируемый пост)
по ключевому полю "Время сбора данных"
Вот она где собака порылась!!!


Rodeon, я тоже не знаю что это за база у тебя, погули можно ли её юзать через SQL, тогда твоя проблема бы решилась более просто и корректно.
Пусть
Feild1 - Время сбора данных, Field2 - необходимые данные для вывода на экран? Table1 - таблица с данными

Код
Select TOP 1 Field1, Field2
From Table1
Order by Field1 DESC


или если не поддерживает TOP, а использует LIMIT

Код
Select Field1, Field2
From Table1
Order by Field1 DESC
LIMIT 1,1


Добавлено через 2 минуты и 46 секунд
Ну и Feild1 желательно проиндексировать конечно.

Добавлено через 4 минуты и 16 секунд
Сорри. Если оно ключевое, то итак индексировано скорее всего.
PM   Вверх
Deniz
Дата 6.10.2009, 05:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

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



Цитата(Rodeon @  6.10.2009,  07:42 Найти цитируемый пост)
по ключевому полю "Время сбора данных"
это и есть критерий.
выбирай не всю таблицу.
Код
select top 1 * from table where ... order by "Время сбора данных" desc
если СУБД не поддерживает top 1 (или что-то похожее), то
Код
select * from table t1 where t1."Время сбора данных" = (select max("Время сбора данных") from table)
надеюсь "Время сбора данных" уникально?


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Rodeon
Дата 6.10.2009, 05:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ага! Не поддерживает ни TOP 1 ни Order by!
Пробовал через AdoQuery, но там проблемма что указываю явням образом файл, откуда брать, выдает ошибку, а в ADOCommand эта же строка SQL работает!?
Код

Select Время сбора данных, Глубина забоя from time_004.dep

В AdoQuery запрос был соответственно:
Код

Select [Время сбора данных], [Глубина забоя] from time_004.dep

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

если СУБД не поддерживает top 1 (или что-то похожее), токод SQL

Ага, не поддерживает!
Цитата

если СУБД не поддерживает top 1 (или что-то похожее), то
надеюсь "Время сбора данных" уникально?

Передевал ваш запрос под свои реалии, заработало, но наоборот, выдает первую строку!? Т.е. строку с которой база начала записываться!
Код

select * from time_004.dep t1 where t1.[Время сбора данных] = select max([Время сбора данных]) from time_004.dep


Добавлено через 8 минут и 49 секунд
Блин, счас открыл базу в программе старой досовской еще! Там есть такой параметр, первым идет всегда как номер записи! С базой одновременно пишеться еще и индексный файл time_004.lst, но как с индексами работать?! Их в списке параметров нету!?
PM MAIL   Вверх
Deniz
Дата 6.10.2009, 06:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

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



Цитата(Rodeon @  6.10.2009,  08:50 Найти цитируемый пост)
Ага! Не поддерживает ни TOP 1 ни Order by!
top 1 еще понятно, но вот order by  smile 
Поскольку эту СУБД не знаю и после таких ограничений, более высказываться по данному вопросу не могу  smile 


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Rodeon
  Дата 6.10.2009, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вот так строка работает!
Код

select * from time_004.dep

И так работает
Код

select * from time_004.dep t1 where t1.[Время сбора данных] = select min([Время сбора данных]) from time_004.dep

А вот так уже нет
Код

select * from time_004.dep order by [Время сбора данных]

Выдает ошибку:
Произошла одна или несколько ошибок во время обработки команды!

Все равно всем спасибо! Счас пишу письмо разработчикам! Выпрошу у них, если получится ответ!
PM MAIL   Вверх
Rodeon
  Дата 6.10.2009, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Пока жду ответного письма от разработчиков (хотя мало на это надеюсь), ответьте пожалуйста кто-нибудь, как работать с индексами, и как они хоть выглядят (это отдельный файл или внутри самой базы) или хотя бы что искать (искал по сочетанию "База индексный файл  delphi" толку мало.
Может кто сталкивался с моей ситуацией, когда база и индексный файл расположенны в разных файлах!?
Заранее спасибо!
PM MAIL   Вверх
ТоляМБА
Дата 6.10.2009, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


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

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



Rodeon, попробуй Order By по порядковому номеру поля, может прокатит? (на большинстве БД работает)

Код
Select FieldA, FieldB, FieldC
From Table1
Order By 2


Отсортирует по FieldB
PM   Вверх
Rodeon
Дата 7.10.2009, 05:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Неа, опять выдает "Произошла одна или несколько ошибок во время обработки команды!"
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

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

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


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


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

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

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


 




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


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

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