私は自分の C# アプリケーションで本当に苦労しています。以下のコードを実行するたびに、nvarchar データ型から int への変換に関するエラーが表示されます。キャストしてみましたが、うまくいかないようです。
ConnectionString myConnString = new ConnectionString();
string connString = myConnString.getConnectionString();
SqlConnection connValidate = new SqlConnection(connString);
SqlCommand cmdValidate = new SqlCommand("XXX", connValidate);
cmdValidate.CommandType = CommandType.StoredProcedure;
cmdValidate.Parameters.Add(new SqlParameter("@AccountID", currentUser));
cmdValidate.Parameters.Add(new SqlParameter("@PeriodMonth", Convert.ToString(comboBoxMonth.SelectedItem).Trim().ToUpper()));
cmdValidate.Parameters.Add(new SqlParameter("@PeriodYear", Convert.ToInt32(comboBoxYear.SelectedValue)));
connValidate.Open();
Int32 result = Convert.ToInt32(cmdValidate.ExecuteScalar());
connValidate.Dispose();
connValidate.Close();
私が使用しているストアドプロシージャは次のとおりです。
ALTER PROCEDURE [dbo].[XXX]
@AccountID char(6),
@PeriodMonth char(10),
@PeriodYear int,
@Date int,
@PeriodID int,
@InventoryID int,
@ProductOutID int
AS
SELECT @PeriodID = PeriodID FROM Periods
WHERE PeriodMonth = @PeriodMonth AND PeriodYear = @PeriodYear AND AccountID = @AccountID
SELECT @InventoryID = InventoryID FROM Fact
WHERE PeriodID = @PeriodID AND AccountID = @AccountID
SELECT @ProductOutID = ProductOutID FROM Inventory
WHERE InventoryID = @InventoryID
SELECT DailyOutID FROM DailyOut
WHERE ProductOutID = @ProductOutID AND Date = @Date
RETURN
ここでやりたいことは、ユーザーが入力した同じ月と年の期間がデータベースに既に存在するかどうかを確認することです。したがって、基本的に、入力された期間がすでに存在する場合、ストアド プロシージャは値を返す必要があります。存在する場合MessageBox
は、同じ期間の存在について警告するユーザーに表示されます。どうもありがとうございました!:)