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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2010, 09:01   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

у Вас в базе нумерация от единицы.
поэтому надо:
Цитата:
Код:
ololo:=('SELECT * FROM Questions where id='+IntToStr(Random(QueryQuestion. Fields[0].AsInteger)+1)+';');
но я уже устаю повторять...
Вашей проблемы с повтором вопросов это НЕ РЕШИТ!
Неужели это так сложно понять?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.11.2010, 09:06   #12
s4shk4
Пользователь
 
Аватар для s4shk4
 
Регистрация: 24.10.2010
Сообщений: 29
По умолчанию

Цитата:
Вашей проблемы с повтором вопросов это НЕ РЕШИТ!
Неужели это так сложно понять?!
А что решит?
s4shk4 вне форума Ответить с цитированием
Старый 08.11.2010, 09:40   #13
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

здесь только два подхода возможны.
1-й. хранить (и накапливать) ID ранее выпавших ответов. в запросе указывать, что эти ID уже не выбирать.
(это конструкция в select ... where ... ID not in (списокРанееВыпавшихID)) пример я давал ранее.

2-й подход. Выбрать N нужных записей в датасет (хоть через тот же TOP ... )
и выбирать вопросы уже не из БД, а брать по очереди из датасета.

второй способ может Вам показаться проще. но это так только до тех пор, пока Вы не созреете, что у каждого вопроса должен быть уровень сложности. Иначе получается не игра "Кто хочет стать миллионером", а какая-то угадайка... Вопрос на миллион может оказаться проще, чем самый первый вопрос игроку. В настоящей игре сложность вопросов идёт по нарастающей...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.11.2010, 09:49   #14
s4shk4
Пользователь
 
Аватар для s4shk4
 
Регистрация: 24.10.2010
Сообщений: 29
По умолчанию

Цитата:
пример я давал ранее
У меня вопросы в таком же порядке и выводились.

А про сложность вопросов я уже говорил. Сначала так бы доделать.

Все-таки я решил наконец включить мозг и все получилось, как ни странно :3

Делюсь:
Код:
Randomize;
rn:=random(6)+1;
QueryQuestion.SQL.Add('SELECT * FROM Questions WHERE id='+IntToStr(rn)+';');

Последний раз редактировалось s4shk4; 09.11.2010 в 09:43.
s4shk4 вне форума Ответить с цитированием
Старый 08.11.2010, 14:54   #15
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
rn:=random(6)+1;
я не знаю, расстрою ли я Вас.
но при таком раскладе вопрос седьмой ( с id=7) никогда не выпадет!
надо
rn:=random(7)+1;

кроме того, если Вы удалите любую строчку в таблице, Вас ждут неприятные сюрпризы...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.11.2010, 15:02   #16
s4shk4
Пользователь
 
Аватар для s4shk4
 
Регистрация: 24.10.2010
Сообщений: 29
По умолчанию

Цитата:
но при таком раскладе вопрос седьмой ( с id=7) никогда не выпадет!
Тогда ведь может выпасть восьмой? А его нет.
s4shk4 вне форума Ответить с цитированием
Старый 08.11.2010, 15:21   #17
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Тогда ведь может выпасть восьмой? А его нет.
ну, ну почитайте же описание функции random(X)!
ну совсем же не сложно!
Цитата:
Random returns a random number within the range 0 <= X < Range.
random(число) возвращает числа от нуля до этого числа (НЕ ВКЛЮЧИТЕЛЬНО)
т.е. random(7) может вернуть 0, 1, 2, 3, 4, 5, 6
соответственно, random(7) + 1 может быть 1, 2, 3, 4, 5, 6, 7
но никак не восемь, ни девять и не 32! Понимаете?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.11.2010, 23:02   #18
s4shk4
Пользователь
 
Аватар для s4shk4
 
Регистрация: 24.10.2010
Сообщений: 29
По умолчанию

Дошлооо :3

А по поводу Вашего счетчика id.. Что я не так делаю?

Код:
 if ololo='' then QueryQuestion.SQL.Text := 'SELECT * FROM Questions WHERE id='+IntToStr(rn)+';'
 else
 QueryQuestion.SQL.Text := 'SELECT * FROM Questions WHERE ID NOT IN ('+ololo+') ORDER BY RND(id);';

 QueryQuestion.Active := true;

 if ololo<>'' then ololo := ololo + ',';
 ololo := ololo + QueryQuestion.FieldByName('ID').AsString;
...

Все, разобрался

Последний раз редактировалось s4shk4; 09.11.2010 в 09:43.
s4shk4 вне форума Ответить с цитированием
Старый 09.11.2010, 09:03   #19
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Вы же, надеюсь, понимаете, что ololo должна в себе накапливать все выбранные ID-шники?! (кстати, можете в отладке последить за тем, что в эту строчку попадает...) Поэтому эта строчка должна быть объявлена ГЛОБАЛЬНО (а ещё лучше - сделать свойством формы (можно public, можно private )
Думаю, что в этом Ваша ошибка!
Это раз.


второе. поясните, а зачем Вы выбираете ВСЕ ЗАПИСИ?! Куда делся TOP 1 ?

третье. Подскажите, пожалуйста, а какова цель этой Вашей разработки? Учебная задача (ну там лаба, курсовик и т.п.) или самообучение? Или получение реальной игры?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.11.2010, 09:16   #20
s4shk4
Пользователь
 
Аватар для s4shk4
 
Регистрация: 24.10.2010
Сообщений: 29
По умолчанию

Цитата:
Поэтому эта строчка должна быть объявлена ГЛОБАЛЬНО
Вы чуток опоздали, как раз именно это до меня и дошло.

Цитата:
Подскажите, пожалуйста, а какова цель этой Вашей разработки? Учебная задача
Она самая. Но слава б-гу, сроки не поджимают.

Цитата:
поясните, а зачем Вы выбираете ВСЕ ЗАПИСИ?! Куда делся TOP 1 ?
Отображается-то один вопрос так и так.
s4shk4 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С# Запрос на выборку fobass Общие вопросы .NET 2 04.02.2010 14:26
Запрос на выборку igordeg Microsoft Office Access 3 21.01.2010 21:33
Запрос на добавление записи в Delphi disaer Помощь студентам 5 09.11.2009 12:07
запрос на выборку МаришаГ Microsoft Office Access 5 21.08.2009 23:46
Запрос на выборку Ruska882009 Microsoft Office Access 2 26.02.2009 20:39