Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
 
Bair107
2 / 2 / 1
Регистрация: 26.11.2014
Сообщений: 34
1

Добавление большого количества данных в Access

02.12.2014, 22:24. Просмотров 428. Ответов 7
Метки нет (Все метки)

Стоит задача добавления с форм больше сотни единиц данных через sql запрос. Все данные хранятся в компонентах с именами, в которых меняется только номер в конце, т.е. Edit1->Text, Edit2->Text и т.д. Реализация через параметры тоже понятна,

C++
1
2
3
ADOQuery1->SQL->Add("INSERT INTO table ([stolbec1],[stolbec2],[stolbec3],[stolbec4],[stolbec5],[stolbec6]") VALUES (:pStolbec1, :pStolbec2, :pStolbec3,:pStolbec4, :pStolbec5, :pStolbec6");
ADOQuery1->Parameters->ParamByName("pStolbec1")->Value = Edit1->Text;
ADOQuery1->Parameters->ParamByName("pStolbec2")->Value = Edit2->Text;
но при мысли какой нужно объем кода вбивать, немного плохеет=)

Подскажите, пожалуйста, можно ли как то упростить эту задачу, и запустить тоже самое через цикл что ли))), т.е. вставлять переменную в имя элемента Edit[i]->Text; =)

Или все таки придется с кучей переносов и кавычек для лучшего восприятия городить все ручками?

Заранее, большое спасибо!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2014, 22:24
Ответы с готовыми решениями:

Добавление двоичных данных в Access
Всем доброго времени суток. Начал писать одну программулину с использованием...

Добавление данных в таблицу БД Access
Народ, всем доброго дня! Я нубяра :-) Но начинаю пытаться осваивать Borland...

Визуализация большого количества точек
Нужна помощь мирового сообщества!:help: Стоит задача визуализировать...

Вывод большого количества значений в ListView
Приветствую форумчани. Загружаю файл с интернета (в переменную AnsiString) с...

вставка большого количества записей в таблицу Word
Здравствуйте. Используя OLE Word Automation, можно ли вставить в таблицу...

7
D1973
Модератор
3663 / 2641 / 1286
Регистрация: 21.01.2014
Сообщений: 11,189
Записей в блоге: 3
Завершенные тесты: 1
04.12.2014, 12:55 2
ИМХО, база ни черта на правильно спроектирована, если в одной таблице столько полей...
Да и больше сотни Едитов на форме - это прямо скажем, не айс...
0
Bair107
2 / 2 / 1
Регистрация: 26.11.2014
Сообщений: 34
04.12.2014, 14:27  [ТС] 3
edit я для примера скинул, там radiogroupы)) А база предназначена для хранения данных тестирования. 11 разделов, по 20-40 вопросов в каждом. не делить же базу на таблицы по разделам? Так и получилась таблица с больше чем сотней полей. Скорее всего, такая организация не верна, но зато я точно знаю, что в конце приду к результату и у меня это займет намного меньше времени, чем хранить все это в другом месте,другими методами и постоянно спотыкаться о недостаток знаний и опыта))
0
D1973
Модератор
3663 / 2641 / 1286
Регистрация: 21.01.2014
Сообщений: 11,189
Записей в блоге: 3
Завершенные тесты: 1
04.12.2014, 15:13 4
Цитата Сообщение от Bair107 Посмотреть сообщение
Скорее всего, такая организация не верна
Конечно неверна. Я так понял, ты делаешь тестирующую программу? Самый простой вариант тут - 2 таблицы с такими вот структурами как на рисунке
На форме 1 RadioGroup, 2 Label и 1 Button
Вопросы выбираются случайным образом, количество айтемов Радиогрупа динамически создается в зависимости от количиства ответов в таблице. По окончании тестирования выдается результат, который считается на протяжении процесса.
Записей в таблице может быть сколь угодно много, но полей-то - 2 и 3 для 1-ой и 2-ой таблиц соответственно. Но никак не больше 100

Если надо, могу набросать примерчик, только сообщи, какой билдер у тебя

Не по теме:

Цитата Сообщение от Bair107 Посмотреть сообщение
но зато я точно знаю, что в конце приду к результату
Идти-то можно разными дорогами. Можно по прямому асфальту, а можно и через ж...

1
Миниатюры
Добавление большого количества данных в Access  
Bair107
2 / 2 / 1
Регистрация: 26.11.2014
Сообщений: 34
04.12.2014, 18:03  [ТС] 5
Спасибо огромное за помощь! Но вариантов(типов) вопросов очень много. Где то присутствуют картинки, поясняющие поля для некоторых ответов(checklistbox,richedit - программой пользуется преподаватель вместе с учеником, задает вопросы, дает задания, смотрит за реакцией, скоростью ответов, количество ошибок) на основании этого забивает в систему. На выходе должен получится отчет с диаграммами в word. Вообщем я правда не представляю как это все автоматизировать правильно, но уже заморочился, вбил все компоненты на форму, организовал красиво pagecontrol. На форме ничего лишнего, все в нужный момент появляется и прячется. Тест имеет такую специфику, что менять в нем ничего не будет нужно в дальнейшем и "жесткая" привязка вопросов не навредит. Получилась красивая внешне программа, которая очень понравилась пользователю, ну а то что там куча radiogroup с поясняющими полями типа checklistbox и richedit, то это уже мелочи, если все работает шустро и не грузит систему. Конечно, без претензий на "код года")))
0
D1973
Модератор
3663 / 2641 / 1286
Регистрация: 21.01.2014
Сообщений: 11,189
Записей в блоге: 3
Завершенные тесты: 1
04.12.2014, 18:29 6
Ну, тогда вернемся к изначальному вопросу. Как я понимаю, в запросе на добавление перечислены все поля, какие там есть? И что конкретно должно в эти поля заноситься?
0
Bair107
2 / 2 / 1
Регистрация: 26.11.2014
Сообщений: 34
04.12.2014, 19:06  [ТС] 7
да, в первом разделе кнопка "След. раздел" создает в таблице запись и считывает в соответствующие поля значения с radiogroup(1 балл, 0,5 балла, 0,25 балла, и 0 баллов) в зависимости от выбранного.
Для первого раздела получилась такая запись

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
F_studselect->ADOQuery1->SQL->Clear();
F_studselect->ADOQuery1->SQL->Add("INSERT INTO tests_result ("
"[c0r1_RadioGroup1],[c0r1_RadioGroup2],[c0r1_RadioGroup3],[c0r1_RadioGroup4],"
"[c0r1_RadioGroup5],[c0r1_RadioGroup6],[c0r1_RadioGroup7],[c0r1_RadioGroup8],"
"[c0r1_RadioGroup9],[c0r1_RadioGroup10],[c0r1_RadioGroup11],[c0r1_RadioGroup12],"
"[c0r1_RadioGroup13],[c0r1_RadioGroup14],[c0r1_RadioGroup15],[c0r1_RadioGroup9_CheckListBox9],"
"[c0r1_RadioGroup10_CheckListBox10],[c0r1_RadioGroup11_CheckListBox11],[c0r1_RadioGroup12_CheckListBox12],"
"[c0r1_RadioGroup13_CheckListBox13],[c0r1_RadioGroup14_CheckListBox14],[c0r1_RadioGroup15_CheckListBox15],[c0r1procent])"
"VALUES (:pc0r1_RadioGroup1, :pc0r1_RadioGroup2, :pc0r1_RadioGroup3,"
"        :pc0r1_RadioGroup4, :pc0r1_RadioGroup5, :pc0r1_RadioGroup6,"
"        :pc0r1_RadioGroup7, :pc0r1_RadioGroup8, :pc0r1_RadioGroup9,"
"        :pc0r1_RadioGroup10, :pc0r1_RadioGroup11, :pc0r1_RadioGroup12,"
"        :pc0r1_RadioGroup13, :pc0r1_RadioGroup14, :pc0r1_RadioGroup15,"
"        :pc0r1_RadioGroup9_CheckListBox9,:pc0r1_RadioGroup10_CheckListBox10,"
"        :pc0r1_RadioGroup11_CheckListBox11,:pc0r1_RadioGroup12_CheckListBox12,"
"        :pc0r1_RadioGroup13_CheckListBox13,:pc0r1_RadioGroup14_CheckListBox14,"
"        :pc0r1_RadioGroup15_CheckListBox15,:pc0r1procent)");


плюс добавятся поля с id студента и id преподавателя, дата, время выполнения. А в остальных разделах на кнопке "След раздел" делаю обновление это записи, но только обновляю поля, которые соответствуют второму разделу и т.д.
И мне интересно было узнать, можно ли как нибудь в цилке делать эти обновления, т.к. имена данных это позволяют - они идут подряд и заранее известны. Т.е. что то вроде этого(вставить в имя компонента в коде счетчик)
C++
1
2
3
4
5
6
for (i = 1; i < kol-vo_voprosov; i++) 
    {
     if (F_tests->c0r1_RadioGroup[i]->ItemIndex==0) {
     F_studselect->ADOQuery3->SQL->Add("SET c0r1_RadioGroup[i] = '1'");
     F_studselect->ADOQuery3->SQL->Add("WHERE id=" +F_studselect->ADOQuery2->FieldByName("id")->AsString);
    }
ну и т.д. Вполне допускаю, что это бред и такого быть не может, просто интересно было узнать на будущее=)
0
Bair107
2 / 2 / 1
Регистрация: 26.11.2014
Сообщений: 34
06.12.2014, 13:20  [ТС] 8
D1973, пересилил я все таки себя, решил переработать БД. Теперь загоняю все ответы с раздела в строковую переменную с разделителями, а уже эту переменную в столбец access. Посложнее в обработке будет, но зато не так позорно смотрится))) видимо изначально так и нужно было делать, просто не продумал этот момент.
0
06.12.2014, 13:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2014, 13:20

Как за раз узнать ip-адреса большого количества доменов?
Есть, например, 20 доменов. Мне нужно за 1 секунду получить ip-адреса всех...

SQLite3 для хранения большого количества изображений( нужен совет )
Здравствуйте. Есть вопрос : насколько эффективно хранить большое...

Чтение большого объема данных
Доброго времени суток. У меня есть файлик (.тхт), в нем очень много числовых...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru