Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.049 c
2-1163945821
windows
2006-11-19 17:17
2006.12.10
Определеить Handle процесса


15-1163838143
SerJaNT
2006-11-18 11:22
2006.12.10
aDSL модем


6-1152780857
alex_dorin
2006-07-13 12:54
2006.12.10
сервер сокетов


15-1164214148
Andy BitOff
2006-11-22 19:49
2006.12.10
Не сочтите зп рекламу, но ...


11-1140363073
NightLord
2006-02-19 18:31
2006.12.10
Kol and Vcl





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский