powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите люди добрые )))) randomize
10 сообщений из 10, страница 1 из 1
Помогите люди добрые )))) randomize
    #34280215
Ksusha_pussycat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется БД в Access. В таблице три поля: код, слово с пропуском и сама пропущенная буква.
На форме созжан массив элементов label и textbox. В labelы необходимо случайным образом из поля слова с пропуском загрузить слова, а пользователь должен вводить в textbox пропущенные буквы.
Я пыталась вот так:

Private Sub Form_Load()
Data1.DatabaseName = App.Path & "\db2.mdb"
Data1.Refresh
For i = 1 To 12
k = Data1.Recordset.RecordCount - 1
Randomize
r = Int(Rnd * k) + 1
Data1.Recordset.MoveFirst
Data1.Recordset.Move r
Text1(i).BackColor = vbWhite
Label1(i).Caption = Data1.Recordset.Fields("Поле1").Value 'i - индекс лейбла
Text1(i).Left = Label1(i).Left + Label1(i).Width + 100
Next
End Sub

А проверяла вот так:

Private Sub Image3_Click()

For i = 1 To 12
k = Data1.Recordset.RecordCount
Randomize
r = Int(Rnd * k) + 1
Data1.Recordset.MoveFirst
Data1.Recordset.Move r
Text1(i).BackColor = vbWhite
If Text1(i).Text <> Data1.Recordset.Fields("Поле3").Value Then
Text1(i).BackColor = vbRed
End If
Next
End Sub

Но я понимаю, что это неправильно, так как для загрузки и для проверки я получаю разные случайные числа, только как объединить эти действия до меня не доходит (((
Подскажите, если кто знает ))))
...
Рейтинг: 0 / 0
Помогите люди добрые )))) randomize
    #34280264
Ksusha_pussycat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите хоть что-нибудь, я с этим уже третий день мучаюсь.....
Давайте я фотку свою оставлю, а вы мне поможете ;)))))
...
Рейтинг: 0 / 0
Помогите люди добрые )))) randomize
    #34280280
Nikz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте запоминать r которое вы генерите в Private Sub Form_Load().
Например так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Private Sub Form_Load()
Data1.DatabaseName = App.Path & "\db2.mdb"
Data1.Refresh
For i =  1  To  12 
  k = Data1.Recordset.RecordCount -  1 
  Randomize
  r = Int(Rnd * k) +  1 
  Data1.Recordset.MoveFirst
  Data1.Recordset.Move r
  Text1(i).BackColor = vbWhite
  Label1(i).Caption = Data1.Recordset.Fields("Поле1").Value 'i - индекс лейбла
  Text1(i).Tag = r '!!!!!! запоминаем индекс записи в Tag текстового поля
  Text1(i).Left = Label1(i).Left + Label1(i).Width +  100 
Next
End Sub
Тогда потом можно будет проверить так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private Sub Image3_Click()
For i =  1  To  12 
'  k = Data1.Recordset.RecordCount
'  Randomize
'  r = Int(Rnd * k) + 1
  Data1.Recordset.MoveFirst
  Data1.Recordset.Move Text(i).Tag '!!!!!!!!!!!! Перемещаемся к записи индекс которой хранится в Tag текстового поля
  Text1(i).BackColor = vbWhite
  If Text1(i).Text <> Data1.Recordset.Fields("Поле3").Value Then
    Text1(i).BackColor = vbRed
  End If
