Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
2 / 2 / 1
Регистрация: 23.11.2013
Сообщений: 85
MS Access

Поиск свпадений в БД

23.11.2014, 22:20. Показов 458. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые форумчане.
Обращаюсь к Вам за подсказкой относительно такого вопроса :
Пишу программу- для проведения тестирования по английскому языку.
Суть в чем- есть форма, на которой лежат:
-DBText1- подгружает из таблицы значения строк в столбце "Вопрос"
- и несколько RadioButton - подгружает из таблицы значения строк в столбцах "Вариант 1, вариант2 и тд. "

при запуске программы, с помощью ADO подключается база db1.mdb, которая содержит несколько таблиц :
-Таблица вопросов, имеет следующие столбцы :
------------------------------------------------------------------------------------
| код | Вопрос |
------------------------------------------------------------------------------------
| 1 | |


- таблица вариантов ответов, имеет следующие столбцы :

-------------------------------------------------------------------------------------
| код | Вариант 1 | Вариант 2 | Вариант 3 | Вариант 4 | Вариант 5 |
------------------------------------------------------------------------------------
| 1 | | | | | |

- таблица с правильными ответами
-------------------------------------------------------------------------------------
| код | Вопрос | Правильный ответ |
------------------------------------------------------------------------------------
| 1 | | |


Столбец "код" - во всех таблицах соответствует логической цепочке код1-вопрос1-вариант1-вариант2-вариант3... и т.д.

С БД работаю совсем недавно- и еще не постиг всех тонкостей, а потому прошу подсказать как реализовать проверку соответствия выбраного пользователем ответа (нажатого чекбокса), и соответствия его правильному ответу в таблице правильных ответов.

другими словами- если пользователь выбрал в вопросе 1 определенный чекбокс (отвт) - проверить- правильный ли он в таблице ответов.


Заранее благодарен.
с Ув. Дмитрий.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.11.2014, 22:20
Ответы с готовыми решениями:

Поиск по сайту: не могу разобраться, как делать поиск по нескольким полям
поиск по одному полу осуществляется вот так: SELECT * from tablepart WHERE `marka` LIKE '%" . $search . "%' or `model` LIKE '%"...

QRegExp поиск всех строк которые соответствуют шаблону и поиск их длины
//поиск строк типа ] QRegExp reg("\\\\]"); QString text = "test ] bla ]"; int pos = reg.indexIn(text); //здесь ошибка....

Поиск символа в строке. Как осуществить поиск в обратном направлении
Всем доброго времени суток. Вопрос такой: как осуществить поиск в обратном направлении, т.е. я в строке (a(bc)) нахожу первую закрытую...

3
2 / 2 / 1
Регистрация: 23.11.2013
Сообщений: 85
23.11.2014, 22:21  [ТС]
Ниже представлен исходный код программы :
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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
unit Unit1;
 
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ComCtrls, ExtCtrls, StdCtrls, ImgList,
  Grids, DBGrids, DBCtrls, DB, DBTables, ADODB, Mask, QRCtrls,
  QuickRpt, Buttons, sSpeedButton, sLabel, sEdit, sSkinProvider,
  sSkinManager, sPageControl, sPanel, sComboBox;
 
type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    StatusBar1: TStatusBar;
    Timer1: TTimer;
    FindDialog1: TFindDialog;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    N5: TMenuItem;
    N6: TMenuItem;
    ImageList1: TImageList;
    N7: TMenuItem;
    ADOConnection1: TADOConnection;
    ADOTable1: TADOTable;
    DataSource1: TDataSource;
    DataSource2: TDataSource;
    ADOTable2: TADOTable;
    ADOTable3: TADOTable;
    ADOTable4: TADOTable;
    DataSource3: TDataSource;
    DataSource4: TDataSource;
    ADOQuery1: TADOQuery;
    DataSource5: TDataSource;
    DataSource6: TDataSource;
    ADOTable6: TADOTable;
    ADOTable5: TADOTable;
    ADOQuery2: TADOQuery;
    ADOTable7: TADOTable;
    DataSource7: TDataSource;
    ADOConnection2: TADOConnection;
    PrintDialog1: TPrintDialog;
    Timer2: TTimer;
    N11: TMenuItem;
    sSkinManager1: TsSkinManager;
    sSkinProvider1: TsSkinProvider;
    PageControl1: TsPageControl;
    TabSheet1: TsTabSheet;
    TabSheet2: TsTabSheet;
    TabSheet3: TsTabSheet;
    TabSheet4: TsTabSheet;
    Label2: TLabel;
    sLabel1: TsLabel;
    FIO: TsEdit;
    GRUP: TsEdit;
    Button2: TsSpeedButton;
    DBText1: TDBText;
    Var1: TRadioButton;
    Var2: TRadioButton;
    Var3: TRadioButton;
    Var4: TRadioButton;
    Var5: TRadioButton;
    Var6: TRadioButton;
    Memo1: TMemo;
    Button1: TButton;
    QuickRep1: TQuickRep;
    QRBand1: TQRBand;
    QRLabel1: TQRLabel;
    QRBand2: TQRBand;
    QRLabel2: TQRLabel;
    QRLabel3: TQRLabel;
    QRLabel4: TQRLabel;
    QRLabel5: TQRLabel;
    QRLabel6: TQRLabel;
    QRLabel7: TQRLabel;
    QRBand3: TQRBand;
    QRSysData1: TQRSysData;
    DBGrid1: TDBGrid;
    DBGrid3: TDBGrid;
    DBGrid4: TDBGrid;
    DBGrid5: TDBGrid;
    DBGrid2: TDBGrid;
    DBGrid6: TDBGrid;
    DBGrid7: TDBGrid;
    sPanel1: TsPanel;
    sSpeedButton1: TsSpeedButton;
    ADOTable8: TADOTable;
    DataSource8: TDataSource;
    ADOQuery3: TADOQuery;
    sTabSheet1: TsTabSheet;
    sLabelFX1: TsLabelFX;
    sSpeedButton2: TsSpeedButton;
    Button3: TButton;
    Edit1: TEdit;
    procedure N4Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure N7Click(Sender: TObject);
    procedure DataSource1DataChange(Sender: TObject; Field: TField);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Var1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure N11Click(Sender: TObject);
    procedure TabSheet3Show(Sender: TObject);
    procedure sSpeedButton1Click(Sender: TObject);
    procedure Var2Click(Sender: TObject);
    procedure Var3Click(Sender: TObject);
    procedure Var4Click(Sender: TObject);
    procedure Var5Click(Sender: TObject);
    procedure Var6Click(Sender: TObject);
    procedure sSpeedButton2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
 
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1   :TForm1;
 
  ds,fm, otv   :string;
  ocen    :string;
  FAM,Group:string;
  Min     :integer;
  kol_v,ix:integer;
  tm      :integer;
  shet,vpr:integer;
  razn    :real;
  shifr,neshifr:string;
  cd      :integer;
  prv     :integer;
 
  
implementation
 
uses Unit2, Unit3;
 
{$R *.dfm}
 
Function Decode(S: String; Code: Integer): String;
Var t: Integer;
Begin
  For t:=1 to Length(S) Do S[t]:=Chr(Ord(S[t]) xor Code);
  Result:=S;
End;
 
procedure TForm1.N4Click(Sender: TObject);
begin
Application.Terminate;
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
var sob:string;
begin
sob:=('Час вийшов !!!');
 
StatusBar1.Panels[1].Text:=' '+' '+'Питання №'+''+IntToStr(vpr);
 
StatusBar1.Panels[0].Text:=' '+' '+'Залишилось часу: ' + Format('%d : %2d',[Min div 60, Min mod 60 ]);
  Dec(Min);
  if Min < 0 then
begin
timer1.enabled:=false;
MessageDlg( sob, mtInformation, [mbOk], 0);
 
Button1.Visible:=false;
ocen:='';
razn:=(shet/kol_v)*100;
      if ((razn>=0)and(razn<=49))then
      begin
      ocen:='2';
      end;
      if ((razn>=50)and(razn<=69))then
      begin
      ocen:='3';
      end;
      if ((razn>=70)and(razn<=89))then
      begin
      ocen:='4';
      end;
      if ((razn>=90)and(razn<=100))then
      begin
      ocen:='5';
      end;
 
