![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#16
|
||||
|
||||
|
покажите часть таблицы, именно то, как хранятся записи, в каком порядке, какие ключевые поля и т.д., у меня Oracle сейчас не установлен, повторю всё на MDB базе
|
|
#17
|
|||
|
|||
|
Тут вся база. Мне необходимо вывести ответы и каким нибудь способом выбрать правильный и занести в таблицу
|
|
#18
|
||||
|
||||
|
дайте дампы маленькие таблиц Quest и Answer, можно в виде картинки, мне нужно знать последовательность хранения вопросов и ответов
|
|
#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(номер_вопроса,номер_теста); Последний раз редактировалось 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; |
|
#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 забанит )))
|