Next
End Sub
Единственное что - я бы посоветовал в Form_Load() отслеживать какие числа уже генерились, что бы не использовать их повторно в течении выполнения процедуры и избежать ситуации когда одно и то же слово будет выведено два раза. Например так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Private Sub Form_Load()
Dim str as String
Data1.DatabaseName = App.Path & "\db2.mdb"
Data1.Refresh
k = Data1.Recordset.RecordCount -  1 
Randomize
r = Int(Rnd * k) +  1 
For i =  1  To  12   
  do while instr( 1 , str, "," & r & , ",") >  0 
    r = Int(Rnd * k) +  1 
  end do
  str = str & "," & r & ","
  Data1.Recordset.MoveFirst
  Data1.Recordset.Move r
  Text1(i).BackColor = vbWhite
  Label1(i).Caption = Data1.Recordset.Fields("Поле1").Value 'i - индекс лейбла
  Text1(i).Tag = r '!!!!!! запоминаем индекс записи в Tag текстового поля
  Text1(i).Left = Label1(i).Left + Label1(i).Width +  100 
Next
End Sub
З.Ы.
может быть бажно, писал навскидку
З.З.Ы.
фотку оценил :)
...
Рейтинг: 0 / 0
Помогите люди добрые )))) randomize
    #34280286
Ksusha_pussycat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибочки БОЛЬШУЩЕЕ!!!!
И за код и за фотку )))))
...
Рейтинг: 0 / 0
Помогите люди добрые )))) randomize
    #34280301
Ksusha_pussycat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оно работает!!! Уррррррррррря!!!!!
Спасибки ещё раз! Цём!!!
...
Рейтинг: 0 / 0
Помогите люди добрые )))) randomize
    #34280350
Ksusha_pussycat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ой, он почему то ругается на End do...
...
Рейтинг: 0 / 0
Помогите люди добрые )))) randomize
    #34281076
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а зачем заносить в TAG какой-то индекс и потом по неему искать правильный ответ,
не проще будет в TAG хранить правильный ответ, а потом просто проверять значение TEXTBOX с его TAG ?



I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
Помогите люди добрые )))) randomize
    #34281470
Nikz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ksusha_pussycatОй, он почему то ругается на End do...
косякс... яж говорил что возможны баги
HandKotа зачем заносить в TAG какой-то индекс ...
согласен

to Ksusha_pussycat
итоговый вариант:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Private Sub Form_Load()
Dim str as String
Data1.DatabaseName = App.Path & "\db2.mdb"
Data1.Refresh
k = Data1.Recordset.RecordCount -  1 
Randomize
r = Int(Rnd * k) +  1 
For i =  1  To  12   
  do while instr( 1 , str, "," & r & , ",") >  0 
    r = Int(Rnd * k) +  1 
  loop '!!!!!! вместо end do
  str = str & "," & r & ","
  Data1.Recordset.MoveFirst
  Data1.Recordset.Move r
  Text1(i).BackColor = vbWhite
  Label1(i).Caption = Data1.Recordset.Fields("Поле1").Value 'i - индекс лейбла
  Text1(i).Tag = Data1.Recordset.Fields("Поле3").Value '!!!!!! запоминаем правильный ответ в Tag текстового поля
  Text1(i).Left = Label1(i).Left + Label1(i).Width +  100 
Next
End Sub
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub Image3_Click()
For i =  1  To  12 
  Text1(i).BackColor = vbWhite
  If Text1(i).Text <> Text1(i).Tag Then
    Text1(i).BackColor = vbRed
  End If
Next
End Sub
...
Рейтинг: 0 / 0
Помогите люди добрые )))) randomize
    #34281598
Ksusha_pussycat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
do while instr(1, str, "," & r & , ",") > 0
r = Int(Rnd * k) + 1
loop '!!!!!! вместо end do

Loop я догадалась поставить ))) но он ругается на саму строчку instr(1, str, "," & r & , ",") > 0, по идее ему не нравится запятая между & , ",". Но если её убрать прога умирает, либо её заклинивает, вобщем чёто страшное с ней происходит (
...
Рейтинг: 0 / 0
Помогите люди добрые )))) randomize
    #34282061
Nikz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну да, запятая там не в тему, опечатка
Код: plaintext
1.
2.
3.
Do While InStr( 1 , str, "," & r & ",") >  0 
    r = Int(Rnd * k) +  1 
Loop
на какой строке клинит?
на этой не должно...
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите люди добрые )))) randomize
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]