日付フィールドでデータを検索する際に問題があります。日付検索の問題
私が検索を実行しているストアドプロシージャがあります。次のように私は私のパラメータを渡している
ALTER PROCEDURE [dbo].[spSearchTraining]
(
@CourseName VARCHAR(50)= null,
@TrainingProvider VARCHAR(50)= null,
@TrainingCost VARCHAR(50) = null,
@StartDate Varchar(50) = null,
@EndDate Varchar(50)= null,
@RowCount int output
)
AS
BEGIN
SELECT * FROM vwTrainingDetails
WHERE (CourseName Like '%' + @CourseName +'%' or @CourseName is null)
AND (TrainingProvider Like '%' + @TrainingProvider + '%' or @TrainingProvider is null)
AND (Cost Like '%' + @TrainingCost +'%' or @TrainingCost is null)
AND ([Start Date] >= @StartDate or @StartDate is null)
AND ([Start Date] <= @EndDate or @EndDate is null)
select @[email protected]@ROWCOUNT
END
を:私がいる
//Create and add a parameter to Parameters collection for the stored procedure.
MyDataAdapter.SelectCommand.Parameters.Add(new SqlParameter("@CourseName", SqlDbType.VarChar, 40));
MyDataAdapter.SelectCommand.Parameters.Add(new SqlParameter("@TrainingProvider", SqlDbType.VarChar, 40));
MyDataAdapter.SelectCommand.Parameters.Add(new SqlParameter("@TrainingCost", SqlDbType.VarChar, 40));
MyDataAdapter.SelectCommand.Parameters.Add(new SqlParameter("@StartDate", SqlDbType.VarChar, 40));
MyDataAdapter.SelectCommand.Parameters.Add(new SqlParameter("@EndDate", SqlDbType.VarChar, 40));
//string mysdate = (StartTextBox.Text).ToString;
//Assign the search value to the parameter.
MyDataAdapter.SelectCommand.Parameters["@CourseName"].Value = (CourseTextBox.Text).Trim();
MyDataAdapter.SelectCommand.Parameters["@TrainingProvider"].Value = (ProviderTextBox.Text).Trim();
MyDataAdapter.SelectCommand.Parameters["@TrainingCost"].Value = (CostTextBox.Text).Trim();
MyDataAdapter.SelectCommand.Parameters["@StartDate"].Value = (StartTextBox.Text);
MyDataAdapter.SelectCommand.Parameters["@EndDate"].Value =(EndTextBox.Text);
問題は、私はそのまま実行したときにということですストアドプロシージャは何も返しません。 私がコメントアウトした場合:
MyDataAdapter.SelectCommand.Parameters["@StartDate"].Value = (StartTextBox.Text);
MyDataAdapter.SelectCommand.Parameters["@EndDate"].Value =(EndTextBox.Text);
をそれからそれは日付を使用して検索する機能なしではなく動作します。
サーバーからストアドプロシージャを実行し、日付を含むパラメータを渡すと正常に動作します。
誰かが私を助けて、私が間違っていることを見ることはできますか?
おかげであなたは、あなたがして、クエリ以下
AND ([Start Date] >= CAST(@StartDate AS DATE) or @StartDate is null)
AND ([Start Date] <= CAST(@EndDate AS DATE) or @EndDate is null)
:あなたがnullの必要がある場合
同様に、それを適切に処理します。これに
:この変換? –
渡した日付形式が正しいことを確認しましたか?また、それらはDateTimeでなく、文字列ではない – jzm
DateTimeを使用しようとしましたが、それでも動作しません – vitalix