2017-10-07 1 views
1

Je veux obtenir des enregistrements pour 1 jour à 30 jours de la requête travaille dans SQL correctementSélectionnez les enregistrements pour une journée à 30 jours C#

SELECT * FROM Tbl_order WHERE date >= DATEADD(day, -1, GETDATE()) 

donc ce que je l'ai fait dans C# j'utiliser zone de liste déroulante

int CmboDays; 

for (CmboDays = -1; CmboDays >= -30; CmboDays--) 
      { 
       comboBox1.Items.Add(CmboDays); 
      } 

     private void orderBySearchDays() 
     { 
      string c = comboBox1.Text; 
      int x = Convert.ToInt32(c); 

      using (connection = new SqlConnection(connectionString)) 
      using (SqlDataAdapter adapter = new SqlDataAdapter("select* from Tbl_order WHERE date >= DATEADD(day,'"+ x + "', GETDATE()) ; ", connection)) 
      {     

       DataTable Tbl_order = new DataTable(); 
       connection.Open(); //opens the connection 
       adapter.Fill(Tbl_order); 
       connection.Close(); //Closes the connection 

       lst_CustomerNo.DataSource = Tbl_order; //assigns a datasource 
       lst_CustomerNo.DisplayMember = "CustomerNo"; //assigns display 
       lst_CustomerNo.ValueMember = "CustomerNo"; 

       lst_OrderName.DataSource = Tbl_order; 
       lst_OrderName.DisplayMember = "OrderName"; 
       lst_OrderName.ValueMember = "OrderName"; 

       lst_Quantity.DataSource = Tbl_order; 
       lst_Quantity.DisplayMember = "Quantity"; 
       lst_Quantity.ValueMember = "Quantity"; 

       lst_Price.DataSource = Tbl_order; 
       lst_Price.DisplayMember = "Price"; 
       lst_Price.ValueMember = "Price"; 

       lst_datetime.DataSource = Tbl_order; 
       lst_datetime.DisplayMember = "Date"; 
       lst_datetime.ValueMember = "Date"; 

      } 
     } 

donc toutes les données seront exposées dans la zone de liste

Je reçois cette erreur

Une exception non gérée du type 'System.Data.SqlClient.SqlException' produite dans system.data.dll

Informations complémentaires: Argument type de données varchar est invalide pour argument 2 de dateadd fonction.

Est-ce que je le fais mal? Comment réparer l'erreur?

+1

paramètres d'utilisation. Ne pas munir la chaîne de requête avec des valeurs d'entrée. –

Répondre

1

pourrait vous chnage x avec x.ToString() et remove '

using (SqlDataAdapter adapter = new SqlDataAdapter("select * from Tbl_order WHERE date >= DATEADD(day,"+ x.ToString() + ", GETDATE()) ; ", connection)) 
+0

Je l'ai essayé mais toujours le même Erreur –

+1

Avez-vous supprimé 'char avant et après x aussi? –

+0

cela fonctionne ^^ merci. mon erreur ^^ " –