QRLabel1.Caption:='';
QRLabel2.Caption:='';
QRLabel3.Caption:='';
QRLabel4.Caption:='';
QRLabel5.Caption:='';
QRLabel6.Caption:='';
QRLabel7.Caption:='';
QRSysData1.Caption:='';
 
QRLabel1.Caption:='Дисципліна:'+' '+ds;
QRLabel2.Caption:='ПІБ:'+' '+Fam;
QRLabel3.Caption:='Група\факультет:'+' '+Group;
QRLabel4.Caption:=' '+'Кількість тестових запитань:'+' '+IntToStr(kol_v);
QRLabel5.Caption:=' '+'Кількість наданих відповідей:'+' '+IntToStr(vpr-1);
QRLabel6.Caption:=' '+'Кількість вірних відповідей:'+' '+IntToStr(shet-1);
QRLabel7.Caption:=' '+'Приблизна оцінка знань:'+' '+ocen;
 
QRSysData1.Caption:=DateTimeToStr(Date)+' '+TimeToStr(time);
 
N2.Enabled:=true;
SaveDialog1.FileName := FAM;
 
// Сохранение результатов тестирования
SaveDialog1.FileName := FAM;
Memo1.Clear;
Memo1.Lines.Add('Дисципліна:'+' '+ds);
Memo1.Lines.Add('');
Memo1.Lines.Add('ПІБ:'+' '+Fam);
Memo1.Lines.Add('');
Memo1.Lines.Add('Група\факультет:'+' '+Group);
Memo1.Lines.Add('');
Memo1.Lines.Add('Кількість тестових запитань:'+' '+IntToStr(kol_v));
Memo1.Lines.Add('');
Memo1.Lines.Add('Кількість наданих відповідей:'+' '+IntToStr(vpr-1));
Memo1.Lines.Add('');
Memo1.Lines.Add('Кількість вірних відповідей:'+' '+IntToStr(shet-1));
Memo1.Lines.Add('');
Memo1.Lines.Add('Приблизна оцінка знань:'+' '+ocen);
Memo1.Lines.Add('');
Memo1.Lines.Add('Дата:'+' '+DateToStr(date)+' '+TimeToStr(time));
 
neshifr:='';
shifr:='';
cd:=12;
neshifr:=Memo1.Text;
shifr:=Decode(neshifr,cd);
Memo1.Text:=shifr;
Memo1.Lines.SaveToFile(SaveDialog1.FileName + '.txt');
//---------------------------------------------------------
 
PageControl1.ActivePageIndex := 2;
TabSheet1.tabvisible := False;
TabSheet2.tabvisible := false;
TabSheet3.tabvisible := true;
 
end;
 
end;
 
 
procedure TForm1.N6Click(Sender: TObject);
begin
pro.showmodal;
end;
 
procedure TForm1.N7Click(Sender: TObject);
//label gt;
var pyt:string;
    ixx,ixy :integer;
    //prv:integer;
begin
//gt:
shet:=0;
vpr:=0;
prv:=0;
 
FIO.Clear;
GRUP.Clear;
n2.Enabled:=false;
n11.Enabled:=false;
 
// Очистка отчета
QRLabel1.Caption:='';
QRLabel2.Caption:='';
QRLabel3.Caption:='';
QRLabel4.Caption:='';
QRLabel5.Caption:='';
QRLabel6.Caption:='';
QRLabel7.Caption:='';
QRSysData1.Caption:='';
//------------------------
 
// Очистка вариантов ответов
Var1.Caption:='';
Var2.Caption:='';
Var3.Caption:='';
Var4.Caption:='';
Var5.Caption:='';
Var6.Caption:='';
//--------------------
 
DBText1.Visible:=true;
Var1.Visible:=false;
Var2.Visible:=false;
Var3.Visible:=false;
Var4.Visible:=false;
Var5.Visible:=false;
Var6.Visible:=false;
Button1.Visible:=true;
 
