none
GridView para sistema de frequência. RRS feed

  • Pergunta

  • Olá gente, estou precisando de uma ajuda para montar uma grid para um sistema escolar com frequencia.

    Então, ja tenho uma tabela com os seguintes itens, alguns ja preenchidos, na logica so irei executar um UPDATE.

    tbFrequencia

    id / matricula / aluno / 1 / 2... / 31 / totalAulas / totalFaltas / serie / turma / turno / disciplina / professor / mes / obs

    01/ 1010    / jose  /   /      /     /                 /                  /  5ª   /  B      / MAT  /               /                /        /

    //////////////////////////////////

    O problema venha aqui, nao estou tendo criatividade para bolar um jeito de criar os doze meses do ano de 01/2016 a 12/2016 duplicando todos os registros que serao adicionados no campo mes. Para esclarecer, serao 01/2016 a 12/2016 duplicando o id 01.

    Ai vem outro problema, preciso adicionar tbm esses meses e mais as disciplinas em conjunto com os professores.

    Seria mais ou menos assim: Para cada disciplina seria duplicado o id 01 12x, respectivamente para cada mês de 01/2016 a 12/2016. Que so assim eu so teria que ticar os checkbox dos dias para informar a presença (frequência), fazendo um UPDATE.

    Entao fica aberto ai uma sugestão melhor e nao tão complicado como citei acima.

    Aguardo a colaboração.


    quarta-feira, 23 de março de 2016 22:34

Respostas

  • Bom dia Sigrids,

    Apesar de o fórum não fornecer "How To",  você pode fazer da seguinte maneira:

    No c#, creio eu que você esteja usando o entityframework, se sim, basta você fazer um FOR de 1 até 12, repetindo a inserção, já que que o ID é auto increment.

    Depois é fácil, você vai estar passando a data no update e vai funcionar!


    Att., Roberto Alves

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Sugerido como Resposta Roberto AB Filho quinta-feira, 24 de março de 2016 14:23
    • Marcado como Resposta Marcos SJ quinta-feira, 24 de março de 2016 14:23
    • Não Marcado como Resposta Sigrids LIma sexta-feira, 25 de março de 2016 18:01
    • Marcado como Resposta Marcos SJ segunda-feira, 28 de março de 2016 14:31
    quinta-feira, 24 de março de 2016 14:22

