Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2015, 04:05   #1
WTFQ
 
Регистрация: 05.06.2013
Сообщений: 4
По умолчанию Добавление значения в несколько столбцов

Здравствуйте господа и извините меня за мою глупость. Мне нужно сделать приложение анкетирования студентов (тест). Имеется бд в MySQL и само приложение. Но я заступорился на одном моменте. В одной из таблиц имеется 40 столбцов с ответами + id студента, дата тестирования, семестр. Столбцы с ответвми подписаны так: Q1,Q2,Q3....Q40.
И нужно из формы, вписывая значение от 1 до 5 в один и тот - же edit (желательно) и при нажатии кнопки срабатывал некий запрос, который будет вписывать значение в Q1,Q2,Q3 и так до Q40. Препод что - то намекал на UPDATE, но добиться от него толковой помощи я не смог. Помогите пожалуйста или напишите, куда нужно копать.
WTFQ вне форума Ответить с цитированием
Старый 17.04.2015, 07:02   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Хм... Дурацкая затея... Неудачно ты поля подобрал. Хватило бы всего три поля
1) ID опрашиваемого
2) Номер вопроса
3) Ответ.

40 полей это соверщенно не по феншую. Но хозяин барин, поэтому мне ничего не остается кроме как предложить такое:
Код:
if Edit.Tag=40 then begin ShowMessage('Анкета окончена, иди ты в армию.'); halt;end;
With Query do begin
 sql.text:='update анкета set q'+Edit.Tag+'='+Edit.Text+' where id='+Чему-то;
 execsql;
end;
Edit.Tag:=Edit.Tag+1;
Или
Код:
if Edit.Tag=40 then begin ShowMessage('Анкета окончена, иди ты в армию.'); halt;end;
With Table do begin
 Edit;
 FieldByName('q'+Edit1.Tag).Value:=StrToInt(Edit1.Text);
 Post;
end;
Edit.Tag:=Edit.Tag+1;
Это если у тебя классичекий учебный грид и компонент Table.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.04.2015, 13:13   #3
WTFQ
 
Регистрация: 05.06.2013
Сообщений: 4
По умолчанию

Пишет Incompatible Types
WTFQ вне форума Ответить с цитированием
Старый 17.04.2015, 13:57   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Ну Edit.Tag в строку-то нужно преобразовать. А он вообще расставлен? И что оно этот tag знаешь?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 22.04.2015, 00:29   #5
WTFQ
 
Регистрация: 05.06.2013
Сообщений: 4
По умолчанию

Извините за столь поздний ответ и за мою глупость еще раз. Но не могли бы вы расписать, как это можно сделать

Да, и еще одна проблема. Можно сделать так, чтобы при каждом нажатии кнопки число не записывалось в новую строку, а все значения записывались в одну строку с ответами (Q1...).

P.S. Код все равно не работает. Общую работоспособность проверял сменой FieldByName('q'+Edit1.Tag) на FieldByName('q'+Edit1.Text)

P.P.S Я использую Table и DBGrid. И что значит "Учебный грид"? StringGrid что-ли?

Последний раз редактировалось Stilet; 22.04.2015 в 06:35.
WTFQ вне форума Ответить с цитированием
Старый 22.04.2015, 06:44   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
не могли бы вы расписать, как это можно сделать
А может пока не поздно брось ты это программирование? Ранновато тебе браться за проектирование баз данных, если ты даже не знаешь как пользоваться хелпом и преобразовывать числа в строку.
Расписать то можно, только все равно судя по твоему подходу ничего не получится путного.
Код:
With Table do begin
 Edit; //Говорим что хотим отредактировать запись в таблице
 FieldByName('q'+IntToStr(Edit1.Tag)).Value:=StrToInt(Edit1.Text); //Вносим значение
 Post; //Сохраняем
 Edit.Tag:=Edit.Tag+1;//Переходим к следующему полю
 if Edit.Tag=40 then begin //Если поля закончились
   Edit.Tag:=1; Начинаем опять с первого
   Next; //Но уже на новой записи.
 end;
end;
Цитата:
Можно сделать так, чтобы при каждом нажатии кнопки число не записывалось в новую строку, а все значения записывались в одну строку с ответами
Вообще не понятно что имеется ввиду...
Цитата:
Общую работоспособность проверял сменой
Пичаль... Срочно читать хелп. Мегасрочно!!!
Иначе Ю ар ин арми нау.
Ключевые слова TTable - методы IntToStr() - конверсия
Не освоишь хотя бы это дальше проще бросить проект.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление определенных столбцов foravastxxx БД в Delphi 13 28.02.2012 17:00
Добавление столбцов Word uncleau Microsoft Office Word 2 07.06.2010 18:49
Добавление группированных столбцов! Артур Иваныч Microsoft Office Excel 4 05.11.2009 17:22
Добавление столбцов! Ilnour1986 Microsoft Office Excel 2 27.10.2009 14:16
Добавление столбцов Ilnour1986 Microsoft Office Excel 1 21.10.2009 19:06