none
Aplicação Questionário. RRS feed

  • Pergunta

  • Estou montando uma aplicação em C# para um questionário.
    Este questionário tem várias perguntas, de modo que fica melhor organiza-lho entre vários "windows forms".

    Assim, responderia 10 perguntas no form1, 10 no form 2 e assim por diante. Ao chegar no último form, gravaria os dados no banco.

    A duvida fundamental é como passar os dados entre os forms, acumulando-os para no último form fazer o insert no banco de dados.

    Pensei em em passar os dados através dos construtores dos formulários, mas no final o ultimo formulário teria uma quantidade imensa de parâmetros em seu construtor.

    Possivelmente haveria também a necessidade de revisar cada form antes de gravar, o que inviabiliza também o uso dos construtores.

    Será que existe alguma outra abordagem para tratar isto?

    Agradeço desde já

    segunda-feira, 8 de outubro de 2012 14:56

Respostas

  • Nesse caso acredito que esta seja a melhor opção..

    SELECT @@IDENTITY — Retorna o último ID inserido na conexão atual,


    Se a resposta foi útil por favor qualifique! Janderson Candido de Mattos - MCPD

    • Marcado como Resposta Rodrigo Calado segunda-feira, 8 de outubro de 2012 18:43
    segunda-feira, 8 de outubro de 2012 18:24

Todas as Respostas

  • Você não pensa que ao final de cada form seria melhor salvar as respostas no banco?

    Assim desta forma você consegue até saber aonde o usuário parou de responder se acontecer algum problema ou alguma outra situação.


    Se a resposta foi útil por favor qualifique! Janderson Candido de Mattos - MCPD

    segunda-feira, 8 de outubro de 2012 16:02
  • Obrigado pela resposta Janderson.

    Pensei nesta abordagem de inserir os dados no banco ao final de cada formulário.
    Assim o primeiro form faria um insert e os demais fariam update.

    Mas como recuperar no form2 o id que foi gerado ao fazer o insert das respostas do form1?

    Por exemplo:

    Tenho no banco de dados uma tabela com a seguinte estrutura:
    idResposta (numeração automática), resposta1, resposta2, resposta3,resposta4

    no form1, faria um insert nas colunas resposta1,resposta2
    no form2 teria que recuperar o id para atualizar as colunas resposta3,resposta4
    e assim por diante.

    Essa é a ideia ou existe uma abordagem melhor?


    segunda-feira, 8 de outubro de 2012 16:12
  • Você poderia inserir as primeiras respostas e já recuperar esse último ID, na mesma consulta, usando alguma dessas formas:

    http://mipnet.com.br/blog/?p=101

    Para os próximos Forms você apenas iria passar como parâmetro esse último ID.


    Se a resposta foi útil por favor qualifique! Janderson Candido de Mattos - MCPD

    • Sugerido como Resposta M a i c o n segunda-feira, 8 de outubro de 2012 16:59
    segunda-feira, 8 de outubro de 2012 16:45
  • Não conhecia isto. Acho que se encaixa perfeitamente.

    Só fiquei preocupado com uma questão.
    Se mais de um usuário estiver fazendo insert ao mesmo tempo, não corremos o risco do id recuperado ser o de outro questionário?

    segunda-feira, 8 de outubro de 2012 18:13
  • Nesse caso acredito que esta seja a melhor opção..

    SELECT @@IDENTITY — Retorna o último ID inserido na conexão atual,


    Se a resposta foi útil por favor qualifique! Janderson Candido de Mattos - MCPD

    • Marcado como Resposta Rodrigo Calado segunda-feira, 8 de outubro de 2012 18:43
    segunda-feira, 8 de outubro de 2012 18:24
  • Janderson, obrigado pela atenção.

    Vou implementar.

    segunda-feira, 8 de outubro de 2012 18:42