//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(); } }
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(); } }
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; }