دوستان من هر کار کردم بازم مشکلم پا برجاست کد ها رو میزارم هر کاری می کنم ارور میگیره
دیکشنری اصلی که دارم و دیتا توش هست
var dictionary = new Dictionary<string, string>();
این بخش اصلی کد
SqlDataAdapter adapter = new SqlDataAdapter();
SqlCommand command = new SqlCommand("ejra");
command.Connection = new SqlConnection("Data Source=.\\SQLEXPRESS;Initial Catalog=bourse;Integrated Security=True");
command.Connection.Open();
command.CommandType = CommandType.StoredProcedure; adapter.SelectCommand = command;
List<int> ls = new List<int>();
string[] boxval = new string[17];
boxval[0]="10";
boxval[1] = "123";
boxval[2] = "";
boxval[11] = "";
boxval[16] = "";
boxval[6] = "";
foreach (var dic in dictionary)
{
if (dic.Key == "txbTotalAssets") { boxval[3] = dic.Value; }
else if (dic.Key == "txbTotalStockHoldersEquity") { boxval[4] = dic.Value; }
else if (dic.Key == "txbInventories") { boxval[5] = dic.Value; }
else if (dic.Key == "txbTradeNotesAndAccountsReceivable") { boxval[7] = dic.Value; }
else if (dic.Key == "txbOtherNotesAndAccountsReceivable") { boxval[8] = dic.Value; }
else if (dic.Key == "txbTotalCurrentAssets") { boxval[9] = dic.Value; }
else if (dic.Key == "txbTotalLiabilities") { boxval[10] = dic.Value; }
else if (dic.Key == "txbLoanPayable") { boxval[12] = dic.Value; }
else if (dic.Key == "txbLongTermNotesAndAccountsPayable") { boxval[13] = dic.Value; }
else if (dic.Key == "txbTotalCurrentLiabilities") { boxval[14] = dic.Value; }
else if (dic.Key == "txbCashAndCashEquivalents") { boxval[15] = dic.Value; }
else { };
}int i;
for (i = 0; i < boxval.Length; i++) {
// command.Parameters.Add("@MB_TotalAssets", SqlDbType.NVarChar).Value = dic.Value; ;
command.Parameters.Add(new SqlParameter("@ids", boxval[0]));
MessageBox.Show(""+ boxval[0].GetType());
command.Parameters.Add(new SqlParameter("@MBcode", boxval[1]));
command.Parameters.Add(new SqlParameter("@MBdate", boxval[2]));
command.Parameters.Add(new SqlParameter("@MB_TotalAssets", boxval[3]));
command.Parameters.Add(new SqlParameter("@MB_TotalStockHolder", boxval[4]));
command.Parameters.Add(new SqlParameter("@MB_Inventories", boxval[5]));
// command.Parameters.Add(new SqlParameter("@MB_AccountsReceivable", boxval[6]));
command.Parameters.Add(new SqlParameter("@MB_TradeNotes", boxval[7]));
command.Parameters.Add(new SqlParameter("@MB_OtherNotes", boxval[8]));
command.Parameters.Add(new SqlParameter("@MB_CurrentAssets", boxval[9]));
command.Parameters.Add(new SqlParameter("@MB_TotalLiabilities", boxval[10]));
// command.Parameters.Add(new SqlParameter("@MB_Longtermdebt", boxval[11]));
command.Parameters.Add(new SqlParameter("@MB_LoanPayable", boxval[12]));
command.Parameters.Add(new SqlParameter("@MB_AccountsPayable", boxval[13]));
command.Parameters.Add(new SqlParameter("@MB_CurrentLiabilities", boxval[14]));
command.Parameters.Add(new SqlParameter("@MB_CashEquivalents", boxval[15]));
// command.Parameters.Add(new SqlParameter("@MB_NetWorkingCapital", boxval[16]));
command.ExecuteNonQuery();
}
این تاپیک ها مربوط به مشکل من میشه
http://stackoverflow.com/questions/7123974/getting-an-error-converting-data-type-nvarchar-to-int-from-application-c-but
http://www.codeproject.com/Questions/241806/Cannot-Convert-Datatype-nvarchar-into-int-error
http://stackoverflow.com/questions/3878796/c-sharp-error-error-converting-nvarchar-datatype-to-int-help
مقادیر هم دیتابیس هم پروسیجر رو هم تغییر دادم اما بازم نشد
این کد پروسیجر
ALTER PROCEDURE [dbo].[ejra]
-- Add the parameters for the stored procedure here
@ids varchar,
@MBcode varchar,
@MBdate varchar,
@MB_TotalAssets varchar,
@MB_TotalStockHolder varchar,
@MB_Inventories varchar,
@MB_AccountsReceivable varchar,
@MB_TradeNotes varchar,
@MB_OtherNotes varchar,
@MB_CurrentAssets varchar,
@MB_TotalLiabilities varchar,
@MB_Longtermdebt varchar,
@MB_LoanPayable varchar,
@MB_AccountsPayable varchar,
@MB_CurrentLiabilities varchar,
@MB_CashEquivalents varchar,
@MB_NetWorkingCapital varchar
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
INSERT INTO MainBalancesheet(ids,MBcode,MBdate,MB_TotalAssets, MB_TotalStockHolder,MB_Inventories,MB_AccountsRece ivable,MB_TradeNotes,MB_OtherNotes,MB_CurrentAsset s,MB_TotalLiabilities,MB_Longtermdebt,MB_LoanPayab le,MB_AccountsPayable,MB_CurrentLiabilities,MB_Cas hEquivalents,MB_NetWorkingCapital) VALUES(@ids,@MBcode,@MBdate,@MB_TotalAssets,@MB_To talStockHolder,@MB_Inventories,@MB_AccountsReceiva ble,@MB_TradeNotes,@MB_OtherNotes,@MB_CurrentAsset s,@MB_TotalLiabilities,@MB_Longtermdebt,@MB_LoanPa yable,@MB_AccountsPayable,@MB_CurrentLiabilities,@ MB_CashEquivalents,@MB_NetWorkingCapital)
END
این کد ها رو هم میزارم که اینا رو هم تست کردم اما بازم نشد
command.Parameters.Add(new SqlParameter("@MB_NetWorkingCapital", boxval[16]));
command.Parameters.AddWithValue("@MB_CurrentLiabil ities", Convert.ToInt32(boxval[14]));
command.Parameters.AddWithValue("@ids", SqlDbType.SmallInt).Value=boxval[0];
if (dic.Key == "txbTotalAssets") { boxval[3] =Convert.ToInt32( dic.Value); }
command.Parameters.Add(new SqlParameter("@MB_CashEquivalents", boxval[15]));
هر خط بالا رو کلی ساختم فقط بحث نمونه بود
هر کاری کردم به هر حال نشد ممنون میشم کمکم کنید