|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#16
|
||||
|
||||
покажите часть таблицы, именно то, как хранятся записи, в каком порядке, какие ключевые поля и т.д., у меня Oracle сейчас не установлен, повторю всё на MDB базе
Коли навчався в школі я - в мені росли мозгЫ. КудИж вони поділися? гы-гы гы-гы гы-гы... ICQ: 593977748 Nick: Marvel |
#17
|
|||
|
|||
Тут вся база. Мне необходимо вывести ответы и каким нибудь способом выбрать правильный и занести в таблицу
|
#18
|
||||
|
||||
дайте дампы маленькие таблиц Quest и Answer, можно в виде картинки, мне нужно знать последовательность хранения вопросов и ответов
Коли навчався в школі я - в мені росли мозгЫ. КудИж вони поділися? гы-гы гы-гы гы-гы... ICQ: 593977748 Nick: Marvel |
#19
|
||||
|
||||
Может быть тогда лучше ответы выводить в DBGrid-е, это позволит выводить сколько угодно ответов на один вопрос. Я думаю это более рационально чем создавать 4 курсора, да и проще.
|
#20
|
|||
|
|||
мои дампы таблиц с вопросами и ответами.
Хотелось бы знать как можно из запроса DataModule2.OracleQuery.SQL.Add('select a.* from answer a where a.id_quest=1'); вытащить данные, т.е. результат запроса это 4 ответа, и записать их в едиты????? Последний раз редактировалось Botaniq, 23.06.2010 в 23:24. |
#21
|
|||
|
|||
Тема актуальна.
Требуется помощь. |
#22
|
|||
|
|||
Вчера только писал:
Код:
ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('SELECT * FROM Вопрос WHERE Вопрос like "%'+find_vop.Text+'%"'); adoQuery1.Active := true; ADOQuery2.Close; ADOQuery2.SQL.Clear; ADOQuery2.SQL.Add('SELECT * FROM Варианты WHERE Код = :kd'); ADOQuery2.parametrs.parambyname('kd').value:= Adoquery1.fieldbyname('Код').AsInteger; adoQuery2.Active := true; |
#23
|
|||
|
|||
Если посмотреть внимательно у меня не ADO технология, а DAO. Т.е. ORACLE. В результате запроса 4 строки. Их надо присвоить 4 эдитам
|
#24
|
|||
|
|||
Да хоть BDE результат вернул 4 строки.
цикл по результату и конструкция IF самый простой вариант. пишем в EDIT |
#25
|
|||
|
|||
как это будет выглядеть???????
|
#26
|
||||
|
||||
можно и вот так. Edit'ы должны называться так: EAnswer1,EAnswer2,EAnswer3,EAnswer4:
Код:
procedure TForm1.FillEdits(id_quest,id_test: integer); var i: integer; begin ZAnswers.SQL.Text := 'SELECT * FROM answer WHERE ID_QUEST=:QUEST AND ID_TEST=:TEST'; ZAnswers.ParamByName('QUEST').AsInteger := id_quest; ZAnswers.ParamByName('TEST').AsInteger := id_test; ZAnswers.Open; while not ZAnswers.Eof do begin for i:=0 to ComponentCount-1 do begin if Components[i].Name = 'EAnswer' + IntToStr(ZAnswers.RecNo) then begin (Components[i] as TEdit).Text := ZAnswers.FieldByName('ANSWER').AsString; end; end; ZAnswers.Next; end; ZAnswers.Close; end; или так: Код:
procedure TForm1.FillEdits(id_quest,id_test: integer); var i: integer; begin ZAnswers.SQL.Text := 'SELECT * FROM answer WHERE ID_QUEST=:QUEST AND ID_TEST=:TEST'; ZAnswers.ParamByName('QUEST').AsInteger := id_quest; ZAnswers.ParamByName('TEST').AsInteger := id_test; ZAnswers.Open; EAnswer1.Text := ZAnswer.FieldByName('ANSWER').AsString; ZAnswers.Next; EAnswer2.Text := ZAnswer.FieldByName('ANSWER').AsString; ZAnswers.Next; EAnswer3.Text := ZAnswer.FieldByName('ANSWER').AsString; ZAnswers.Next; EAnswer4.Text := ZAnswer.FieldByName('ANSWER').AsString; ZAnswers.Close; end; Использовать так: Код:
FillEdits(номер_вопроса,номер_теста); Коли навчався в школі я - в мені росли мозгЫ. КудИж вони поділися? гы-гы гы-гы гы-гы... ICQ: 593977748 Nick: Marvel Последний раз редактировалось Marvel, 24.06.2010 в 10:17. |
#27
|
|||
|
|||
у меня нет таких свойств как ParambyName, RecNo. В ADO есть а в DAO их нет. Что делать???
|
#28
|
||||
|
||||
Код:
procedure TForm1.FillEdits(id_quest,id_test: integer); var i,cnt: integer; begin cnt := 0; ZAnswers.SQL.Text := 'SELECT * FROM answer WHERE ID_QUEST='+IntToStr(id_quest) + ' AND ID_TEST=' + IntToStr(id_test); ZAnswers.Open; while not ZAnswers.Eof do begin Inc(cnt); for i:=0 to ComponentCount-1 do begin if Components[i].Name = 'EAnswer' + IntToStr(cnt) then begin (Components[i] as TEdit).Text := ZAnswers.FieldByName('ANSWER').AsString; end; end; ZAnswers.Next; end; ZAnswers.Close; end; или так: Код:
procedure TForm1.FillEdits(id_quest,id_test: integer); var i: integer; begin ZAnswers.SQL.Text := 'SELECT * FROM answer WHERE ID_QUEST='+IntToStr(id_quest) + ' AND ID_TEST=' + IntToStr(id_test); ZAnswers.Open; EAnswer1.Text := ZAnswer.FieldByName('ANSWER').AsString; ZAnswers.Next; EAnswer2.Text := ZAnswer.FieldByName('ANSWER').AsString; ZAnswers.Next; EAnswer3.Text := ZAnswer.FieldByName('ANSWER').AsString; ZAnswers.Next; EAnswer4.Text := ZAnswer.FieldByName('ANSWER').AsString; ZAnswers.Close; end; Коли навчався в школі я - в мені росли мозгЫ. КудИж вони поділися? гы-гы гы-гы гы-гы... ICQ: 593977748 Nick: Marvel |
#29
|
|||
|
|||
спасибо всем за подсказку.
я решил задачу так: Код:
procedure TStart_test.test(); var i,j: Integer; begin DataModule2.OQuery.SQL.Add('select a.* from answer a where a.id_quest='+IntToStr(DataModule2.ODS_QuestID_QUEST.AsInteger)); DataModule2.OQuery.Execute; j:=0; while not DataModule2.OQuery.Eof do begin inc(j); mass[j]:=DataModule2.OQuery.Field('ID_Answer'); otvet[j]:=DataModule2.OQuery.Field('Correct_Answer'); for i:=0 to ComponentCount-1 do begin if Components[i].Name = 'Edit' + IntToStr(j) then begin (Components[i] as TEdit).Text := DataModule2.OQuery.Field('Answer'); end; end; DataModule2.OQuery.Next; end; DataModule2.OQuery.Close; DataModule2.OQuery.Clear; DataModule2.ODS_Quest.Next; end; Последний раз редактировалось Admin, 25.06.2010 в 10:11. |
#30
|
||||
|
||||
тэгами пользуйтесь, ибо Admin забанит )))
Коли навчався в школі я - в мені росли мозгЫ. КудИж вони поділися? гы-гы гы-гы гы-гы... ICQ: 593977748 Nick: Marvel |