Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 09.01.2017
Сообщений: 62
1
MS Access

Тест ПДД: выбранные ответы из RadioGroup1 записывать в БД

12.05.2017, 18:09. Просмотров 1710. Ответов 27
Метки нет (Все метки)


Пишу тестер по пдд на Делфи не могу сделать чтобы выбранные ответ из RadioGroup1 записывались в акцесс
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.05.2017, 18:09
Ответы с готовыми решениями:

Тест ПДД на С#
проблема вот в чем не знаю как сделать так что бы правильные ответы считались на каждой форме(их...

Создать тест ПДД
День добрый, задача такова: нужно создать тест ПДД, (строго на С) из 5 вопросов с 3 вариантами...

Программ-тест ПДД
Здравствуйте. В программировании 0. Но, как то нужно написать программу тест ПДД из 20 вопросов....

on-line тест пдд
Здравствуйте, не уверен что правильно выбрал раздел для темы, за что прошу прощения. Вопрос в...

27
2078 / 1233 / 435
Регистрация: 29.05.2013
Сообщений: 5,553
13.05.2017, 00:48 2
Например можно формировать строку из индексов '131621'
0
1037 / 854 / 334
Регистрация: 08.12.2016
Сообщений: 3,283
13.05.2017, 14:42 3
Для начала неплохо бы показать структуру таблицы, в которую вы собираетесь записать результаты.
0
0 / 0 / 0
Регистрация: 09.01.2017
Сообщений: 62
13.05.2017, 16:23  [ТС] 4
вот сам код программы
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
unit Unit8;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.OleCtrls, SHDocVw, Vcl.ExtCtrls,
  Vcl.StdCtrls, Vcl.Buttons, Vcl.ComCtrls;
 
type
  TForm8 = class(TForm)
    Image1: TImage;
    Memo6: TMemo;
    Panel1: TPanel;
    SpeedButton1: TSpeedButton;
    RadioGroup1: TRadioGroup;
    SpeedButton2: TSpeedButton;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Button10: TButton;
    Button11: TButton;
    Button12: TButton;
    Button13: TButton;
    Button14: TButton;
    Button15: TButton;
    Button16: TButton;
    Button17: TButton;
    Button18: TButton;
    Button19: TButton;
    Button20: TButton;
    Button21: TButton;
    Button22: TButton;
    Button23: TButton;
    Button24: TButton;
    Button25: TButton;
    Button26: TButton;
    Button27: TButton;
    Button28: TButton;
    Button29: TButton;
    Button30: TButton;
    Button31: TButton;
    Button32: TButton;
    Button33: TButton;
    Button34: TButton;
    Button35: TButton;
    Button36: TButton;
    Button37: TButton;
    Button38: TButton;
    Button39: TButton;
    Button40: TButton;
    procedure MyClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure SpeedButton2Click(Sender: TObject);
 
  private
 
    { Private declarations }
  public
 
    { Public declarations }
  end;
 
var
  Form8: TForm8;
  C_button : TButton;
  i, ans, q_num: integer;
implementation
 
{$R *.dfm}
uses Unit9;
 
procedure TForm8.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DataForm.ADOQuery1.SQL.Clear;
DataForm.ADOQuery1.SQL.Add('drop TABLE test');
DataForm.ADOQuery1.ExecSQL;
C_button.Free;
end;
 
procedure TForm8.SpeedButton2Click(Sender: TObject);
begin
DataForm.ADOConnection1.Close;
DataForm.ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ExtractFilePath(Application.ExeName)+'data.mdb;Persist Security Info=False;';
DataForm.ADOQuery1.SQL.Clear;
DataForm.ADOQuery1.SQL.Add('select * from `QDB`');
DataForm.ADOQuery1.Open;
 
DataForm.ADOQuery1.SQL.Clear;
DataForm.ADOQuery1.SQL.Add('CREATE TABLE test (id VARCHAR( 43 ) NOT NULL, random VARCHAR( 43 ) NOT NULL, otvet VARCHAR( 43 ));');
DataForm.ADOQuery1.ExecSQL;
 
for I := 1 to 40 do
  begin
    {{C_button := TButton.Create(Self);
    C_button.Parent := Form8;
    C_button.Caption:= inttostr(i);
    C_button.Name:='btn'+inttostr(i);
    C_button.width:=30;
    C_button.height:=30;
    C_button.OnClick:=myclick;
 
    if i<=20 then
      begin
        C_button.Left:=10+30*(i-1);
        C_button.Top:=10;
      end
        else
          begin
            C_button.Left:=10+30*(i-21);
            C_button.Top:=50;
          end; }
    DataForm.ADOQuery2.SQL.Clear;
    DataForm.ADOQuery2.SQL.Add('select * from `Test`');
    DataForm.ADOQuery2.Open;
    DataForm.ADOQuery2.Edit;
    DataForm.ADOQuery2.Insert;
    DataForm.ADOQuery2.InsertRecord([inttostr(i), random(833), nil]);
    DataForm.ADOQuery2.Edit;
    DataForm.ADOQuery2.Post;
 
 
 
  end;
end;
 
procedure TForm8.MyClick(Sender: TObject);
begin
DataForm.ADOQuery3.SQL.Clear;
DataForm.ADOQuery3.SQL.Add('select * from `Test` where id like '+TButton(Sender).Caption+';');
DataForm.ADOQuery3.Open;
q_num:=DataForm.ADOQuery3.FieldByName('random').AsInteger;
DataForm.ADOQuery3.SQL.Clear;
DataForm.ADOQuery3.SQL.Add('select * from `QDB` where Id like '+IntToStr(q_num)+';');
DataForm.ADOQuery3.Open;
 
Image1.Picture:=nil;
RadioGroup1.ItemIndex:=-1;
RadioGroup1.Items.Clear;
Memo6.Text:=DataForm.ADOQuery3.FieldByName('Question').AsString;
 
for ans := 1 to 5 do
if DataForm.ADOQuery3.FieldByName('Answer'+inttostr(ans)).AsString<>'' then
  RadioGroup1.Items.Add(DataForm.ADOQuery3.FieldByName('Answer'+inttostr(ans)).AsString);
 
  Image1.Picture.Assign(DataForm.ADOQuery3.FieldByName('picture'));
end;
 
end.
таблица QDB
имеет следующий вид id айди Question поля с вопросами Answer1 Answer2 Answer3 Answer4 Answer5 тут находятся варианты ответов Correct тут находятся ответы в виде цифр
после запуска программы создаются втарая таблица в нее берутся 40 вопросов рандомно

вот не могу теперь сделать чтобы выбранные ответы записывались в базу а потом сравнивались с ответами которые в самой базе
0
1037 / 854 / 334
Регистрация: 08.12.2016
Сообщений: 3,283
13.05.2017, 16:59 5
Delphi
1
2
3
4
5
6
procedure TForm8.RadioGroup1Click(Sender: TObject);
begin
  DataForm.ADOQuery3.SQL.Clear;
  DataForm.ADOQuery3.SQL.Add('update `Test` SET  otvet = ' + IntToStr(RadioGroup1.ItemIndex + 1) + ' where id like '+TButton(Sender).Caption+';');
  DataForm.ADOQuery3.SQL.ExeсSQL;
end;
это чтобы записывались.
А чтобы сравнивались, нужен запрос, связывающий test и QDB и кнопка, в обработчике которой этот запрос выполнялся и оценивался результат, а в приведенном коде такой кнопки не видно
0
0 / 0 / 0
Регистрация: 09.01.2017
Сообщений: 62
13.05.2017, 18:10  [ТС] 6
в последней строке ошибка. исправил на DataForm.ADOQuery3.ExecSQL; проект запускается но при проверке выдает ошибку Ошибка синтаксиса (пропущен оператор) в выражении запроса 'id like'
0
1037 / 854 / 334
Регистрация: 08.12.2016
Сообщений: 3,283
13.05.2017, 18:15 7
Delphi
1
DataForm.ADOQuery3.SQL.Add('update `Test` SET  otvet = ' + IntToStr(RadioGroup1.ItemIndex + 1) + ' where id like '+IntToStr(q_num)+';');
0
0 / 0 / 0
Регистрация: 09.01.2017
Сообщений: 62
13.05.2017, 18:22  [ТС] 8
ошибок нет но запись не сохраняется
0
1037 / 854 / 334
Регистрация: 08.12.2016
Сообщений: 3,283
13.05.2017, 18:25 9
Лучший ответ Сообщение было отмечено Максим9605 как решение

Решение

Delphi
1
DataForm.ADOQuery3.SQL.Add('update `Test` SET  otvet = ' + IntToStr(RadioGroup1.ItemIndex + 1) + ' where random like '+IntToStr(q_num)+';');
0
0 / 0 / 0
Регистрация: 09.01.2017
Сообщений: 62
13.05.2017, 18:35  [ТС] 10
сейчас работает все сохраняет, а как сравнения сделать чтоб результат получить сколько правильных и не правильных не подскажешь
0
1037 / 854 / 334
Регистрация: 08.12.2016
Сообщений: 3,283
13.05.2017, 18:57 11
Delphi
1
2
3
4
5
6
DataForm.ADOQuery3.SQL.Clear;
DataForm.ADOQuery3.SQL.Add(
  'SELECT COUUNT (*) DROM Test JOIN QDB ON Test.random = QDB.Id AND Test.otvet = QDB.Correct ;'
); 
DataForm.ADOQuery3.Open;
// DataForm.ADOQuery3.Fields[0].asXXXX - здесь кроется количество правильных ответов, остальные - неправильные или неотвеченные
0
0 / 0 / 0
Регистрация: 09.01.2017
Сообщений: 62
13.05.2017, 19:05  [ТС] 12
этот код на кнопку проверки писать?
0
1037 / 854 / 334
Регистрация: 08.12.2016
Сообщений: 3,283
13.05.2017, 19:08 13
я не знаю какой у вас интерфейс. Может это кнопка выхода. Там где собираетесь результат получить или показать, там и пишите.
0
2078 / 1233 / 435
Регистрация: 29.05.2013
Сообщений: 5,553
13.05.2017, 19:10 14
в примере YuryK COUUNT - замени на COUNT и в Акцесе не Join, а inner join
0
0 / 0 / 0
Регистрация: 09.01.2017
Сообщений: 62
13.05.2017, 19:13  [ТС] 15
выходит следующая ошибка Ошибка синтаксиса(пропущен оператор) в выражении запроса 'COUUNT (*) DROM Test JOIN QDB ON Test.random = QDB.Id AND Test.otvet = QDB.Correct '
0
1037 / 854 / 334
Регистрация: 08.12.2016
Сообщений: 3,283
13.05.2017, 19:22 16
Цитата Сообщение от Максим9605 Посмотреть сообщение
выходит следующая ошибка
ответы на этот и следующий вопрос смотрите выше #14
0
0 / 0 / 0
Регистрация: 09.01.2017
Сообщений: 62
13.05.2017, 19:29  [ТС] 17
заменил ошибка таже
0
1037 / 854 / 334
Регистрация: 08.12.2016
Сообщений: 3,283
13.05.2017, 19:33 18
DROM на FROM ещё.
Ну ладно я пишу "на коленках", но вы то должны видеть, что пишете
0
0 / 0 / 0
Регистрация: 09.01.2017
Сообщений: 62
13.05.2017, 19:38  [ТС] 19
не соответствия типа выражения
0
1037 / 854 / 334
Регистрация: 08.12.2016
Сообщений: 3,283
13.05.2017, 19:43 20
типов полей вашей QDB мы не знаем, так что уж допиливайте сами. Создайте запрос в базе, добейтесь работоспособности, потом переносите в код дельфи
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.05.2017, 19:43

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Тест ПДД: исправить код
Пытаюсь сделать тест ПДД и что то совсем никак не получается, помогите, вообще ничего даже не...

Проблемы с чтением XML-файла (тест ПДД)
Задача состоит в том чтобы создать тест пдд, вопросы будут считываться с XML фаила..попробовал так...

Тест ПДД (правил дорожного движения) C++ Builder
Вообщем, задали на курсовой проект написать тест правил дорожного движения, по скольку билдер токо...

Составить тест по ПДД из 4 частей, с выводом правильных\неправильных ответов по завершению
Кто поможет составить тест по ПДД по этим вопросам, что бы в конце показывал кол-во правильных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.