ADOConnection1.Connected:=false;
pyt:='';
OpenDialog1.Execute;
pyt:=OpenDialog1.FileName;
ADOConnection1.ConnectionString:=pyt;
ADOConnection1.Connected:=true;
 
ADOTable1.Active:=true;
ADOTable2.Active:=true;
ADOTable3.Active:=true;
ADOTable4.Active:=true;
ADOTable7.Active:=true;
ADOTable8.Active:=true;
 
for ixy:=1 to ADOTable4.RecordCount do
begin
ADOTable4.Delete;
ADOTable4.Next;
end;
for ixx:=1 to ADOTable3.RecordCount do
begin
ADOTable3.Delete;
ADOTable3.Next;
end;
 
ds:='';
ds:=ADOTable7.FieldByName('Название дисциплины').AsString;
kol_v:=strtoint(ADOTable7.FieldByName('Количество вопросов').AsString);
ix:=ADOTable1.RecordCount;
tm:=StrToInt(ADOTable7.FieldByName('Время').AsString);
prv:=ADOTable1.RecordCount;
 
if (kol_v>(prv-10)) then
begin
ShowMessage('Структура БД не верна, добавьте больше вопросов');
ShowMessage('Программа завершает работу');
//goto gt;
close;
end else
 
 
Form1.Caption:=fm+' '+'по дисциплине'+' '+'"'+ds+'"';
 
PageControl1.ActivePageIndex := 0;
TabSheet1.tabvisible := true;
TabSheet2.tabvisible := false;
TabSheet3.tabvisible := false;
 
 
end;
продолжение следует..............
0
2 / 2 / 1
Регистрация: 23.11.2013
Сообщений: 85
23.11.2014, 22:22  [ТС]
продолжение кода :
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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
DBGrid1.DataSource;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
label q1;
var a:array[1..dsMaxStringSize] of integer;
    b,i,x:integer;
begin
 randomize;
 
 timer1.enabled:=true;
 Min:=tm*60;
 
 if (FIO.Text = '')and(GRUP.Text = '')  then
  begin
   ShowMessage('Заповніть моле "ПІБ"'+#13+#10+
               ' '+#13+#10+
               'Заповніть моле Група');
  end;
 
 if (FIO.Text <> '')and(GRUP.Text = '')  then
  begin
   ShowMessage('Заповніть моле Група');
  end;
 
 if (FIO.Text = '')and(GRUP.Text <> '')  then
  begin
   ShowMessage('Заповніть моле "ПІБ"');
  end;
 
 if (FIO.Text <> '')and(GRUP.Text <> '')  then
  begin
   ShowMessage('Студент:'+' '+FIO.Text +#13+#10+
               ' '+#13+#10+
               'Що навчаеться :'+' '+GRUP.Text +#13+#10+
               ' '+#13+#10+
               'Розпочав тестування');
 
  PageControl1.ActivePageIndex := 1;
  Form1.Width:=780;
form1.Height:=451;
  TabSheet1.tabvisible := false;
  TabSheet2.tabvisible := true;
 
  FAM:=FIO.Text;
  Group:=GRUP.Text;
  Button1.Visible:=true;
 
   for i:=1 to kol_v do
    begin
    b:=random(ix)+1;
    //ShowMessage(inttostr(b));
     for x:=1 to kol_v do
       if (a[i]=b) then continue
        else
         begin
          a[i]:=b;
         end;
    end;
 
     for i:=1 to kol_v do
    //if (inttostr(a[i])<>ADOTable4.FieldByName('Код').AsString) then
      begin
       ADOQuery1.Active := false;
       ADOQuery1.SQL.Clear;
       ADOQuery1.SQL.Add('SELECT * FROM Вопрос WHERE Код = '+inttostr(a[i])+' ');
       ADOQuery1.Active := true;
 
       ADOTable4.Insert;
       ADOTable4.FieldByName('Код').AsString:=DBGrid5.Fields[0].AsString;
       ADOTable4.FieldByName('Вопрос').AsString:=DBGrid5.Fields[1].AsString;
       ADOTable4.FieldByName('ID').AsString:=IntToStr(i);
       ADOTable4.post;
 
       ADOQuery2.Active := false;
       ADOQuery2.SQL.Clear;
       ADOQuery2.SQL.Add('SELECT * FROM Варианты WHERE Код = '+inttostr(a[i])+' ');
       ADOQuery2.Active := true;
 
       ADOTable3.Insert;
       ADOTable3.FieldByName('Код').AsString:=DBGrid5.Fields[0].AsString;
       ADOTable3.FieldByName('Ответ 1').AsString:=DBGrid6.Fields[1].AsString;
       ADOTable3.FieldByName('Ответ 2').AsString:=DBGrid6.Fields[2].AsString;
       ADOTable3.FieldByName('Ответ 3').AsString:=DBGrid6.Fields[3].AsString;
       ADOTable3.FieldByName('Ответ 4').AsString:=DBGrid6.Fields[4].AsString;
       ADOTable3.FieldByName('Ответ 5').AsString:=DBGrid6.Fields[5].AsString;
       ADOTable3.FieldByName('Ответ 6').AsString:=DBGrid6.Fields[6].AsString;
       ADOTable3.FieldByName('ID').AsString:=IntToStr(i); 
       ADOTable3.post;
     end;
     
end;
 
 
ADOTable3.First;
ADOTable4.First;
 
Var1.Caption:='';
Var2.Caption:='';
Var3.Caption:='';
Var4.Caption:='';
Var5.Caption:='';
Var6.Caption:='';
 
Var1.Visible:=false;
Var2.Visible:=false;
Var3.Visible:=false;
Var4.Visible:=false;
Var5.Visible:=false;
Var6.Visible:=false;
 
if (ADOTable3.FieldByName('Ответ 1').AsString<>'') then
begin
Var1.Visible:=true;
Var1.Caption:=ADOTable3.FieldByName('Ответ 1').AsString;
end;
 
if (ADOTable3.FieldByName('Ответ 2').AsString<>'') then
begin
Var2.Visible:=true;
Var2.Caption:=ADOTable3.FieldByName('Ответ 2').AsString;
end;
 
if (ADOTable3.FieldByName('Ответ 3').AsString<>'') then
begin
Var3.Visible:=true;
Var3.Caption:=ADOTable3.FieldByName('Ответ 3').AsString;
end;
 
if (ADOTable3.FieldByName('Ответ 4').AsString<>'') then
begin
Var4.Visible:=true;
Var4.Caption:=ADOTable3.FieldByName('Ответ 4').AsString;
end;
 
if (ADOTable3.FieldByName('Ответ 5').AsString<>'') then
begin
Var5.Visible:=true;
Var5.Caption:=ADOTable3.FieldByName('Ответ 5').AsString;
end;
 
if (ADOTable3.FieldByName('Ответ 6').AsString<>'') then
begin
Var6.Visible:=true;
Var6.Caption:=ADOTable3.FieldByName('Ответ 6').AsString;
end;
 
inc(vpr);
inc(shet);
 
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 
{// Проверка на наличие выбора варианта ответа
if not ((Var1.Checked=false)and(Var2.Checked=false)and(Var3.Checked=false)and(Var4.Checked=false)and(Var5.Checked=false)and(Var6.Checked=false)) then
begin
ShowMessage('Выберите вариант ответа');
end else }
 
inc(vpr);
 
ADOTable3.Next;
ADOTable4.Next;
 
Var1.Caption:='';
Var2.Caption:='';
Var3.Caption:='';
Var4.Caption:='';
Var5.Caption:='';
Var6.Caption:='';
 
Var1.Checked:=false;
Var2.Checked:=false;
Var3.Checked:=false;
Var4.Checked:=false;
Var5.Checked:=false;
Var6.Checked:=false;
 
Var1.Visible:=false;
Var2.Visible:=false;
Var3.Visible:=false;
Var4.Visible:=false;
Var5.Visible:=false;
Var6.Visible:=false;
 
// Проверка на наличие вариантов, если нет, то вариант не отображается
if (ADOTable3.FieldByName('Ответ 1').AsString<>'') then
begin
Var1.Visible:=true;
Var1.Caption:=ADOTable3.FieldByName('Ответ 1').AsString;
end;
 
if (ADOTable3.FieldByName('Ответ 2').AsString<>'') then
begin
Var2.Visible:=true;
Var2.Caption:=ADOTable3.FieldByName('Ответ 2').AsString;
end;
 
if (ADOTable3.FieldByName('Ответ 3').AsString<>'') then
begin
Var3.Visible:=true;
Var3.Caption:=ADOTable3.FieldByName('Ответ 3').AsString;
end;
 
if (ADOTable3.FieldByName('Ответ 4').AsString<>'') then
begin
Var4.Visible:=true;
Var4.Caption:=ADOTable3.FieldByName('Ответ 4').AsString;
end;
 
if (ADOTable3.FieldByName('Ответ 5').AsString<>'') then
begin
Var5.Visible:=true;
Var5.Caption:=ADOTable3.FieldByName('Ответ 5').AsString;
end;
 
if (ADOTable3.FieldByName('Ответ 6').AsString<>'') then
begin
Var6.Visible:=true;
Var6.Caption:=ADOTable3.FieldByName('Ответ 6').AsString;
end;
 
if (vpr>kol_v) then
begin
DBText1.Visible:=false;
 
Var1.Visible:=false;
Var2.Visible:=false;
Var3.Visible:=false;
Var4.Visible:=false;
Var5.Visible:=false;
Var6.Visible:=false;
 
Button1.Visible:=false;
 
razn:=(shet/vpr)*100;
      if ((razn>=0)and(razn<=49))then
      begin
      ocen:='2';
      end;
      if ((razn>=50)and(razn<=69))then
      begin
      ocen:='3';
      end;
      if ((razn>=70)and(razn<=89))then
      begin
      ocen:='4';
      end;
      if ((razn>=90)and(razn<=100))then
      begin
      ocen:='5';
      end;
 
 
QRLabel1.Caption:='';
QRLabel2.Caption:='';
QRLabel3.Caption:='';
QRLabel4.Caption:='';
QRLabel5.Caption:='';
QRLabel6.Caption:='';
QRLabel7.Caption:='';
 
QRSysData1.Caption:='';
 
    QRLabel1.Caption:='Дисципліна:'+' '+ds;
QRLabel2.Caption:='ПІБ:'+' '+Fam;
QRLabel3.Caption:='Група\факультет:'+' '+Group;
QRLabel4.Caption:=' '+'Кількість тестових запитань:'+' '+IntToStr(kol_v);
QRLabel5.Caption:=' '+'Кількість наданих відповідей:'+' '+IntToStr(vpr-1);
QRLabel6.Caption:=' '+'Кількість вірних відповідей:'+' '+IntToStr(shet-1);
QRLabel7.Caption:=' '+'Приблизна оцінка знань:'+' '+ocen;
 
 
 
QRSysData1.Caption:=DateTimeToStr(Date)+' '+TimeToStr(time);
 
N2.Enabled:=true;
n11.Enabled:=true;
 
 
SaveDialog1.FileName := FAM;
Memo1.Clear;
Memo1.Lines.Add('Дисципліна:'+' '+ds);
Memo1.Lines.Add('');
Memo1.Lines.Add('ПІБ:'+' '+Fam);
Memo1.Lines.Add('');
Memo1.Lines.Add('Група\факультет:'+' '+Group);
Memo1.Lines.Add('');
Memo1.Lines.Add('Кількість тестових запитань:'+' '+IntToStr(kol_v));
Memo1.Lines.Add('');
Memo1.Lines.Add('Кількість наданих відповідей:'+' '+IntToStr(vpr-1));
Memo1.Lines.Add('');
Memo1.Lines.Add('Кількість вірних відповідей:'+' '+IntToStr(shet-1));
Memo1.Lines.Add('');
Memo1.Lines.Add('Приблизна оцінка знань:'+' '+ocen);
Memo1.Lines.Add('');
Memo1.Lines.Add('Дата:'+' '+DateToStr(date)+' '+TimeToStr(time));
 
 
neshifr:='';
shifr:='';
cd:=12;
neshifr:=Memo1.Text;
shifr:=Decode(neshifr,cd);
Memo1.Text:=shifr;
Memo1.Lines.SaveToFile(SaveDialog1.FileName + '.txt');
 
PageControl1.ActivePageIndex := 2;
TabSheet1.tabvisible := False;
TabSheet2.tabvisible := false;
TabSheet3.tabvisible := true;
 
Timer1.Enabled:=false;
end else
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Position:=poScreenCenter;
fm:=Form1.Caption;
Form1.Width:=703;
form1.Height:=235;
end;
 
procedure TForm1.Var1Click(Sender: TObject);
begin
if (Var1.Checked=true)then
begin
inc(shet);
end;
end;
 
procedure TForm1.N2Click(Sender: TObject);
begin
QuickRep1.Preview;
end;
 
procedure TForm1.FormShow(Sender: TObject);
begin
logo.showmodal;
end;
 
procedure TForm1.N11Click(Sender: TObject);
var
ixxx,ixyy :integer;
begin
shet:=0;
vpr:=0;
prv:=0;
 
FIO.Clear;
GRUP.Clear;
n2.Enabled:=false;
 
// Очистка отчета
QRLabel1.Caption:='';
QRLabel2.Caption:='';
QRLabel3.Caption:='';
QRLabel4.Caption:='';
QRLabel5.Caption:='';
QRLabel6.Caption:='';
QRLabel7.Caption:='';
QRSysData1.Caption:='';
//------------------------
 
// Очистка вариантов ответов
Var1.Caption:='';
Var2.Caption:='';
Var3.Caption:='';
Var4.Caption:='';
Var5.Caption:='';
Var6.Caption:='';
//--------------------
 
DBText1.Visible:=true;
Var1.Visible:=false;
Var2.Visible:=false;
Var3.Visible:=false;
Var4.Visible:=false;
Var5.Visible:=false;
Var6.Visible:=false;
Button1.Visible:=true;
 
for ixyy:=1 to ADOTable4.RecordCount do
begin
ADOTable4.Delete;
ADOTable4.Next;
end;
for ixxx:=1 to ADOTable3.RecordCount do
begin
ADOTable3.Delete;
ADOTable3.Next;
end;
 
PageControl1.ActivePageIndex := 0;
TabSheet1.tabvisible := true;
TabSheet2.tabvisible := false;
TabSheet3.tabvisible := false;
end;
 
procedure TForm1.TabSheet3Show(Sender: TObject);
begin
form1.Width:=942;
end;
 
procedure TForm1.sSpeedButton1Click(Sender: TObject);
begin
QuickRep1.Preview;
end;
 
 
procedure TForm1.sSpeedButton2Click(Sender: TObject);
begin
N7.Click;
end;
 
end.
тчк.
0
2 / 2 / 1
Регистрация: 23.11.2013
Сообщений: 85
23.11.2014, 22:25  [ТС]
PS: Ежели кому интересно-могу скинуть исходники на почту- пишите лс.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.11.2014, 22:25
Помогаю со студенческими работами здесь

Поиск максимальных компонент в виде подрограмм, поиск значения функции
Очень нужна помощь, срочно. Хотя бы просто помогите с алгоритмом, код написать мб сам справлюсь. Задачи 2 и 3. Предельно благодарен.

Поиск второго пробела в строке, функции =ПОИСК или =НАЙТИ
Всем доброго времени суток. Есть строка ул. Северная д15 и в ней необходимо определить позицию второго пробела, того, который после...

Поиск символа не могу переделать под поиск сочетания символов
Есть код программы на поиск и замену по одному символу.Не могу понять, как сделать код на поиск сочетания символов. Чтобы найдя в введённой...

Вирус в хроме заменил поиск по умолчанию на поиск маил ру + реклама
Здравствуйте,при поиске в гугле перекидывает на маил.ру. + Появилась реклама в браузере Удалял с помощью Revo Uninstaller, ничего не...

Составление кубиков, поиск в пространстве состояний, монотонный поиск в ширину [Turbo Prolog]
Помогите решить задачу с кубиками в турбо прологе с несложной визуализацией. Имеется произвольное число кубиков, из которых составлены...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru