PDA

View Full Version : مبتدی: خطای convert



saba664
سه شنبه 25 مهر 1396, 13:30 عصر
من طبق فرمایش دوستان یک id ساختم و نوع اون رو int قرار دادم اما متاسفانه خطا تبدیل میده. البته یک لیبل روی فرم گذاشتم و خاصیتش نمایشش رو مخفی کردم چون خطا می داد به تنهایی استفاده از id
اساتید محترم
لطف کنن ببینن مشکلش چیه ؟

try
{
string str = "update sabt set name=@name,family=@family,father=@father,jenseyat= @jenseyat,nezam=@nezam,code=@code,country=@country ,ostan=@ostan,shahrestan=@shahrestan,telwork=@telw ork,mobile=@mobile,reshteh=@reshteh,madrak=@madrak ,vaestekhdam=@vaestekhdam,khed1=@khed1,khed2=@khed 2,khed3=@khed3,khed4=@khed4,heatm=@heatm,heatn=@he atn,matabd=@matabd,matabn=@matabn,address=@address ,photo=@photo,parvanehl=@parvanehl,parvaneht=@parv aneht,vazeatf=@vazeatf,vazeatgh=@vazeatgh,mmt=@mmt where d_id=@id";

SqlConnection cn = new SqlConnection("Data source=localhost;Initial Catalog=finaldoctor;Integrated security=true;");

cmd = new SqlCommand(str, cn);

byte[] photo_aray;

using (var ms = new MemoryStream())
{
pictureBox1.Image.Save(ms, ImageFormat.Jpeg);
photo_aray = new byte[ms.Length];
ms.Position = 0;
ms.Read(photo_aray, 0, photo_aray.Length);
}

string name = textBox1.Text;
string family = textBox2.Text;
string father = textBox3.Text;
string jenseyat = comboBox1.Text;
string nezam = textBox4.Text;
string code = textBox5.Text;
string country = textBox10.Text;
string ostan = comboBox2.Text;
string shahrestan = comboBox3.Text;
string telwork = textBox6.Text;
string mobile = textBox7.Text;
string reshteh = comboBox4.Text;
string madrak = comboBox6.Text;
string vaestekhdam = comboBox5.Text;
string khed1 = comboBox9.Text;
string khed2 = comboBox7.Text;
string khed3 = comboBox10.Text;
string khed4 = comboBox8.Text;
string d_id = lbl_id.Text.ToString();



var heatm = checkBox1.Checked;
var heatn = checkBox2.Checked;
var matabd = checkBox5.Checked;
var matabn = checkBox6.Checked;
string address = textBox9.Text;
var parvanehl = checkBox4.Checked;
var parvaneht = checkBox3.Checked;
var vazeatf = radioButton1.Checked;
var vazeatgh = radioButton2.Checked;
var mmt = checkBox7.Checked;

cmd.Parameters.AddWithValue("@id", d_id);
cmd.Parameters.AddWithValue("@name", name);
cmd.Parameters.AddWithValue("@family", family);
cmd.Parameters.AddWithValue("@father", father);
cmd.Parameters.AddWithValue("@jenseyat", jenseyat);
cmd.Parameters.AddWithValue("@nezam", nezam);
cmd.Parameters.AddWithValue("@code", code);
cmd.Parameters.AddWithValue("@country", country);
cmd.Parameters.AddWithValue("ostan", ostan);
cmd.Parameters.AddWithValue("@shahrestan", shahrestan);
cmd.Parameters.AddWithValue("@telwork", telwork);
cmd.Parameters.AddWithValue("@mobile", mobile);
cmd.Parameters.AddWithValue("@reshteh", reshteh);
cmd.Parameters.AddWithValue("@madrak", madrak);
cmd.Parameters.AddWithValue("@vaestekhdam", vaestekhdam);
cmd.Parameters.AddWithValue("@khed1", khed1);
cmd.Parameters.AddWithValue("@khed2", khed2);
cmd.Parameters.AddWithValue("@khed3", khed3);
cmd.Parameters.AddWithValue("@khed4", khed4);
cmd.Parameters.AddWithValue("@heatm", heatm);
cmd.Parameters.AddWithValue("@heatn", heatn);
cmd.Parameters.AddWithValue("@matabd", matabd);
cmd.Parameters.AddWithValue("@matabn", matabn);
cmd.Parameters.AddWithValue("@address", address);
cmd.Parameters.AddWithValue("@photo", photo_aray);
cmd.Parameters.AddWithValue("@parvanehl", parvanehl);
cmd.Parameters.AddWithValue("@parvaneht", parvaneht);
cmd.Parameters.AddWithValue("@vazeatf", vazeatf);
cmd.Parameters.AddWithValue("@vazeatgh", vazeatgh);
cmd.Parameters.AddWithValue("@mmt", mmt);

cn.Open();
cmd.ExecuteNonQuery();
cn.Close();

MessageBox.Show("رکورد با موفقیت ویرایش شد ", "ویرایش ", MessageBoxButtons.OK, MessageBoxIcon.Information);


}

catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

saba664
سه شنبه 25 مهر 1396, 13:33 عصر
تایپش رو bigint تغییر دادم ولی بازم مشکل داره و خطای کانورت میده

رامین مرادی
سه شنبه 25 مهر 1396, 13:35 عصر
این خط رو

string d_id = lbl_id.Text.ToString();

تبدیل به


int d_id =int.Parse(lbl_id.Text);


کنید

saba664
سه شنبه 25 مهر 1396, 13:51 عصر
این خط رو

string d_id = lbl_id.Text.ToString();

تبدیل به


int d_id =int.Parse(lbl_id.Text);


کنید

اینبار خطا دیگه ایی داد input string was not a correct format

رامین مرادی
سه شنبه 25 مهر 1396, 13:59 عصر
مقدار داخل لیبل چی هست؟(این مقدار باید آیدی سطری باشه که میخواید ویرایش انجام بشه)

saba664
سه شنبه 25 مهر 1396, 14:15 عصر
مقدار داخل لیبل چی هست؟(این مقدار باید آیدی سطری باشه که میخواید ویرایش انجام بشه)

هیچی ی لیبل با خاصیت عدمم نمایش فقط برای اینکه خطا نگیره اخه قبلش خطا می گرفت که @id تعریف نشده

vahidwss
سه شنبه 25 مهر 1396, 16:15 عصر
برای گرفتن کمک کد مشکل دار رو همراه با پیغام خطا بزارید تا حل بشه.

danialafshari
چهارشنبه 26 مهر 1396, 01:08 صبح
با سلام
اول اینکه نیازی نبود این همه متغیر تعریف کنید و برابر textBox ها قرارش بدید، تنها کافی بود در پارامتر دوم AddWithValue اون textBox مربوطه رو میزاشتید، بخاطر رعایت نکردن کدتون گیج کننده شده

هیچی ی لیبل با خاصیت عدمم نمایش فقط برای اینکه خطا نگیره اخه قبلش خطا می گرفت که @id تعریف نشده
مگر نه اینکه در یک تاپیک دوستان بهتون گفتن یک فیلد Identity بزارید که فقط شماره بندازه؟
خب اون فیلده باید int باشه

string d_id = lbl_id.Text.ToString();

اونوقت چرا اینجا از نوع string قرارش دادید؟
این کوئری رو بزارید و نوعش رو هم int بزارید

int d_id = Convert.ToInt32(lbl_id.Text);

کوئری :

string str = @"update sabt set name=@name,family=@family,father=@father,jenseyat= @jenseyat,nezam=@nezam,code=@code,country=@country ,
ostan=@ostan,shahrestan=@shahrestan,telwork=@telwo rk,mobile=@mobile,reshteh=@reshteh,madrak=@madrak ,vaestekhdam=@vaestekhdam,khed1=@khed1,
khed2=@khed2,khed3=@khed3,khed4=@khed4,heatm=@heat m,heatn=@heatn,matabd=@matabd,matabn=@matabn,addre ss=@address,
photo=@photo,parvanehl=@parvanehl,parvaneht=@parva neht,vazeatf=@vazeatf,vazeatgh=@vazeatgh,mmt=@mmt where (d_id=@id)";

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

saba664
چهارشنبه 26 مهر 1396, 08:05 صبح
برای گرفتن کمک کد مشکل دار رو همراه با پیغام خطا بزارید تا حل بشه.

کد هست با پیغام خطا

saba664
چهارشنبه 26 مهر 1396, 08:08 صبح
با سلام
اول اینکه نیازی نبود این همه متغیر تعریف کنید و برابر textBox ها قرارش بدید، تنها کافی بود در پارامتر دوم AddWithValue اون textBox مربوطه رو میزاشتید، بخاطر رعایت نکردن کدتون گیج کننده شده

مگر نه اینکه در یک تاپیک دوستان بهتون گفتن یک فیلد Identity بزارید که فقط شماره بندازه؟
خب اون فیلده باید int باشه

