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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 30.05.2011, 08:48
Аватар для SpectraL
SpectraL SpectraL вне форума
Начинающий
 
Регистрация: 19.05.2011
Адрес: Санкт-Петербург
Сообщения: 112
Версия Delphi: 10.1 Berlin
Репутация: 10
По умолчанию Delphi и база данных accdb

База данных содержит таблицу; таблица содержит десятки тысяч записей; запись содержит 5 полей.
Нужно:
1. при запуске программы, все записи таблицы загрузить в массив записей.
2. периодически, программа должна добавлять записи в таблицу.
3. отображение и ручной ввод не требуется - все автоматизировано.
Посоветуйте пожалуйста, какие компоненты лучше всего использовать? Есть предположение использовать TADOQuery, TDataSource, TDBNavigator, TDBEdit (5 штук, для 5 полей).

Последний раз редактировалось SpectraL, 30.05.2011 в 09:16.
Ответить с цитированием
  #2  
Старый 30.05.2011, 10:04
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

дык если ничего отображать не надо, а только добавлять, используйте TADOConnection + TADOCommand с INSERT или UPDATE.
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
  #3  
Старый 30.05.2011, 10:08
Аватар для TOJluK
TOJluK TOJluK вне форума
Местный
 
Регистрация: 25.02.2009
Адрес: Минск
Сообщения: 551
Версия Delphi: 2007
Репутация: 110
По умолчанию

Если ручной ввод не требуется, зачем TDBEdit? Вы, вообщем- то все компоненты и перечислили (нехватает только ADOConnection), или я не понимаю суть вопроса?
Ответить с цитированием
  #4  
Старый 30.05.2011, 10:15
Аватар для SpectraL
SpectraL SpectraL вне форума
Начинающий
 
Регистрация: 19.05.2011
Адрес: Санкт-Петербург
Сообщения: 112
Версия Delphi: 10.1 Berlin
Репутация: 10
По умолчанию

Ещё надо данные таблицы загрузить в массив. А как можно активировать выполнение запроса в компоненте TADOCommand?
Ответить с цитированием
  #5  
Старый 30.05.2011, 10:21
Аватар для SpectraL
SpectraL SpectraL вне форума
Начинающий
 
Регистрация: 19.05.2011
Адрес: Санкт-Петербург
Сообщения: 112
Версия Delphi: 10.1 Berlin
Репутация: 10
По умолчанию

Цитата:
Сообщение от TOJluK
Если ручной ввод не требуется, зачем TDBEdit?
А через какой компонент мне данные таблицы загружать?
Цитата:
Вы, вообщем- то все компоненты и перечислили (нехватает только ADOConnection)
Ну как я понимаю TADOConnection не обязателен - в TADOQuery (а также TADOCommand и вообще во всех компонентах группы dbGo) присутствует свойство ConnectionString.

Последний раз редактировалось SpectraL, 30.05.2011 в 10:26.
Ответить с цитированием
  #6  
Старый 30.05.2011, 10:24
Аватар для SpectraL
SpectraL SpectraL вне форума
Начинающий
 
Регистрация: 19.05.2011
Адрес: Санкт-Петербург
Сообщения: 112
Версия Delphi: 10.1 Berlin
Репутация: 10
По умолчанию

Цитата:
Сообщение от Assistant
дык если ничего отображать не надо, а только добавлять, используйте TADOConnection + TADOCommand с INSERT или UPDATE.
Здесь же TADOConnection не обязателен?
Ответить с цитированием
  #7  
Старый 30.05.2011, 10:31
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

ну если вам нужно ТОЛЬКО вставлять данные, то TADOCommand, а если вам нужно как-то проверять данные перед вставкой новых, то безусловно - TADOQuery (если он будет один, то TADOConnection не нужен, можно использовать ConnectionString). Расскажите подробнее, зачем нужно создавать массив с данными?
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
  #8  
Старый 30.05.2011, 10:37
Аватар для SpectraL
SpectraL SpectraL вне форума
Начинающий
 
