Jump to content
Sign in to follow this  
Elrosnum

Filtrar Intervalo de Datas

Recommended Posts

Elrosnum

Boa tarde

Tenho aqui uma dúvida em C#

Aqui está o código:

 SqlConnection conn = new SqlConnection(connection);
            DateTime min = DateTime.Parse(dateTimePicker1.Text);
            min = min.AddDays(-1);
            DateTime max = DateTime.Parse(dateTimePicker2.Text);

            SqlCommand cmd = new SqlCommand("SELECT * FROM dbo.Tbl_Registo WHERE nick = '" + nickLabel1.Text + "'" +
                                            "AND Datas_de_Entrada > '" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + 
                                            "' AND Datas_de_Entrada < '" + DateTime.Now.ToString("yyyy-MM-dd") + "' ORDER by Datas_de_Entrada DESC");

            conn.Open();
            cmd.Parameters.Add("@Nick", SqlDbType.Text).Value = nickLabel1.Text;
            cmd.Parameters.Add("@Datas_de_Entrada", SqlDbType.Text).Value = dateTimePicker1.Text;
            cmd.Parameters.Add("@Datas_de_Entrada", SqlDbType.Text).Value = dateTimePicker2.Text;

            Relatorio frm = new Relatorio();
            frm = Relatorio.dataGridView1.Rows.Add();
            

O que queria fazer era escolher um intervalo de datas (para isso tenho 2 datetimepickers), para isso gostava que dps de filtrar abrisse um novo form em que tenho uma datagridview (da toolbox) em que desse, para criar as colunas e aparecesse os dados (hora de saida, nick do user e hora de entrada) que estão na BD

Basicamente para ver quem chega atrasado e quem sai depois do horario normal...

Obrigado desde já =]

Share this post


Link to post
Share on other sites
Elrosnum

Bom dia

Obrigado pela resposta ;)

Neste código:

SELECT * FROM Persons
WHERE LastName
BETWEEN 'Hansen' AND 'Pettersen'

o que esta dentro das plicas insiro os datetimepicker certo?

Obrigado pela ajuda :P

Share this post


Link to post
Share on other sites
Caça

Certo, mas o que estás a fazer em cima não é correcto... Ou fazes com parâmetros ou fazes sem parâmetros ;)


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Caça

Tenta assim

            SqlCommand cmd = new SqlCommand("SELECT * FROM dbo.Tbl_Registo WHERE nick = @Nick AND Datas_de_Entrada BETWEEN @Ini AND @Fim ORDER by Datas_de_Entrada DESC");

            conn.Open();
            cmd.Parameters.Add("@Nick", SqlDbType.Text).Value = nickLabel1.Text;
            cmd.Parameters.Add("@Ini", SqlDbType.Date).Value = dateTimePicker1.Value.Date;
            cmd.Parameters.Add("@Fim", SqlDbType.Date).Value = dateTimePicker2.Value.Date;

se o campo Datas_de_Entrada for DataHora coloca SqlDbType.DateTime em vez de SqlDbType.Date


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Elrosnum

Ok Caça,

vou testar, já te digo algo =]

Muito obrigado pela ajuda ;)

Share this post


Link to post
Share on other sites
Elrosnum

Caça, só mais uma cena como é que eu faço para aparecer noutro form,

Como disse na abertura do tópico esta filtração iria aparecer numa datagrid dum outro form...

Não sei se me fiz entender?

Share this post


Link to post
Share on other sites
Caça

Carregas isso para um DataTable e colocas na propriedade DataSource da grid do segundo form


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Elrosnum

tenho de criar as colunas no outro form?

Eu pergunto isto pk fiz a mesma coisa em VB e no botao filtrar do form onde escolho as datas, eu e que criava as colunas por código so que no C# não consigo =X

Tentei fazer e na DT do segundo form inserir o meu dataSet e isso?

Share this post


Link to post
Share on other sites
Caça

Faz o que eu te disse, usa um DataAdapter para carregar um DataTable e depois manda-lo para a grid. Não tens de criar colunas nenhumas em sitio nenhum que ele faz tudo sozinho.


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Caça

Tipo isto

            SqlCommand cmd = new SqlCommand("SELECT * FROM dbo.Tbl_Registo WHERE nick = @Nick AND Datas_de_Entrada BETWEEN @Ini AND @Fim ORDER by Datas_de_Entrada DESC");
            conn.Open();
            cmd.Parameters.Add("@Nick", SqlDbType.Text).Value = nickLabel1.Text;
            cmd.Parameters.Add("@Ini", SqlDbType.Date).Value = dateTimePicker1.Value.Date;
            cmd.Parameters.Add("@Fim", SqlDbType.Date).Value = dateTimePicker2.Value.Date;
            SqlDataAdapter DataAdapter = new SqlDataAdapter();
            DataTable Dt = new DataTable();
            DataAdapter.SelectCommand = cmd;
            DataAdapter.Fill(Dt);
            Relatorio frm = new Relatorio();
            frm.Dgv.DataSource = Dt;
            frm.ShowDialog();


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Elrosnum

Para quem começou agr em C# és grande =D

Só mais uma coisinha muito rapida

Na penultima linha tens um "Dvg"

Onde é que declaras-te isso? É o nome da datagridview? é que se for eu tentei meter o nome e diz que não existe =X

Obrigado mais uma vez pela paciência ;)

Share this post


Link to post
Share on other sites
Caça

Ai é o nome da DataGridView que está dentro do form Relatorio


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Elrosnum

Dá-me este erro =X

"GesPrint_Csharp.Relatorio.dataGridView1' is inaccessible due to its protection level"

Share this post


Link to post
Share on other sites
Caça

A dataGridView1 tem acesso publico ou privado?


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Elrosnum

Nas propriedades da DVG meti os campos:

AllowUserToAddRows;

AllowUserToDeleteRows;

AllowUsertoOrderColumn;

Tudo a True, é isso?

Desculpa a ignorância, é que nunca fiz isto na vida =X

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.