string d_id = lbl_id.Text.ToString();

اونوقت چرا اینجا از نوع string قرارش دادید؟
این کوئری رو بزارید و نوعش رو هم int بزارید

int d_id = Convert.ToInt32(lbl_id.Text);

کوئری :

string str = @"update sabt set name=@name,family=@family,father=@father,jenseyat= @jenseyat,nezam=@nezam,code=@code,country=@country ,
ostan=@ostan,shahrestan=@shahrestan,telwork=@telwo rk,mobile=@mobile,reshteh=@reshteh,madrak=@madrak ,vaestekhdam=@vaestekhdam,khed1=@khed1,
khed2=@khed2,khed3=@khed3,khed4=@khed4,heatm=@heat m,heatn=@heatn,matabd=@matabd,matabn=@matabn,addre ss=@address,
photo=@photo,parvanehl=@parvanehl,parvaneht=@parva neht,vazeatf=@vazeatf,vazeatgh=@vazeatgh,mmt=@mmt where (d_id=@id)";

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

صحبت اولتون متوجه نشدم خب من میخوام همه فیلدهای جدولم ویرایشش شه منظورتون از اینکه این همه نباید تعریف شه چیه؟:ناراحت:

صحبت دومتون هم دوستان در همین تایپیک بهم متذکر شدن درستش کردم بازم خطا داد نوع خطاش رو هم نوشتم این خطا رو داد
input string was not a correct forma

saba664
چهارشنبه 26 مهر 1396, 08:11 صبح
اسکریپ جدولم قبلا گذاشتم بله بهینه نیست گفتم دوستان کمککم کنن اما خب من مبتدی هستم متوجه منظورشون نشدم نتونستم تغییری بدم

USE [finaldoctor]
GO

