for

Delphi

14/04/2005

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...


Daia

Daia

Curtidas 0

Respostas

Edilcimar

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

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...


GOSTEI 0
Rjun

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

Daia

14/04/2005

não funcionou...


GOSTEI 0
Rjun

Rjun

14/04/2005

Você colocou o Insert antes de cada IF ?


GOSTEI 0
Daia

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...


GOSTEI 0
Rjun

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

Rjun

14/04/2005

Onde se lê

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
POSTAR