|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.05.2010, 14:05 | #1 |
Регистрация: 07.05.2010
Сообщений: 5
|
Delphi7
Всем доброго времени суток.
Прошу помочь знающий людей в следующей проблемке: Пытаюсь сделать программу-генератор экз. билетов(в билете от 3 до 5 вопросов по РАЗНЫМ предметам). В базе Имеются 2 таблички(в ms sql server 2000): Subjects:n_subject, subject. Questions: n_subject, n_quest, question. ( таблички соеденены по полю n_subject, знаю что мона все сделать с1 табличкой, но надо так). вообщем моя идея: Чеклистбокс смотрит из таблицы Subjects предметы. Я выделяю нужные, программка рандомом извлекает из таблицы Questions вопросы(глядя на id чеклистбокса) в какой нить мемо или лучше даже ричэдит. Плюс еще и нужна проверка на исключение дублирования вопросов. Количество билетов задаётся пользователем(edit1 ) Реализация: Пытался реализовать так, чтобы сначала был запрос в адоквери на выборку всех выделенных предметов из чеклистбокса, отрандомил их и выводил в ричэдит. мой бред: a:array[1..200] of string; b:array[1..200] of string; c:array[1..200] of integer; begin { k:=0; for i:=0 to checklistbox1.Items.Count - 1 do if CheckListBox1.Checked[i] then begin k:=k+1; end; }// количество выделенных записей чеклистбокса n := StrToInt(form5.Edit1.Text) ; кол.билтетов) for i:=0 to checklistbox1.Items.Count - 1 do //от 0 до 4 if CheckListBox1.Checked[i] then // если итем выделен то: begin datamodule2.ADOQuery3.SQL.Clear; datamodule2.ADOQuery3.SQL.Add('Sele ct Question from Questions where n_subject ='+ inttostr(i+1) + ''); datamodule2.ADOQuery3.Open; datamodule2.ADOQuery3.First; for ii:=1 to n do begin a[ii] := datamodule2.ADOQuery3.FieldByName(' question').AsString; datamodule2.ADOQuery3.Next; end; for iii := 1 to n do begin randomize; m := round(random(n)); b[iii] := a[m]; end; begin //проверка на совпадение for iii := 1 to n do begin randomize; metka1: m := round(random(n)); for j:=1 to n do if c[j] = m then GOTO metka1; b[iii] := a[m]; end; end; end; for iii := 1 to n do showmessage(b[iii]); end; В данном коде грубо использовал goto, для теста. И вывел результат только шоумесаджем. Рандом почему то работает криво, дублирует и иногда даже выдаёт пустое сообщение. Прошу помочь, не знаю как всё это реализовать =( |
08.05.2010, 11:58 | #2 |
Регистрация: 07.05.2010
Сообщений: 5
|
хах, понял, меня сейчас переместят в раздел студентов =)
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Delphi7 | Veterok0587 | Помощь студентам | 4 | 07.04.2010 16:48 |
Delphi7 and .PNG | Бутаков_Сергей | Компоненты Delphi | 2 | 16.02.2010 16:24 |
звук в Delphi7 | elda | Мультимедиа в Delphi | 2 | 20.12.2009 14:58 |