/****** Object: Table [dbo].[sabt] Script Date: 10/18/2017 08:41:15 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[sabt](
[d_id] [int] IDENTITY(1,1) NOT NULL,
[name] [nvarchar](50) NULL,
[family] [nvarchar](50) NULL,
[father] [nvarchar](50) NULL,
[jenseyat] [nvarchar](50) NULL,
[nezam] [nvarchar](10) NOT NULL,
[code] [nvarchar](10) NOT NULL,
[country] [nvarchar](10) NULL,
[ostan] [nvarchar](50) NULL,
[shahrestan] [nvarchar](50) NULL,
[telwork] [nvarchar](10) NULL,
[mobile] [nvarchar](11) NULL,
[reshteh] [nvarchar](50) NULL,
[madrak] [nvarchar](50) NULL,
[vaestekhdam] [nvarchar](50) NULL,
[khed1] [nvarchar](50) NULL,
[khed2] [nvarchar](50) NULL,
[khed3] [nvarchar](50) NULL,
[khed4] [nvarchar](50) NULL,
[heatm] [nvarchar](10) NULL,
[heatn] [nvarchar](10) NULL,
[matabd] [nvarchar](10) NULL,
[matabn] [nvarchar](10) NULL,
[address] [nvarchar](500) NULL,
[photo] [varbinary](max) NULL,
[parvanehl] [varchar](50) NULL,
[parvaneht] [nvarchar](50) NULL,
[vazeatf] [nvarchar](50) NULL,
[vazeatgh] [nvarchar](50) NULL,
[mmt] [nvarchar](10) NULL
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

saba664
چهارشنبه 26 مهر 1396, 09:34 صبح
با سلام
اول اینکه نیازی نبود این همه متغیر تعریف کنید و برابر textBox ها قرارش بدید، تنها کافی بود در پارامتر دوم AddWithValue اون textBox مربوطه رو میزاشتید، بخاطر رعایت نکردن کدتون گیج کننده شده

مگر نه اینکه در یک تاپیک دوستان بهتون گفتن یک فیلد Identity بزارید که فقط شماره بندازه؟
خب اون فیلده باید int باشه

string d_id = lbl_id.Text.ToString();

اونوقت چرا اینجا از نوع string قرارش دادید؟
این کوئری رو بزارید و نوعش رو هم int بزارید

int d_id = Convert.ToInt32(lbl_id.Text);

کوئری :

string str = @"update sabt set name=@name,family=@family,father=@father,jenseyat= @jenseyat,nezam=@nezam,code=@code,country=@country ,
ostan=@ostan,shahrestan=@shahrestan,telwork=@telwo rk,mobile=@mobile,reshteh=@reshteh,madrak=@madrak ,vaestekhdam=@vaestekhdam,khed1=@khed1,
khed2=@khed2,khed3=@khed3,khed4=@khed4,heatm=@heat m,heatn=@heatn,matabd=@matabd,matabn=@matabn,addre ss=@address,
photo=@photo,parvanehl=@parvanehl,parvaneht=@parva neht,vazeatf=@vazeatf,vazeatgh=@vazeatgh,mmt=@mmt where (d_id=@id)";

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

این خطا رو داد

146812

رامین مرادی
چهارشنبه 26 مهر 1396, 09:50 صبح
این خطا رو داد



دوست عزیز . شما چیزی که تو لیبل هست رو بزارید تا ببینیم چیه. اصلا مقدار لیبل شما چیه؟
یه عکس از زمان اجرا رو بزارید

saba664
چهارشنبه 26 مهر 1396, 10:38 صبح
دوست عزیز . شما چیزی که تو لیبل هست رو بزارید تا ببینیم چیه. اصلا مقدار لیبل شما چیه؟
یه عکس از زمان اجرا رو بزارید

146813

146814



هیچی ننوشتم اینم پروپرتیسش و خود لیبلش فقط خاصیت دیدنش غیرفعاله همین

رامین مرادی
چهارشنبه 26 مهر 1396, 11:11 صبح
منظورم از زمان اجرا اینه که وقتی برنامه اجرا میشه و میخواهید دکمه ویرایش رو بزنید داخل اون لیبل چی نوشته. چون صد در صد مقدار داخل لیبل ایراد داره که این خطا رو میده. شما داخل لیبل رو باید با اون مقدار آی دی که ایجاد کردید پر کنید حتما. وگرنه درست کار نمیکنه و هر چیزی غیر از عدد داخل اون باشه اون خطا ظاهر میشه

saba664
چهارشنبه 26 مهر 1396, 11:15 صبح
منظورم از زمان اجرا اینه که وقتی برنامه اجرا میشه و میخواهید دکمه ویرایش رو بزنید داخل اون لیبل چی نوشته. چون صد در صد مقدار داخل لیبل ایراد داره که این خطا رو میده. شما داخل لیبل رو باید با اون مقدار آی دی که ایجاد کردید پر کنید حتما. وگرنه درست کار نمیکنه و هر چیزی غیر از عدد داخل اون باشه اون خطا ظاهر میشه

میدونم میگم هیچی نوشته نمیشه.ببین

146817

رامین مرادی
چهارشنبه 26 مهر 1396, 11:25 صبح
خب معلومه دیگه بایدم خطا بده. شما باید اون لیبل رو به آی دی که ایجاد کردید بایند کنید تا شماره اون سطر در لیبل نمایش داده بشه. این خطا به اون مربوطه. لیبل رو به آی دی بایند کنید.

saba664
چهارشنبه 26 مهر 1396, 11:40 صبح
خب معلومه دیگه بایدم خطا بده. شما باید اون لیبل رو به آی دی که ایجاد کردید بایند کنید تا شماره اون سطر در لیبل نمایش داده بشه. این خطا به اون مربوطه. لیبل رو به آی دی بایند کنید.

خب ای دی من اصلا نشون داده نمیشه که بخوام بایندش کنم ببینین

146818

رامین مرادی
چهارشنبه 26 مهر 1396, 11:43 صبح
اتصالتون رو دوباره ایجاد کنید. من با دیتا ست کار نکردم کلا. حتما یه جایی داره که برید و ویرایش کنید و ستون ایدی رو هم اضافه کنید.

saba664
چهارشنبه 26 مهر 1396, 12:03 عصر
اتصالتون رو دوباره ایجاد کنید. من با دیتا ست کار نکردم کلا. حتما یه جایی داره که برید و ویرایش کنید و ستون ایدی رو هم اضافه کنید.

خدا خیرت بده مشکل حل شد

danialafshari
چهارشنبه 26 مهر 1396, 12:08 عصر
میدونم میگم هیچی نوشته نمیشه.ببین

146817

خسته نباشی برادر
میخوای label16 رو برات ویرایش کنه؟
شما اول تاپیک اومدی از ado.net استفاده کردی الان رفتی روی ویزارد!
با کدوم راهنماییت کنیم؟
اگر پس از ساخت dataset فیلدی اضافه کنید باید دیتاست رو بروزرسانی و فیلد جدید را تیکش رو بزنید تا اضافه بشه
در پنجره dataset مراحل آپدیت دیتاست رو پیش برید:
146820