PDA

View Full Version : دیتاتایپ currency



f_naderi
سه شنبه 15 تیر 1389, 01:19 صبح
سلام من یک دیتاتیبل به صورت ویزاردی درست کردم و حالا می خوام یکی از فیلدهاش دیتاتایپش currency باشه ولی چنین دیتاتایپی در اینجا قرار نداره به همین دلیل هم مقداری رو که می خوام از بانک بخونم و درون این ستون بریزم باعث میشه که برنامه این ارور رو بده

Object cannot be cast from DBNull to other types.

hamid67fathi
سه شنبه 15 تیر 1389, 11:07 صبح
سلام
در SQL ميتونی از TimeStamp استفاده کنی

f_naderi
پنج شنبه 17 تیر 1389, 16:41 عصر
من زیر دکمه ی گزارشم این کد رو نوشتم :
DataTable tb1 = new DataTable();
DataColumn dc0 = new DataColumn("codemoshtari", typeof(Int32));
DataColumn dc1 = new DataColumn("name", typeof(string));
DataColumn dc2 = new DataColumn("bedehkari", typeof(TimeSpan));
DataColumn dc3 = new DataColumn("namek", typeof(string));
DataColumn dc4 = new DataColumn("date", typeof(DateTime));
DataColumn dc5 = new DataColumn("tedadkala", typeof(Int32));
int code = Convert.ToInt32(textBox12.Text);
ds1.Clear();
ds1.Tables.Clear();
tb1.Columns.Add(dc0);
tb1.Columns.Add(dc1);
tb1.Columns.Add(dc2);
tb1.Columns.Add(dc3);
tb1.Columns.Add(dc4);
tb1.Columns.Add(dc5);
con.Open();
strsql = "select count(kala.name)from moshtari,sefaresh,kala,forosh where kala.codekala=sefaresh.codekala and sefaresh.shomarehsefaresh=forosh.shomarehsefaresh and forosh.codemoshtari=moshtari.codemoshtari and moshtari.codemoshtari = " + code;
da1 = new OleDbDataAdapter(strsql, con);
da1.Fill(ds1);
int c = Convert.ToInt32(ds1.Tables[0].Rows[0][0]);
label17.Text = Convert.ToString(ds1.Tables[0].Rows[0][0]);
strsql = "select moshtari.codemoshtari,moshtari.name,moshtari.bedeh kari,kala.name,forosh.date,sefaresh.tedadkala from moshtari,sefaresh,kala,forosh where kala.codekala=sefaresh.codekala and sefaresh.shomarehsefaresh=forosh.shomarehsefaresh and forosh.codemoshtari=moshtari.codemoshtari and moshtari.codemoshtari = " + code;
da1 = new OleDbDataAdapter(strsql, con);
da1.Fill(ds1);
for (int i = 0; i < c; i++)
{
DataRow dr = tb1.NewRow();
dr[0] = Convert.ToInt32(ds1.Tables[0].Rows[i][0]);
dr[1] = Convert.ToString(ds1.Tables[0].Rows[i][1]);
*** dr[2] = Convert.ToInt32(ds1.Tables[0].Rows[i][2]);
dr[3] = Convert.ToString(ds1.Tables[0].Rows[i][3]);
dr[4] = Convert.ToDateTime(ds1.Tables[0].Rows[i][4]);
dr[5] = Convert.ToInt32(ds1.Tables[0].Rows[i][5]);
tb1.Rows.Add(dr);
}
con.Close();
print f2 = new print(tb1);
f2.ShowDialog();
در خط *** این ارور رو میده.

f_naderi
شنبه 19 تیر 1389, 17:58 عصر
لطفا اگه می تونید مشکل این کد رو پیدا کنید و اگه هم لازمه که توضیح بیشتری راجع به برنامه بدم بفرمایید.

hamid67fathi
یک شنبه 03 مرداد 1389, 23:18 عصر
سلام
دوست من شما از Structure TimeSpan استفاده کردی پس نميتونی اون رو به ToInt32 کست کنی.
بايد از مقدار رشته ای اون استفاده کنی.

به جای خط ستاره دار خط زير رو بنويس :
dr[2] = ds1.Tables[0].Rows[i][2].ToString();