|
分類:[ASP.NET (C#)]
こんにちは。いつもお世話になっております。
現在、ASP.NET(C#)とSQL SERVER、javascriptを使用したWEBシステムを開発しているのですが、
ドロップダウンリストで「会社」「エリア」「支店」「店名」「従業員」の順に指定していくのですが、
「会社」(データベース項目名:company)コードを設定し、「店名」(データベース項目名:tempo)まで設定すると選択可能な「従業員」がデータベースから引き出される形で開発しています。
そこで、会社を辞めてしまった・退職した人間は省いた形で抽出する為に、以下のコードを書いたのですが、
query.Append("SELECT ");
query.AppendFormat("EmployeeCode as {0}," Datavalue_Fieldname);
query.AppendFormat("IsNull(LastName, '') + ' ' + IsNull(FirstName, '') as {0} ", Datatext);
query.AppendFormat("From {0} ", Tablename.employee);
//会社 か 店舗 が「全て(all)」の指定でない場合は、以下の処理をする
if(company != "all" && tempo != "all")
{
query.AppendFormat("WHERE (company = {0}) ", queryUtility.ConvertString(company));
query.AppendFormat("AND (tempo = {0}) ", queryUtility.ConvertString(tempo));
query.AppendFormat("AND (DeleteFlg = {0}) ", DBValue.False);
//退職日時が空白
query.AppendFormat("AND (RetireDate IS NULL) ");
//現在の日付より退職日が未来の場合は取得
query.AppendFormat("OR (RetireDate >= {0}) ", Datetime.Now.ToString("d"));
}
else
{
query.AppendFormat("WHERE (company = {0}) ", queryUtility.ConvertString(company));
query.AppendFormat("AND (tempo = {0}) ", queryUtility.ConvertString(tempo));
query.AppendFormat("AND (DeleteFlg = {0}) ", DBValue.False);
}
このように書くと退職日が現在から未来の指定になっている人間に対して、「会社」や「店舗」が退職予定の人間の所属する所と違っていても取得されてしまう現象が起きてしまいました。
どこの会社・店舗の人間なのかを判断するのは、companyとtempoで行っており、毎回ドロップダウンリストを選択しなおす度に変化する呼ばれるイベントなのですが、どのようにSQLを書けば選択した「会社」〜「店舗」までのデータを持つ人間だけを絞り込んで取得出来るのでしょうか・・・?
どなたかお手数ではございますが、ご教授ください。お願い致します。
|