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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2015, 13:49   #1
le7o
Форумчанин
 
Регистрация: 19.05.2011
Сообщений: 116
По умолчанию Программа социологического исследования

При разработке столкнулся не которыми проблемами:
1. Ниже код который выводит в RadioGroup варианты ответа на вопрос,
в таблице варианта есть поле "тип вопроса" (0-варианты/1-свободный).
Собственно ПРОБЛЕМА в том что не отображается GroupBox2(где должен вводится вопрос при типе вопроса = 1) при выборе соответствующей записи в таблице вопросов
Код:
  RadioGroup1.Items.Clear;
  dm.QQVARIANT.First;
   while not dm.QQVARIANT.Eof do
   begin
    case dm.QQUESTIONQTYPE.Value of
     0:
       begin
         RadioGroup1.Items.Add(dm.QQVARIANT.FieldByName('VTEXT').AsString);
         RadioGroup1.Visible := true;
         GroupBox2.Visible := False;
       end;
     1:
       begin
         RadioGroup1.Visible := False;
         GroupBox2.Visible:=true;
       end;
    end;
   dm.QQVARIANT.Next;
   end;
2.

Как организовать проход по всем вопросам с ответами и уже в конечном итоге при нажатии на кнопку сохранить или отменить в зависимости от выбора - предполагаю, что здесь подойдет Record.

По второму пункту - если у кого нибудь есть пример можете поделиться?

Последний раз редактировалось le7o; 15.05.2015 в 13:52.
le7o вне форума Ответить с цитированием
Старый 15.05.2015, 14:02   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Код:
  RadioGroup1.Items.Clear;
  dm.QQVARIANT.First;
         GroupBox2.Visible := False;
         RadioGroup1.Visible := False;
   while not dm.QQVARIANT.Eof do
   begin
    case dm.QQUESTIONQTYPE.Value of
     0:
       begin
         RadioGroup1.Items.Add(dm.QQVARIANT.FieldByName('VTEXT').AsString);
         RadioGroup1.Visible := true;
       end;
     1:
       begin
         GroupBox2.Visible:=true;
       end;
    end;
   dm.QQVARIANT.Next;
   end;
Не?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.05.2015, 14:20   #3
le7o
Форумчанин
 
Регистрация: 19.05.2011
Сообщений: 116
По умолчанию

Не, не срабатывает, причем уверенность что dm.QQUESTIONQTYPE.Value = 1, на одном вопросе полная уже проверял несколько раз...
Да и от моего кода Ваши изменения отличаются только то что скрытие всего в не цикла.
Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
  RadioGroup1.Items.Clear;
  dm.QQVARIANT.First;
         GroupBox2.Visible := False;
         RadioGroup1.Visible := False;
   while not dm.QQVARIANT.Eof do
   begin
    case dm.QQUESTIONQTYPE.Value of
     0:
       begin
         RadioGroup1.Items.Add(dm.QQVARIANT.FieldByName('VTEXT').AsString);
         RadioGroup1.Visible := true;
       end;
     1:
       begin
         GroupBox2.Visible:=true;
       end;
    end;
   dm.QQVARIANT.Next;
   end;
Не?
le7o вне форума Ответить с цитированием
Старый 15.05.2015, 14:40   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Ваши изменения отличаются только то что скрытие всего в не цикла.
Тогда поясни что делает цикл. Для чего он нужен.
Я так понимаю что ты запросом берешь некий набор, где и вопросы и ответы собраны, и в зависимости от статуса, и в цикле хочешь показывать то или инное в зависимости от статуса. Так?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.05.2015, 14:46   #5
le7o
Форумчанин
 
Регистрация: 19.05.2011
Сообщений: 116
По умолчанию

Да, Вы правы я циклом прохожу по таблице и заполняю ответы на вопрос (2-е разные таблицы).
Могу исходник прикрепить если это прольет больше света на проблему?

Цитата:
Сообщение от Stilet Посмотреть сообщение
Тогда поясни что делает цикл. Для чего он нужен.
Я так понимаю что ты запросом берешь некий набор, где и вопросы и ответы собраны, и в зависимости от статуса, и в цикле хочешь показывать то или инное в зависимости от статуса. Так?
Изображения
Тип файла: jpg Скриншот 2015-05-15 15.46.01.jpg (14.9 Кб, 121 просмотров)
le7o вне форума Ответить с цитированием
Старый 15.05.2015, 14:58   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Ну прикрепи, но я пощупать его не смогу, Делфи нет под рукой.
Я бы на твоем месте вопросы и ответы поместил в отдельные таблицы, и сделал между ними связь Master-detail. Т.е. основной проход по таблице Вопросы. А связь поможет подтягивать ответы для этого теста.
Например:
Обработчик OnAfterScroll главной таблицы
Код:
 with Ответы do begin
  first; RadioGroup1.Items.clear;
  if eof then exit;
  repeat RadioGroup1.Items.Add(FieldByName('VTEXT').AsString); until not FindNext;
 end;
 GroupBox2.Label.Caption:=Вопросы.FieldByName('Текст').AsString;
