2016-12-06 2 views
0

私はプロジェクトを進めており、SQL Serverデータベースから読み取ったデータを使用して新しいデータセットを作成する必要があります。私は過去4週間以内に商品を注文していないクライアントの名前と連絡先情報を表示する必要があります。データベース内のクライアントテーブルには、クライアントの最終注文日を記録する列が含まれています。その日付と今日の日付を比較して、データグリッドビューに表示するために使用できる新しいデータセットに関連情報を追加するにはどうすればよいですか。データベースから読み取られた特定の値を使用して新しいデータセットを作成する必要があります

ありがとうございます。

string inactiveClient = "SELECT CustomerName, CustomerNumber FROM Customers"; 

     int dateNow = DateTime.Now.Month; 
     int yearNow = DateTime.Now.Year; 

using (SqlCommand cmd = new SqlCommand(inactiveClient, con)) 
      { 
       using (SqlDataReader sdr = cmd.ExecuteReader()) 
       { 
        string orderDate = sdr["LastOrderDate"].ToString(); 

        int orderYear = Convert.ToInt32(orderDate.Remove(5)); 
        orderDate = orderDate.Remove(0, 5); 
        orderDate = orderDate.Remove(3, 4); 
        int orderMonth = Convert.ToInt32(orderDate); 

        while (sdr.Read()) 
        { 
         if ((orderYear <= yearNow) && (orderMonth < dateNow)) 
         { 
          // Add to new dataset 
         } 
        } 
       } 
      } 

これは私の基本的な考えでした。

+1

これまでに試したことをお見せできますか? – RandomStranger

+0

あなたの正確な問題は何ですか、SQLクエリですか?何か他のもの –

+0

あなたのsqlクエリでは、比較したい日付のパラメータを使ってwhereを使用します:WHERE 'Last order date' <@parameter – jdweng

答えて

0

すべてのレコードを取得してクライアント上でフィルタリングする必要はありません。データベースサーバーがあるという事実を利用してください。

SELECT CustomerName, CustomerNumber FROM Customers 
    WHERE LastOrderDate < DATEADD(week, -4, CURRENT_TIMESTAMP) 

MS SQL Serverを使用していて、LastOrderDateがDATETIME列であると仮定しています。テキストに日付を格納する場合は、その日付を変更する必要があります。

関連する問題