Форум: "Начинающим";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];
ВнизЗапись данных в таблицу Найти похожие ветки
← →
Уважаемый Ламер (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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.044 c