Все. Тогда кнопки Далее Назад будут перепрыгивать курсором по таблице Вопросы, связь Главный-подчиненный сразу же будет отбирать ответы для текущего вопроса, и формировать Радиогруппу.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.05.2015, 15:04   #7
le7o
Форумчанин
 
Регистрация: 19.05.2011
Сообщений: 116
По умолчанию

Так оно так и есть, связь и подтягивает ответы,
просто поле "тип вопроса" находится в вопросах и соответственно проверка идет поля таблицы вопросы.
Схему БД прилагаю.

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну прикрепи, но я пощупать его не смогу, Делфи нет под рукой.
Я бы на твоем месте вопросы и ответы поместил в отдельные таблицы, и сделал между ними связь Master-detail. Т.е. основной проход по таблице Вопросы. А связь поможет подтягивать ответы для этого теста.
Например:
Обработчик OnAfterScroll главной таблицы
Код:
 with Ответы do begin
  first; RadioGroup1.Items.clear;
  if eof then exit;
  repeat RadioGroup1.Items.Add(FieldByName('VTEXT').AsString); until not FindNext;
 end;
 GroupBox2.Label.Caption:=Вопросы.FieldByName('Текст').AsString;
Все. Тогда кнопки Далее Назад будут перепрыгивать курсором по таблице Вопросы, связь Главный-подчиненный сразу же будет отбирать ответы для текущего вопроса, и формировать Радиогруппу.
Изображения
Тип файла: jpg Скриншот 2015-05-15 17.04.21.jpg (18.7 Кб, 117 просмотров)
le7o вне форума Ответить с цитированием
Старый 15.05.2015, 15:24   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Чтот не нравится мне твоя структура... Студентов к вопросам зачем привязывать?
И Qvariant это что за сушность?
И что это за тип вопроса кстати? Какие у тебя типы вопросов задуманы?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.05.2015, 15:33   #9
le7o
Форумчанин
 
Регистрация: 19.05.2011
Сообщений: 116
По умолчанию

1. STUDY - сущность исследования (в одном исследовании много вопросов)
2. Qvariant - это как раз сущность где варианты ответа на вопросы.
3. тип вопроса (QTYPE) - 0 - это как раз варианты(возможность выбора из динамического количества вариантов (QVARIANT)) и запись в таблицу ответов, 1 - здесь просто вручную вводится ответ и записывается в таблицу ответов.

Если есть идеи по структуре, прислушаюсь, я не смог придумать лучше при условии наличия динамического количества вариантов ответа и + возможность вписать ответ в ручную.

Цитата:
Сообщение от Stilet Посмотреть сообщение
Чтот не нравится мне твоя структура... Студентов к вопросам зачем привязывать?
И Qvariant это что за сушность?
И что это за тип вопроса кстати? Какие у тебя типы вопросов задуманы?
le7o вне форума Ответить с цитированием
Старый 15.05.2015, 15:49   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

По-моему сложно дюже...
Я бы сделал так:
1) Вопросы (ID Вопроса, вопрос)
2) Ответы (ID ответа, Текст ответа)
3) Опросник (ID Опроса, ID Вопроса, ID Ответа)
Все. ИМХО этих сушностей, не смотря на отсутствие уникальности ключей в Опроснике вполне хватит. Таким образом можно даже будет комбинировать для разных опросников одинаковый набор ответов и вопросов. Получается подобие много-ко-многим.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Декомпилирование кода для исследования руткитов challengerr Общие вопросы C/C++ 12 28.02.2015 05:16
Опрос для научного исследования undestroyer Свободное общение 1 26.02.2015 07:36
Опрос для магистерского исследования Mikhail87 Помощь студентам 11 12.02.2015 07:50
Исследования квадратного уравнения PowerPoint Паскаль, Turbo Pascal, PascalABC.NET 0 23.01.2013 18:55
Исследования Операции Европеец Помощь студентам 1 09.07.2009 04:41