Регистрация: 19.05.2011
Адрес: Санкт-Петербург
Сообщения: 112
Версия Delphi: 10.1 Berlin
Репутация: 10
По умолчанию

Цитата:
Сообщение от Assistant
Расскажите подробнее, зачем нужно создавать массив с данными?
Записи таблицы содержат числа, которые будут использоваться (в виде массива) для вычислений.
Ответить с цитированием
  #9  
Старый 30.05.2011, 11:26
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

а SQL запросом нельзя сразу вычислить всё что нужно? зачем память забивать массивом и т.д.? а если записей будет миллион?
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
  #10  
Старый 30.05.2011, 12:07
Аватар для SpectraL
SpectraL SpectraL вне форума
Начинающий
 
Регистрация: 19.05.2011
Адрес: Санкт-Петербург
Сообщения: 112
Версия Delphi: 10.1 Berlin
Репутация: 10
По умолчанию

Цитата:
Сообщение от Assistant
а SQL запросом нельзя сразу вычислить всё что нужно? зачем память забивать массивом и т.д.? а если записей будет миллион?
Незя... В общем мне нужно осуществить:
1. при запуске программы, запрос на выборку
Цитата:
SELECT * FROM таблица
и загрузить эти данные в массив (до следующего запуска программы этот запрос не понадобится). Далее программа работает с массивом.
2. во время выполнения программы, запрос на добавление записи
Цитата:
INSERT INTO таблица VALUES (5_значений)
Ответить с цитированием
  #11  
Старый 30.05.2011, 12:24
Аватар для SpectraL
SpectraL SpectraL вне форума
Начинающий
 
Регистрация: 19.05.2011
Адрес: Санкт-Петербург
Сообщения: 112
Версия Delphi: 10.1 Berlin
Репутация: 10
По умолчанию

Используя TADOCommand у мня запрос на добавление не получаеца, пишет "Ошибка синтаксиса в инструкции INSERT INTO".

Настройки TADOCommand:
Connection String := ...
CommandText := INSERT INTO Tablica (Pole1, Pole2, Pole3, Pole4, Pole5) VALUES (34, 45, 56, 86, 24)

Запуск запроса (при нажатии Button1):
ADOCommand.Execute;

Последний раз редактировалось SpectraL, 30.05.2011 в 12:35.
Ответить с цитированием
  #12  
Старый 30.05.2011, 12:35
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Ну собственно загрузить в массив можно так:
Код:
Var i: Integer;
    Data: Array of Integer;
begin
 SetLength(Data, AdoQuery1.RecordCount);
 while not AdoQuery1.Eof
 do begin
    Data[i] := AdoQuery1.Fields[2].AsInteger;
    AdoQuery1.Next;
    end;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #13  
Старый 30.05.2011, 12:38
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

Цитата:
Сообщение от SpectraL
CommandText := INSERT INTO Tablica (Pole1, Pole2, Pole3, Pole4, Pole5) VALUES (34, 45, 56, 86, 24)
все поля числовые? если текстовые есть, то их надо брать в одинарные или двойные кавычки.
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
  #14  
Старый 30.05.2011, 12:50
Аватар для SpectraL
SpectraL SpectraL вне форума
Начинающий
 
Регистрация: 19.05.2011
Адрес: Санкт-Петербург
Сообщения: 112
Версия Delphi: 10.1 Berlin
Репутация: 10
По умолчанию

Цитата:
Сообщение от Assistant
все поля числовые? если текстовые есть, то их надо брать в одинарные или двойные кавычки.
Pole1 - тип дата-время, остальные поля вещественного типа. Значение 2001.03.05 13:22:45 для Pole1, ни в двойных, ни в одинарных кавычках, не исправляет ошибку.
Ответить с цитированием
  #15  
Старый 30.05.2011, 13:00
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

сделайте запрос в TADOQuery:
Код:
ADOQuery1.SQL.Text := 'тут запрос полный';
ADOQuery1.SQL.SaveToFile('123.txt');
и покажите что у вас в 123.txt
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter