for
Olá,
Estou desenvolvendo um programa muito simples,
onde tenho um questionário de satisfação com 16 perguntas,
onde existem três opções de resposta para cada pergunta: Bom, Regular e Ruim.
O meu problema é que não consigo gravar estes dados, pensei em usar um for para fazer um loop, mas não sei como.
Estou usando uma tabela Paradox, com os seguintes campos: numQuestionario, numPergunta, Bom, Regular, Ruim, Nulo.
Preciso que para cada questionário ele grave as 16 respostas, mas é aí que está meu problema não sei como fazer este laço.
Estou enviando parte do meu código:
procedure TForm1.btnConfirmarClick(Sender: TObject);
var
questao: array[1..16] of integer;
begin
Pesquisa.Edit;
if rg1.ItemIndex = -1 then begin
Pesquisa.FieldByName(´Nulo´).AsString := ´X´;
Pesquisa.FieldByName(´NumPergunta´).AsString := ´1´;
end else begin
Pesquisa.FieldByName(´NumPergunta´).AsString := ´1´;
case rg1.ItemIndex of
0 : Pesquisa.FieldByName(´Bom´).AsString := ´X´;
1 : Pesquisa.FieldByName(´Regular´).AsString := ´X´;
2 : Pesquisa.FieldByName(´Ruim´).AsString := ´X´;
end;
end;
if rg2.ItemIndex = -1 then begin
Pesquisa.FieldByName(´Nulo´).AsString := ´X´;
Pesquisa.FieldByName(´NumPergunta´).AsString := ´2´;
end else begin
Pesquisa.FieldByName(´NumPergunta´).AsString := ´2´;
case rg2.ItemIndex of
0 : Pesquisa.FieldByName(´Bom´).AsString := ´X´;
1 : Pesquisa.FieldByName(´Regular´).AsString := ´X´;
2 : Pesquisa.FieldByName(´Ruim´).AsString := ´X´;
end;
end;
if rg2_1.ItemIndex = -1 then begin
Pesquisa.FieldByName(´Nulo´).AsString := ´X´;
Pesquisa.FieldByName(´NumPergunta´).AsString := ´2_1´;
end else begin
Pesquisa.FieldByName(´NumPergunta´).AsString := ´2_1´;
case rg2_1.ItemIndex of
0 : Pesquisa.FieldByName(´Bom´).AsString := ´X´;
1 : Pesquisa.FieldByName(´Regular´).AsString := ´X´;
2 : Pesquisa.FieldByName(´Ruim´).AsString := ´X´;
end;
end;
if rg2_2.ItemIndex = -1 then begin
Pesquisa.FieldByName(´Nulo´).AsString := ´X´;
Pesquisa.FieldByName(´NumPergunta´).AsString := ´2_2´;
end else begin
Pesquisa.FieldByName(´NumPergunta´).AsString := ´2_2´;
case rg2_2.ItemIndex of
0 : Pesquisa.FieldByName(´Bom´).AsString := ´X´;
1 : Pesquisa.FieldByName(´Regular´).AsString := ´X´;
2 : Pesquisa.FieldByName(´Ruim´).AsString := ´X´;
end;
end;
if rg2_3.ItemIndex = -1 then begin
Pesquisa.FieldByName(´Nulo´).AsString := ´X´;
Pesquisa.FieldByName(´NumPergunta´).AsString := ´2_3´;
end else begin
Pesquisa.FieldByName(´NumPergunta´).AsString := ´2_3´;
case rg2_3.ItemIndex of
0 : Pesquisa.FieldByName(´Bom´).AsString := ´X´;
1 : Pesquisa.FieldByName(´Regular´).AsString := ´X´;
2 : Pesquisa.FieldByName(´Ruim´).AsString := ´X´;
end;
end;
Pesquisa.Post;
Se alguém puder me dar uma luz!! Obrigada...
Estou desenvolvendo um programa muito simples,
onde tenho um questionário de satisfação com 16 perguntas,
onde existem três opções de resposta para cada pergunta: Bom, Regular e Ruim.
O meu problema é que não consigo gravar estes dados, pensei em usar um for para fazer um loop, mas não sei como.
Estou usando uma tabela Paradox, com os seguintes campos: numQuestionario, numPergunta, Bom, Regular, Ruim, Nulo.
Preciso que para cada questionário ele grave as 16 respostas, mas é aí que está meu problema não sei como fazer este laço.
Estou enviando parte do meu código:
procedure TForm1.btnConfirmarClick(Sender: TObject);
var
questao: array[1..16] of integer;
begin
Pesquisa.Edit;
if rg1.ItemIndex = -1 then begin
Pesquisa.FieldByName(´Nulo´).AsString := ´X´;
Pesquisa.FieldByName(´NumPergunta´).AsString := ´1´;
end else begin
Pesquisa.FieldByName(´NumPergunta´).AsString := ´1´;
case rg1.ItemIndex of
0 : Pesquisa.FieldByName(´Bom´).AsString := ´X´;
1 : Pesquisa.FieldByName(´Regular´).AsString := ´X´;
2 : Pesquisa.FieldByName(´Ruim´).AsString := ´X´;
end;
end;
if rg2.ItemIndex = -1 then begin
Pesquisa.FieldByName(´Nulo´).AsString := ´X´;
Pesquisa.FieldByName(´NumPergunta´).AsString := ´2´;
end else begin
Pesquisa.FieldByName(´NumPergunta´).AsString := ´2´;
case rg2.ItemIndex of
0 : Pesquisa.FieldByName(´Bom´).AsString := ´X´;
1 : Pesquisa.FieldByName(´Regular´).AsString := ´X´;
2 : Pesquisa.FieldByName(´Ruim´).AsString := ´X´;
end;
end;
if rg2_1.ItemIndex = -1 then begin
Pesquisa.FieldByName(´Nulo´).AsString := ´X´;
Pesquisa.FieldByName(´NumPergunta´).AsString := ´2_1´;
end else begin
Pesquisa.FieldByName(´NumPergunta´).AsString := ´2_1´;
case rg2_1.ItemIndex of
0 : Pesquisa.FieldByName(´Bom´).AsString := ´X´;
1 : Pesquisa.FieldByName(´Regular´).AsString := ´X´;
2 : Pesquisa.FieldByName(´Ruim´).AsString := ´X´;
end;
end;
if rg2_2.ItemIndex = -1 then begin
Pesquisa.FieldByName(´Nulo´).AsString := ´X´;
Pesquisa.FieldByName(´NumPergunta´).AsString := ´2_2´;
end else begin
Pesquisa.FieldByName(´NumPergunta´).AsString := ´2_2´;
case rg2_2.ItemIndex of
0 : Pesquisa.FieldByName(´Bom´).AsString := ´X´;
1 : Pesquisa.FieldByName(´Regular´).AsString := ´X´;
2 : Pesquisa.FieldByName(´Ruim´).AsString := ´X´;
end;
end;
if rg2_3.ItemIndex = -1 then begin
Pesquisa.FieldByName(´Nulo´).AsString := ´X´;
Pesquisa.FieldByName(´NumPergunta´).AsString := ´2_3´;
end else begin
Pesquisa.FieldByName(´NumPergunta´).AsString := ´2_3´;
case rg2_3.ItemIndex of
0 : Pesquisa.FieldByName(´Bom´).AsString := ´X´;
1 : Pesquisa.FieldByName(´Regular´).AsString := ´X´;
2 : Pesquisa.FieldByName(´Ruim´).AsString := ´X´;
end;
end;
Pesquisa.Post;
Se alguém puder me dar uma luz!! Obrigada...
Daia
Curtidas 0
Respostas
Edilcimar
14/04/2005
coloque após cada pergunta um radiobox com 3 opções e depois pegue o valor da opção selecionada e grave no banco o valor
GOSTEI 0
Daia
14/04/2005
ok, isso eu fiz. Tenho um componente TRadioGroup (da paleta Standart) e fiz três opções: Bom, Ruim, Regular.
O que ele grava no banco quando clico no botão Confirmar é o seguinte:
numQuestionário NumPergunta Bom Regular Ruim Nulo
2_3 X X
mas ele deveria gravar desse jeito:
numQuestionário NumPergunta Bom Regular Ruim Nulo
1 1 X
1 2 X
1 2_1 X
1 2_2 X
1 2_3 X
Para cada pergunta ele deveria gravar as respostas...
O que ele grava no banco quando clico no botão Confirmar é o seguinte:
numQuestionário NumPergunta Bom Regular Ruim Nulo
2_3 X X
mas ele deveria gravar desse jeito:
numQuestionário NumPergunta Bom Regular Ruim Nulo
1 1 X
1 2 X
1 2_1 X
1 2_2 X
1 2_3 X
Para cada pergunta ele deveria gravar as respostas...
GOSTEI 0
Rjun
14/04/2005
Faça assim para da pergunta :
Pesquisa.Insert; if rg2.ItemIndex = -1 then begin Pesquisa.FieldByName(´Nulo´).AsString := ´X´; Pesquisa.FieldByName(´NumPergunta´).AsString := ´2´; end else begin Pesquisa.FieldByName(´NumPergunta´).AsString := ´2´; case rg2.ItemIndex of 0 : Pesquisa.FieldByName(´Bom´).AsString := ´X´; 1 : Pesquisa.FieldByName(´Regular´).AsString := ´X´; 2 : Pesquisa.FieldByName(´Ruim´).AsString := ´X´; end; end; Pesquisa.Post;
GOSTEI 0
Daia
14/04/2005
não funcionou...
GOSTEI 0
Rjun
14/04/2005
Você colocou o Insert antes de cada IF ?
GOSTEI 0
Daia
14/04/2005
eu só tinha colocado no primeiro.
Mas agora arrumei, coloquei em todos e funcionou!!! Que bom, mas não entendi, achei que tivesse que usar uma instrução de repetição...
Valeu...por enquanto...
Mas agora arrumei, coloquei em todos e funcionou!!! Que bom, mas não entendi, achei que tivesse que usar uma instrução de repetição...
Valeu...por enquanto...
GOSTEI 0
Rjun
14/04/2005
Uma solução seria a seguinte :
var Questoes: Array[1..16] of TRadioGroup; i: Integer; begin // Atribui para o vetor cada radiogroup Questoes[01] := radQuestao1; Questoes[02] := radQuestao2; Questoes[03] := radQuestao1; Questoes[04] := radQuestao2; Questoes[05] := radQuestao1; Questoes[06] := radQuestao2; Questoes[07] := radQuestao1; Questoes[08] := radQuestao2; Questoes[09] := radQuestao1; Questoes[10] := radQuestao2; Questoes[11] := radQuestao1; Questoes[12] := radQuestao2; Questoes[13] := radQuestao1; Questoes[14] := radQuestao1; Questoes[15] := radQuestao2; Questoes[16] := radQuestao1; for i := 1 to 16 do begin Pesquisa.Insert; if Questoes[i].ItemIndex = -1 then begin Pesquisa.FieldByName(´Nulo´).AsString := ´X´; Pesquisa.FieldByName(´NumPergunta´).AsString := i; end else begin Pesquisa.FieldByName(´NumPergunta´).AsString := i; case Questoes[i].ItemIndex of 0 : Pesquisa.FieldByName(´Bom´).AsString := ´X´; 1 : Pesquisa.FieldByName(´Regular´).AsString := ´X´; 2 : Pesquisa.FieldByName(´Ruim´).AsString := ´X´; end; end; Pesquisa.Post; end; end;
GOSTEI 0
Rjun
14/04/2005
Onde se lê
Leia-se
Questoes[01] := radQuestao1;
Questoes[02] := radQuestao2;
Questoes[03] := radQuestao1;
Questoes[04] := radQuestao2;
Questoes[05] := radQuestao1;
Questoes[06] := radQuestao2;
Questoes[07] := radQuestao1;
Questoes[08] := radQuestao2;
Questoes[09] := radQuestao1;
Questoes[10] := radQuestao2;
Questoes[11] := radQuestao1;
Questoes[12] := radQuestao2;
Questoes[13] := radQuestao1;
Questoes[14] := radQuestao1;
Questoes[15] := radQuestao2;
Questoes[16] := radQuestao1;
Leia-se
Questoes[01] := radQuestao1; Questoes[02] := radQuestao2; Questoes[03] := radQuestao3; Questoes[04] := radQuestao4; Questoes[05] := radQuestao5; Questoes[06] := radQuestao6; Questoes[07] := radQuestao7; Questoes[08] := radQuestao8; Questoes[09] := radQuestao9; Questoes[10] := radQuestao10; Questoes[11] := radQuestao11; Questoes[12] := radQuestao12; Questoes[13] := radQuestao13; Questoes[14] := radQuestao14; Questoes[15] := radQuestao15; Questoes[16] := radQuestao16;
GOSTEI 0