Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.10;
Скачать: CL | DM;

Вниз

Запись данных в таблицу   Найти похожие ветки 

 
Уважаемый Ламер   (2006-11-21 18:33) [0]

Господа, прошу вашей помощи.
Есть Таблица вида:
 Date : TDateTime
 Id_Person : LongInt
 Hours : Integer


Это, что-то типа табеля учета рабочего времени.
Алгоритм работы программы следующий:
Пользователь выбирает нужный ему месяц, программа выполняет запрос на выборку вида SELECT * FROM Tabel WHERE Date >= xx.xx.xxxx AND Date <= xx.xx.xxxx
Затем программа проверяет количество возвращаемых записей и если их число равно нулю , то она предварительно заполняет таблицу за этот месяц нулевыми значениями INSERT INTO Tabel (Date, Id_Person, Hours) VALUES (xx.xx.xxxx, xx, 0)
Этот запрос выполняется в теле цикла вида for i := 1 to PersonsCount do
for j := 1 to DaysInAMonth do ЗАПРОС НА ДОБАВЛЕНИЕ ЗАПИСИ


Естественно данная процедура занимает очень много времени. Реально ли написать такой запрос, чтобы одновременно добавлялась не одна запись. Или подскажите более удобный вариант организации данных.


 
Desdechado ©   (2006-11-21 18:44) [1]

Можно забивать только те строки и только тогда, когда в табель вносится реальные значения, а не пустота. Это логичнее и быстрее.


 
Уважаемый Ламер   (2006-11-21 18:53) [2]

Тогда при сохранении придется сначала делать запрос на выборку и если такой записи еще нет в таблице, то делать INSERT иначе UPDATE.
Я правильно понимаю ход мыслей?

А реально соорудить базу, чтоб она так быстро не разрасталась? Или такой вариант наиболее оптимален?


 
Уважаемый Ламер   (2006-11-21 18:56) [3]

Да и всеравно при вводе данных хотя бы за 1 день, будет довольно много инсертов прогоняться, да тут еще и селект вклинивается для проверки.


 
Desdechado ©   (2006-11-21 19:29) [4]

Не понимаю, зачем в табеле делать проверки. Если запись вносится, значит ее нет. А если она показана и редактируется, значит никаких инсертовне будет.
Что значит "быстро разрасталась"? Сколько данных внесешь, на столько и разрастется. Или ты хочешь данные вносить "в никуда"?
Много инсертов за день? Сколько надо, столько и делай. Только не лепи туда пустышки.


 
Уважаемый Ламер   (2006-11-21 19:58) [5]

А если запись редактируется, тогда надо UPDATE делать.
Дело в том, что информация выводится на экран в табличном виде, где пользователь и работает с ней:

Персонал\Дата   1    2    3    4    5 .... 31
Иванов              8    8    8    8    0      8
Петров              0    8    8    8    8      0
Сидоров            0    8    8    0    8      0
...


Таблица отображается за весь месяц, мне не известно без проверки вводилась туда информация ранее или же это делается впервые. Вот отсюда и заковыка вся.


 
Desdechado ©   (2006-11-21 20:48) [6]

> в табличном виде, где пользователь и работает с ней
Если он работает на просмотр, то такой вид оправдан.
Если же он что-то редактирует, что имхо лучше сделать чуть другое представление данных.



Страницы: 1 вся ветка

Текущий архив: 2006.12.10;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.055 c
15-1164266454
wezzz
2006-11-23 10:20
2006.12.10
Вопрос по IIS


15-1163701134
Chort
2006-11-16 21:18
2006.12.10
День студента


15-1163994028
Slider007
2006-11-20 06:40
2006.12.10
С днем рождения ! 19 ноября


15-1163744578
@Ujin
2006-11-17 09:22
2006.12.10
Кто-нибудь натыкался на исходники paxScript?


2-1164272147
Bless
2006-11-23 11:55
2006.12.10
Зачем в TCustomForm.CreateNew второй параметр?