예제 #1
0
        //Função chamada pelo botão de alteração após ser clicado
        private void alterarDetalhesBotao_Click(object sender, EventArgs e)
        {
            //Declara uma nova instancia da classe para executar suas funções
            Biblioteca_Livros insereLivro = new Biblioteca_Livros();

            //Abre uma nova instancia da janela de inserção de livros
            insereLivro.Show();
            //Declara uma nova conexão com o banco de dados especificado pela ConnectionString
            using (SqlConnection connection = new SqlConnection(Utilidades.ConnectionString))
            {
                //Declara o comando que será enviado ao banco de dados para buscar as informações do livro especificado
                string query = "SELECT * FROM Livros where id_livro =" + Convert.ToInt32(Tag);
                //Procedimento para execução no banco de dados
                SqlCommand cmd = new SqlCommand(query, connection);
                //Abre a conexão com o banco
                connection.Open();
                //Executa o comando de leitura
                using (SqlDataReader livros = cmd.ExecuteReader())
                {
                    //Passa para o próximo registro do banco
                    livros.Read();

                    //Modifica as caixas de texto da área de inserção de livros para uma a atualização mais dinâmica do usuário
                    insereLivro.TituloBox.Text  = livros["titulo_livro"].ToString();
                    insereLivro.AutorBox.Text   = livros["autor_livro"].ToString();
                    insereLivro.SinopseBox.Text = livros["texto_livro"].ToString();
                    insereLivro.IsbnBox.Text    = livros["isbn_livro"].ToString();
                    insereLivro.EditoraBox.Text = livros["editora_livro"].ToString();
                    //Salva o id do livro para a alteração utilizando o id do livro clicado
                    insereLivro.Tag = livros["id_livro"].ToString();
                    //Converte a informação recebida para o formao DateTime especificando a forma de data desejada
                    insereLivro.DataBox.Text = Convert.ToDateTime(livros["dt_publicacao_livro"]).ToString("MM/dd/yyyy");
                    //Converte a imagem em byte para ser salva em varbinary no banco de dados
                    insereLivro.ImagemCapa.Image = Utilidades.ConvertToImage(livros["imagem_capa_livro"] as byte[]);
                    //Declara que está ocorrendo uma alteração em algum livro para melhor controle
                    Utilidades.alterandoLivros = true;
                }
                //Fecha a conexão com o banco
                connection.Close();
            }
        }
예제 #2
0
        private void painel_Click(object sender, EventArgs e)
        {
            //Obtem o item que está sendo clicado
            Control cont = (Control)sender;

            //Checa se alguma janela de detalhes já existe, caso exista apenas altera as informações
            if (!bibliotecaDetalhes.IsHandleCreated)
            {
                bibliotecaDetalhes = new Biblioteca_Detalhes_Livro();
                bibliotecaDetalhes.Show();
            }
            else
            {
                bibliotecaDetalhes.Focus();
            }

            using (SqlConnection connection = new SqlConnection(Utilidades.ConnectionString))
            {
                //Comando para obter os detalhes do livro
                string     query = "SELECT * FROM Livros where id_livro =" + Convert.ToInt32(cont.Tag);
                SqlCommand cmd   = new SqlCommand(query, connection);
                connection.Open();
                using (SqlDataReader livros = cmd.ExecuteReader())
                {
                    //Executa o comando e obtem as informações do livro clicado
                    livros.Read();
                    bibliotecaDetalhes.TituloLivro.Text       = livros["titulo_livro"].ToString();
                    bibliotecaDetalhes.AutoresLivro.Text      = "por " + livros["autor_livro"].ToString();
                    bibliotecaDetalhes.SinopseLivro.Text      = "Sinópse: " + livros["texto_livro"].ToString();
                    bibliotecaDetalhes.IsbnLivro.Text         = "ISBN: " + livros["isbn_livro"].ToString();
                    bibliotecaDetalhes.EditoraLivro.Text      = "Editora: " + livros["editora_livro"].ToString();
                    bibliotecaDetalhes.DtPublicacaoLivro.Text = "Publicação: " + Convert.ToDateTime(livros["dt_publicacao_livro"]).ToShortDateString();
                    //Converte de byte para imagem o campo especificado para exibir na imagem de capa do livro
                    bibliotecaDetalhes.CapaLivro.Image = Utilidades.ConvertToImage(livros["imagem_capa_livro"] as byte[]);
                    //Obtem o id do livro salvo na tag do item clicado e passa para a janela de detalhes
                    bibliotecaDetalhes.Tag = cont.Tag;
                }
                connection.Close();
            }
        }
