PDA

View Full Version : ارور هنگام ارسال مقدار تاریخ به پایگاه داده sql



RIG000
چهارشنبه 24 فروردین 1390, 21:15 عصر
راستش من اولی باره که با اس کیو ال یا c# کار میکنم و express2005 هستش . من موقعی که مقدار تاربخ رو به این شکل 1390/01/24 به بانک میفرستم ثبت میشه اما این خطا رو میده
startIndex cannot be larger than length of string.
Parameter name: startIndex
حالا من تو جدولم DATATYPE رو NCHAR(10 ) انتخاب کردم . و DATATIME نیست . میشه تو این ارور کمکم کنید . ممکنه مشکل از همین که گفتم باشه؟

morteza271
چهارشنبه 24 فروردین 1390, 21:29 عصر
این خطا مربوط به Insert نیست، مربوط به تکست باکستونه که وقتی میخواین متنشو پاک کنین خطا داده،ببینین تکست باکستون جطوریه؟

sarbaz_esf
چهارشنبه 24 فروردین 1390, 21:37 عصر
راستش من اولی باره که با اس کیو ال یا c# کار میکنم و express2005 هستش . من موقعی که مقدار تاربخ رو به این شکل 1390/01/24 به بانک میفرستم ثبت میشه اما این خطا رو میده
startIndex cannot be larger than length of string.
Parameter name: startIndex
حالا من تو جدولم DATATYPE رو NCHAR(10 ) انتخاب کردم . و DATATIME نیست . میشه تو این ارور کمکم کنید . ممکنه مشکل از همین که گفتم باشه؟
این error که داده واسه طول رشته است nchar را 15 بگذار شاید درست بشه

RIG000
چهارشنبه 24 فروردین 1390, 21:51 عصر
از nchar نبود datetime هم کردم نشد. و textbox من یه dll هستش که فارسیه . و من رو تاریخ تنظیمش کردم . موقعی که میخام تاریخ رو بنویسم توش به این شکله . _/_/_ 13 حالا موقعی که چیز مینوسم ثبی شه . مینوسه تو بانک 695 در صورتی که من 1390/01/05 به طور مثال ثبت کردم .

aliasghar2
چهارشنبه 24 فروردین 1390, 21:54 عصر
آره این ارور به خاطر طول کاراکترته چون از nchar(10 استفاده کردی حداکثر تعداد کاراکتر مجاز هم 10 تا است پس باید تعداد کاراکتر هاتو بیشتر کنی

اما اگه اون موقع که از datatime استفاده می کردی جهت اطلاع بهت می کم که datatime تاریخ شمسی رو نمی شناسه و ارور میده

morteza271
چهارشنبه 24 فروردین 1390, 21:57 عصر
نوع داده نمیتونه datetime باشه چون تاریخ شمسی رو نمیشه ذخیره کرد!!
اون مشکل هم از کامپوننت هست به جای خطی که خطا داده این رو بنویس ببین درست میشه:

txtProNet2.Text = "1390/01/24";

RIG000
چهارشنبه 24 فروردین 1390, 22:19 عصر
راستش اینجوری که نمیشه . من مقدار رو دارم به بانک میفرستم . نمیهام همیشه یه مقدار ثابت باشه که . در ضمن از همون dll واسه نام هم استفاده کردم اما اونو ایراد نمیگیره . طول کاراکترم زیاد کردم باز نشد.!!!!!!! خدا وکیلی حیف نیست این access .

morteza271
چهارشنبه 24 فروردین 1390, 22:28 عصر
دوست عزیز میشه کدتون رو بذارین اینجا تا بهتر متوجه مشکلتون بشم!!!
احساس میکنم یه جای کار میلنگه!!!:گیج:

shadi khanum
چهارشنبه 24 فروردین 1390, 22:58 عصر
احتمالا تو اون Component که استفاده میکنید وقتی که رو تاریخ تنظیم شده باشه واسه رویداد Textchangeش یه کدی نوشته شده که تو اون کد داره از تابع substring یا یه چیزی مثل این استفاده میکنه که چون شما text رو "" گذاشتین دستور substring به خطا خورده که طول رشته ای که تو textbox هست غیر معتبر_وقتی خالی میکنین متنش رو 0 میشه طول رشته و خطا داده) باید ببینین مقدار Default خود این Component وقتی تاریخ باشه چیه و به جای "" همون رو بذارید

ali.asady
پنج شنبه 25 فروردین 1390, 00:35 صبح
دوست عزیز
نحوه ثبت اطلاعات تو بانک از چه راهی انجام می دهید
اگر از دیتاست استفاده میکنید که دات نت می سازه هم جور جای مانور داره
این کد با 2010 و sql2005 رودانلود کن

تازه اینکه اس کیو ال 2008 از تاریخ فارسی با datetime2 استفاده کنید
این نوع تاریخ محلی(فارسی)رو پشتیبانی می کنه

RIG000
پنج شنبه 25 فروردین 1390, 05:48 صبح
private void button1_Click_1(object sender, EventArgs e)
{


if (txtProNet1.Text == "")
{
MessageBox.Show("لطفا شماره اندیکاتور را وارد کنید");
}
else if (textBox3.Text == "")
{
MessageBox.Show("لطفا شماره نامه را وارد کنید");

}
else
{
string s2 = string.Format("insert into Ersalikhareji
values( {0},'{1}','{2}','{3}','{4}','{5}')", txtProNet1.Text, textBox3.Text,
txtProNet2.Text,
txtsabtE2.Text, txtProNet3.Text, comboBox1.Text);
Access.insert(s2);
showdataforEditforErsali();
txtProNet1.Text = "";
textBox3.Text = "";
txtProNet2.Text = "";
txtsabtE2.Text = "";
txtProNet3.Text = "";
comboBox1.Text = "";

}
}
این کد و حالا خاصیت های dll . خاصیت type date shamsi رو true کردم و دو خاصیت دیگه مربوط یه dll که تو عکس نشون دادم

RIG000
پنج شنبه 25 فروردین 1390, 05:58 صبح
if (txtProNet1.Text == "")
{
MessageBox.Show("لطفا شماره اندیکاتور را وارد کنید");
}
else if (textBox3.Text == "")
{
MessageBox.Show("لطفا شماره نامه را وارد کنید");

}
else
{
string s2 = string.Format("insert into Ersalikhareji values( {0},'{1}','{2}','{3}','{4}','{5}')", txtProNet1.Text, textBox3.Text, txtProNet2.Text, txtsabtE2.Text, txtProNet3.Text, comboBox1.Text);
Access.insert(s2);
showdataforEditforErsali();
txtProNet1.Text = "";
textBox3.Text = "";
txtProNet2.Text = "13__/__/__";
txtsabtE2.Text = "";
txtProNet3.Text = "";
comboBox1.Text = "";

}
حل شد. بی تعارف منم گیج میزنم رسما" . :اشتباه::افسرده::لبخند: اما از همه ممنون که کمک کردین . خیلی ممنون . فکر فهمیده باشین موضوع چی بوده .....:اشتباه: