diogom Posted April 26, 2013 at 05:41 PM Report #504956 Posted April 26, 2013 at 05:41 PM Tenho uma duvida. Como faço para verificar todas as datas, e as que coincidirem com a do sistema, aparecer na grid view. Deste maneira, so verifica a primeira e se nao for igua a do sistema, nao carrega as outras que sao para a gridview. MySqlConnection conDatabase = new MySqlConnection("Database=" + BANCO + ";Data Source=" + SERVIDOR + ";User Id=" + USUARIO + ";Password=" + SENHA + "; pooling=false"); conDatabase.Open(); MySqlDataReader leitura; MySqlCommand command = conDatabase.CreateCommand(); command.CommandText = "SELECT datanasc from fichacli where user = '" + userTB.Text + "' "; leitura = command.ExecuteReader(); //ClientScript.RegisterClientScriptBlock(this.GetType(), "MensagemDeAlert", "alert('" + leitura + "');", true); if (leitura.Read()) { Bdata = leitura.GetString(0); //ClientScript.RegisterClientScriptBlock(this.GetType(), "MensagemDeAlert", "alert('" + Bdata + "');", true); string cDiaMes = Convert.ToDateTime(Bdata).Date.ToString("dd/MM"); //ClientScript.RegisterClientScriptBlock(this.GetType(), "MensagemDeAlert", "alert('"+Bdata+"');", true); //ClientScript.RegisterClientScriptBlock(this.GetType(), "MensagemDeAlert", "alert('" + Bdata + "');", true); if (cDiaMes == datasistema) { Button3.Visible = true; //ClientScript.RegisterClientScriptBlock(this.GetType(), "MensagemDeAlert", "alert('aqui');", true); //string criterio = ""; String queryString = ("Select cliente,email,datanasc from fichacli Where user like '" + userTB.Text + "'"); //String queryString = // ("Select cliente,email,datanasc from fichacli Where user like '" + userTB.Text + "'and data = '" + criterio + "' " + "order by mes and data ASC"); // Run the query and bind the resulting DataSet // to the GridView control. DataSet ds = GetData(queryString); } else { ClientScript.RegisterClientScriptBlock(this.GetType(), "MensagemDeAlert", "alert('Não existem aniversariantes hoje');", true); } }
nelsonr Posted April 26, 2013 at 06:03 PM Report #504957 Posted April 26, 2013 at 06:03 PM Boas, provavelmente o que pretendes é substituir isto if (leitura.Read()) por isto while(leitura.Read())
DiogoFialho Posted May 16, 2013 at 11:12 AM Report #507616 Posted May 16, 2013 at 11:12 AM Exactamente. Tens de utilizar um while e não um if. O If apenas te verifica se é possível ler e, caso seja, lê-te o primeiro valor recolhido. Por sua vez, o while, verifica se é possível ler e, caso seja, lê todos os registos existentes. Contudo tenho um aparte para te fazer: Se vais ler dados directamente de uma textbox em que é o utilizador a introduzir os dados, aconselho-te a não fazeres a query assim. Imaginando que a pessoa introduz na textbox o seguinte: '; drop database <nome_BD>; Isto iria fazer o quê? Pois bem, a plica iria terminar a string, logo o comando passaria a ser válido. Para além disso, o ';' iria terminar o comando. De seguida o drop iria ser considerado um outro comando e, caso se soubesse o nome da B.D. ficarias sem a base de dados porque iria ser apagada. Um conselho que te dou é de utilizadores Stored Procedures (SP). Não te coloques a verificar se a string tem caracteres estranhos ou algo do género, pois isso irá dar muito mais trabalho e mais erros.
bioshock Posted May 21, 2013 at 12:05 PM Report #508198 Posted May 21, 2013 at 12:05 PM Para além do que já foi dito e focando essencialmente o problema da segurança, que podes dar uma olhadela aqui: https://wiki.portugal-a-programar.pt/dev_net/csharp/access/, após receberes os dados, confrontas com os dados actual. DateTime valor = Convert.ToDateTime(leitura[0].toString()); if(!valor.ToString("yyyy/MM/dd") == DateTime.Now.ToString("yyyy/MM/dd")) { DataGridView1.Rows.Add(leitura[0].toString()); }
AntonioMateus Posted June 2, 2013 at 01:01 AM Report #510516 Posted June 2, 2013 at 01:01 AM Mas se anda à procura de aniversariantes não é mais simples fazer isso no SQL? Logo na 1ª instrução SQL restringir aos que fazem anos no dia actual. command.CommandText = "SELECT clinete, Email, datanasc from fichacli where month(datanasc) = month (getdate()) and day(datanasc) = day(getDate()) and user = '" + userTB.Text + "' " Assim é só feita uma chamada à BD e como já foi indicado é mais seguro usar stored procedure, ainda para mais em acesso web...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now