Главная страница
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.053 c
2-1163930968
Max.66RUS
2006-11-19 13:09
2006.12.10
Вопрос по буферу обмена...


9-1139701704
Bogdan1024
2006-02-12 02:48
2006.12.10
Armed Man v1.07 Last Call


8-1146395580
Gumus
2006-04-30 15:13
2006.12.10
Popupmenu


15-1164037430
oldman
2006-11-20 18:43
2006.12.10
А вот зато как наши девушки бразильянок обули!!!


3-1159512584
vodvorezlaya
2006-09-29 10:49
2006.12.10
Трёхмерные таблицы