예제 #3
0
        public void PopularLivros(bool buscando)
        {
            int lastId = 0;
            //Declara o máximo de livros que podem ser exibidos em uma página
            int itensMaximos = 35;
            //Chama a função para obter o número de linhas existentes no banco de dados
            int totalLivros = GetRowCount();
            //A linha na qual começará a busca do banco de dados
            int itemInicial = 1;
            //Executa um cálculo para saber o número de páginas de acordo com o número de itens no banco e o máximo de itens por pagina
            float paginas = (float)totalLivros / (float)itensMaximos;

            totalPaginas = paginas > (int)paginas ? (int)paginas + 1 : (int)paginas;
            //Caso o total de livros no banco de dados seja maior que o máximo de itens exibidos o valor passa a ser o máximo de itens
            if (totalLivros > itensMaximos)
            {
                totalLivros = itensMaximos;
            }
            //Muda a label para informar a página e quantas páginas existem
            if (totalPaginas == 0)
            {
                totalPaginas = 1;
            }
            paginasLabel.Text = paginaAtual.ToString() + "/" + totalPaginas.ToString();
            //Cálculo para informar a partir de qual item a busca no banco deve começar
            itemInicial = 1 + (paginaAtual - 1) * itensMaximos;
            //Limpa todos os itens da tela inicial
            mainTableLayout.Controls.Clear();
            //Executa o loop com o número de itens máximos de cada página
            for (int i = itemInicial; i <= totalLivros * paginaAtual; i++)
            {
                //Declara como string vazio para evitar erros e utilizar abaixo no código
                string titulo  = "";
                string autor   = "";
                string idLivro = "";
                Image  img     = null;
                try
                {
                    using (SqlConnection connection = new SqlConnection(Utilidades.ConnectionString))
                    {
                        //Declara uma query dinamica que muda caso o usuário esteja fazendo uma busca
                        string query = buscando ? "select titulo_livro, autor_livro, id_livro, imagem_capa_livro from Livros where (titulo_livro like @texto_consulta or isbn_livro like @texto_consulta or editora_livro like @texto_consulta " +
                                       "or autor_livro like @texto_consulta) and id_livro > @last_id" :
                                       "SELECT titulo_livro, autor_livro, id_livro, imagem_capa_livro FROM (SELECT ROW_NUMBER() OVER (ORDER BY id_livro ASC) AS rownumber, id_livro, titulo_livro, imagem_capa_livro, autor_livro FROM Livros) AS foo WHERE rownumber =" + i;
                        if (buscandoPorData)
                        {
                            query = "select titulo_livro, autor_livro, id_livro, imagem_capa_livro from livros where id_livro > @last_id and dt_publicacao_livro between @data1 and @data2";
                        }
                        SqlCommand cmd = new SqlCommand(query, connection);
                        //Adiciona o campo na query do que está sendo pesquisado
                        if (buscandoPorData)
                        {
                            cmd.Parameters.AddWithValue("@data1", buscaData1.Value.ToString("MM/dd/yyyy"));
                            cmd.Parameters.AddWithValue("@data2", buscaData2.Value.ToString("MM/dd/yyyy"));
                        }

                        cmd.Parameters.AddWithValue("@last_id", lastId);
                        cmd.Parameters.AddWithValue("@texto_consulta", "%" + buscaUsuariosBox.Text.ToString() + "%");
                        connection.Open();
                        using (SqlDataReader livros = cmd.ExecuteReader())
                        {
                            //Cancela o loop caso encontre uma linha inexistente no banco de dados
                            if (!livros.HasRows)
                            {
                                break;
                            }
                            livros.Read();
                            lastId  = (int)livros["id_livro"];
                            titulo  = livros["titulo_livro"].ToString();
                            autor   = livros["autor_livro"].ToString();
                            idLivro = livros["id_livro"].ToString();
                            //Salva e converte a imagem para byte na variável
                            img = Utilidades.ConvertToImage(livros["imagem_capa_livro"] as byte[]);

                            //Cria os paineis que aparecem na tela principal com as informações passadas
                            var painel = new TableLayoutPanel
                            {
                                Name = "painel",
                                Size = new Size(240, 290),
                                //Dock = DockStyle.Fill,
                                Anchor    = AnchorStyles.Top,
                                BackColor = Color.LightGray,
                                Tag       = livros["id_livro"].ToString(), //Declara como tag o id do livro para quando clicado ser utilizado como busca no banco
                                Cursor    = Cursors.Hand,
                            };
                            var imagemCapa = new PictureBox
                            {
                                Name = "imagemCapa",
                                Size = new Size(150, 200),
                                //Location = new Point(44, 50),
                                Dock     = DockStyle.None,
                                SizeMode = PictureBoxSizeMode.StretchImage,
                                Anchor   = AnchorStyles.Top,
                                Image    = img,
                                Tag      = livros["id_livro"].ToString(),
                            };
                            var tituloLivro = new Label
                            {
                                Name         = "tituloLivro",
                                Size         = new Size(painel.Size.Width - 10, 60),
                                AutoEllipsis = true,
                                Font         = new Font("Arial", 12, FontStyle.Bold),
                                //Location = new Point(0, 10),
                                TextAlign = ContentAlignment.MiddleCenter,
                                Anchor    = AnchorStyles.Bottom,
                                ForeColor = Color.Black,
                                Text      = titulo,
                                Tag       = livros["id_livro"].ToString(),
                            };
                            var autorLivro = new Label
                            {
                                Name         = "autorLivro",
                                Size         = new Size(painel.Size.Width - 10, 20),
                                Font         = new Font("Arial", 8),
                                AutoEllipsis = true,
                                //Location = new Point(3, 260),
                                TextAlign = ContentAlignment.TopCenter,
                                Anchor    = AnchorStyles.Top,
                                ForeColor = Color.Black,
                                Text      = autor,
                                Tag       = livros["id_livro"].ToString(),
                            };
                            //Adiciona o painel na tela principal
                            mainTableLayout.Controls.Add(painel);
                            //Adiciona as informações e imagem do livro no painel
                            painel.Controls.Add(tituloLivro);
                            painel.Controls.Add(imagemCapa);
                            painel.Controls.Add(autorLivro);
                            //Declara que o item clicado chamará a função especificada
                            painel.Click      += new EventHandler(painel_Click);
                            autorLivro.Click  += new EventHandler(painel_Click);
                            imagemCapa.Click  += new EventHandler(painel_Click);
                            tituloLivro.Click += new EventHandler(painel_Click);
                        }
                        connection.Close();
                    }
                }
                catch (Exception es)
                {
                    MessageBox.Show(es.Message);
                }
            }
            buscandoPorData = false;
            //Atualiza o dia maximo de data para o dia atual
            buscaData1.MaxDate = DateTime.Now;
            buscaData2.MaxDate = DateTime.Now;
        }