Todas as Respostas

  • Bom dia Sigrids,

    Apesar de o fórum não fornecer "How To",  você pode fazer da seguinte maneira:

    No c#, creio eu que você esteja usando o entityframework, se sim, basta você fazer um FOR de 1 até 12, repetindo a inserção, já que que o ID é auto increment.

    Depois é fácil, você vai estar passando a data no update e vai funcionar!


    Att., Roberto Alves

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Sugerido como Resposta Roberto AB Filho quinta-feira, 24 de março de 2016 14:23
    • Marcado como Resposta Marcos SJ quinta-feira, 24 de março de 2016 14:23
    • Não Marcado como Resposta Sigrids LIma sexta-feira, 25 de março de 2016 18:01
    • Marcado como Resposta Marcos SJ segunda-feira, 28 de março de 2016 14:31
    quinta-feira, 24 de março de 2016 14:22
  • ola estou precisando salvar um mesmo registro repetido 12 veses referente aos meses do ano

    o id e auto incremento

    id  /  nome  /  mes

    01 / jose   / 01/16

    02 / jose /  02/16

    03 ... / jose / ...

    12 / jose / 12/12

    aguardo

    • Mesclado Marcos SJ sexta-feira, 25 de março de 2016 16:43 Thread duplicada
    sexta-feira, 25 de março de 2016 14:50
  • Boa tarde Sigrids LIma,

    Tudo bem?

    Peço que por gentileza não crie novas threads duplicadas, todas elas serão deletadas e / ou mescladas se forem criadas em duplicidade. Caso discorde da resposta marcada, explique o porque para que os usuários envolvidos no caso possam te auxiliar. Do contrário continuaremos mesclando ou deletando as threads duplicadas.

    Atenciosamente


    Marcos SJ

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    sexta-feira, 25 de março de 2016 16:47
  • ok marcos nao esta i tendendo a exclusao do thread.

    Entao obrigado roberto pela dica. fazendo um for no insert  e conseguindo gravar esses registros duplicados resolveria meu problema.

    aguardo

    sexta-feira, 25 de março de 2016 18:08
  • Ahh,

    Se o que eu falei atende eu não entendi a sua dúvida nesse atual momento!

    Se expresse melhor por favor!


    Att., Roberto Alves

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    sexta-feira, 25 de março de 2016 18:11
  • Olá Sigrids LIma,

    Não entendi se a sua pergunta foi ou não respondida. Você acabou de dizer o que precisava fazer, falta algo mais para resolver a thread?

    Atenciosamente


    Marcos SJ

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.


    • Editado Marcos SJ sexta-feira, 25 de março de 2016 18:47
    sexta-feira, 25 de março de 2016 18:46
  • Ainda nao foi resolvido, tenho resolver como irei salvar os registros duplicados com os meses.
    sexta-feira, 25 de março de 2016 19:56
  • Gente conseguir fazer alguma coisa dando um loop com o for, mas estou encrencado em um erro no metodo de salvar.

    internal class duplicarRegistro
            {
                #region Atributos
                private int id;
                private String strTxtNome;
                private DateTime? dtmDataInicio;
                private DateTime? dtmDataFinal;
                #endregion

                #region Propriedades
                public int Id
                {
                    get { return id; }
                    set { id = value; }
                }
                public DateTime? DtmDataFinal
                {
                    get { return dtmDataFinal; }
                    set { dtmDataFinal = value; }
                }
                public DateTime? DtmDataInicio
                {
                    get { return dtmDataInicio; }
                    set { dtmDataInicio = value; }
                }

                public String StrTxtNome
                {
                    get { return strTxtNome; }
                    set { strTxtNome = value; }
                }
                #endregion

                internal static void Salvar(duplicarRegistro st)
                {
                    //Aqui você implementa seu método de salvar
                    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Aluno.Properties.Settings.AlunoConnectionString"].ConnectionString);

                    conn.Open();

                    SqlCommand Comando = conn.CreateCommand();

                    Comando.CommandType = CommandType.Text;
                    Comando.CommandText = "INSERT INTO tbAluno (aluno,inicio,terminio) values(@aluno,@inicio,@terminio);";

    /////// aqui apresenta o erro "this" ////Error    1    Keyword 'this' is not valid in a static property, static method, or static field initializer.

                    Comando.Parameters.Add("@aluno", System.Data.SqlDbType.VarChar).Value = this.txtNome.Text;
                    Comando.Parameters.Add("@inicio", System.Data.SqlDbType.DateTime).Value = this.dtpInicio.Text;
                    Comando.Parameters.Add("@terminio", System.Data.SqlDbType.DateTime).Value = this.dtpTermino.Text;

                    Comando.ExecuteNonQuery();
                    conn.Close();
                }
            }

     private void btnSalvar_Click(object sender, EventArgs e)
            {
                DateTime dtmFinal = Convert.ToDateTime(dtpInicio.Text);
                DateTime dtmInicial = Convert.ToDateTime(dtpTermino.Text);

                //Primeiro passo é preencher o objeto com os dados que irão se repetir
                duplicarRegistro st = new duplicarRegistro()
                {
                    StrTxtNome = String.IsNullOrEmpty(txtNome.Text) ? "-" : txtNome.Text,
                    DtmDataInicio = dtmInicial
                };

                duplicarRegistro stAuxiliar = null;
                int iDias = dtmFinal.Subtract(dtmInicial).Days;
                for (int i = 0; i < iDias; i++)
                {
                    DateTime dtm = dtmInicial;
                    dtm = dtm.AddDays(i);
                    stAuxiliar = st;
                    stAuxiliar.DtmDataInicio = dtm;
                    duplicarRegistro.Salvar(stAuxiliar);
                }

                negocio.PreencherDataGrid(dgvNome);
            }

    Aguardo um ajuda.

    • Marcado como Resposta Marcos SJ segunda-feira, 28 de março de 2016 12:40
    • Não Marcado como Resposta Marcos SJ segunda-feira, 28 de março de 2016 12:41
    sábado, 26 de março de 2016 14:23
  • Bom dia Sigrids LIma,

    Poderia explicar qual seria este erro e compartilhar a mensagem de erro que está ocorrendo?

    Caso a pergunta desta thread tenha sido resolvida, peço que marque a postagem de resposta e abra uma nova thread com a sua outra pergunta.

    Atenciosamente


    Marcos SJ

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.


    • Editado Marcos SJ segunda-feira, 28 de março de 2016 12:43
    segunda-feira, 28 de março de 2016 12:42
  • Entao resolvir da seguinnte maneira, obrigado pela ideia Roberto Alves.

    Adicionei os registros que queria repetir na grid.

                dgvMes.Rows.Add(new object[] { "1", txtAluno.Text, dtpInicio.Text, dtpTerminio.Text, txtDisciplina.Text });});

    Depois gravei todos os registros que estavam na grid.

    {
                try
                {
                    {
                        if (dgvMes.Rows.Count > 1)
                        {
                            for (int i = 0; i <= dgvParcelas.Rows.Count - 1; i++)
                            {
                                int col0 = Convert.ToInt32(dgvMess.Rows[i].Cells[0].Value); //id
                                string col1 =dgvMes.Rows[i].Cells[1].Value.ToString(); //aluno
                                string col2 = dgvMes.Rows[i].Cells[2].Value.ToString(); //inicio
                                string col3 = dgvMes.Rows[i].Cells[3].Value.ToString(); //terminio     

                               string col4 = dgvMes.Rows[i].Cells[3].Value.ToString(); //disciplina

                                using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["Aluno.Properties.Settings.AlunoConnectionString"].ConnectionString))
                                {
                                    string insert = "INSERT INTO tbAluno(aluno,inicio,terminio,disciplina) VALUES (@aluno,@inicio,@terminio,@disciplina)";
                                    con.Open();
                                    SqlCommand cmd = new SqlCommand(insert, con);
                                    cmd.Parameters.AddWithValue("@id", col0);

                                    cmd.Parameters.AddWithValue("@aluno", col1);
                                    cmd.Parameters.AddWithValue("@inicio", col2);
                                    cmd.Parameters.AddWithValue("@terminio", col3);

              cmd.Parameters.AddWithValue("@disciplina", col4);

                                    cmd.ExecuteNonQuery();
                                    con.Close();
                                }
                            }
                        }
                        MessageBox.Show("aluno cadastradas com sucesso", "Sucesso",
                               MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }

                }
                catch (Exception ex)
                {
                    ex.Message.ToString();
                }
            }

    valeu a todos

    sexta-feira, 1 de abril de 2016 15:09
  • Muito bom Sigrids!

    Att., Roberto Alves

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    sexta-feira, 1 de abril de 2016 16:32