Главная страница
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.034 c
15-1164140145
Jolik
2006-11-21 23:15
2006.12.10
Посоветуйте книгу по Delphi 2006...


2-1163750376
Kostafey
2006-11-17 10:59
2006.12.10
Вопрос про сетку DBGrid


2-1162976091
first_may
2006-11-08 11:54
2006.12.10
Директива $IFDEF


2-1164256385
denand
2006-11-23 07:33
2006.12.10
Про иконки в Tlistview


2-1164277824
mkmkm
2006-11-23 13:30
2006.12.10
Console + TNotifyEvent (... of Object)