PDA

View Full Version : Error Syntax



پرستو پارسایی
دوشنبه 20 مرداد 1399, 02:36 صبح
با سلام من برای آپدیت (ادیت) دیتابیسم (SQL) از کد زیر استفاده میکنم در اگر متن کدی رو بصورت نقل قول وارد کنم ارور سینتکس میده ولی در حالت معمولی ارور نمیده و در ضمن رکورد رو درست انجام میده فقط ادیت مشکل داره

مثلا هنگام آپدیت با Dim Str As String مشکلی نداره ولی با Dim Str As String' ارور سینتکس میده ممنون میشم دوستان در صورت اطلاع پاسخ دهید.

این کدی که آپدیت میکنم

Dim cn As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\DB_VB.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True") Dim cm As New SqlCommand
cn.Open()
cm.Connection = cn
cm.CommandText = "UPDATE TBL_VB_Code SET [Count] = '" & lblCount.Text & "', [Name_code] = '" & txtName_Code.Text & "', [Details_Code] = '" & txtCode.Text & "' WHERE [ID] = '" & DgwCode.Rows(DgwCode.CurrentRow.Index).Cells(0).Va lue & "'"



سپاسگزارم

hamidrezax1
دوشنبه 20 مرداد 1399, 14:04 عصر
سلام دوست عزیز


cm.CommandText = "UPDATE TBL_VB_Code SET [Count] = " & lblCount.Text & ", [Name_code] = " & txtName_Code.Text & ", [Details_Code] = " & txtCode.Text & " WHERE [ID] = " & DgwCode.Rows(DgwCode.CurrentRow.Index).Cells(0).Va lue & ""



موفق باشید

پرستو پارسایی
دوشنبه 20 مرداد 1399, 16:44 عصر
[QUOTE=hamidrezax1;2433347]سلام دوست عزیز


cm.CommandText = "UPDATE TBL_VB_Code SET [Count] = " & lblCount.Text & ", [Name_code] = " & txtName_Code.Text & ", [Details_Code] = " & txtCode.Text & " WHERE [ID] = " & DgwCode.Rows(DgwCode.CurrentRow.Index).Cells(0).Va lue & ""



با سلام سپاسگزارم از پاسخ شما ولی الان با جایگزینی این کد دیگه هیچ متنی رو ادیت نمیکنه اینهم ارورش با کد قیلی هر ادیتی رو انجام میداد بجز تک کوتیشن الان هیج رکوردی رو آپدیت نمیکنه ممنون میشم بررسی بفرمایید خیلی سرچ کردم ولی موفق نشدم

پرستو پارسایی
دوشنبه 20 مرداد 1399, 16:59 عصر
لازم به توضیح اینکه اگر متنی با تک کوتیشن باشه ادیت نمیشه ولی اگر با چند تک کوتیشن باشه مشکلی نیست در توضیحات ارور تک کوتیشن هم مینویسه نقل قول شما باز است

(Dim F As String' ادیت نمیشه) ولی (Dim F As String''' ادیت میشه)

hamidrezax1
دوشنبه 20 مرداد 1399, 22:54 عصر
دوست عزیز ساختار دیتابیستون چی هست. این خیلی مهمه. مثلا شما میتونین از ' استفاده کنید زمانی که میدونید تکست هستش و زمانی که عدد هست استفاده نکنید
یا از. TOSTRING در آخر تکست استفاده کنید

پرستو پارسایی
دوشنبه 20 مرداد 1399, 23:22 عصر
دیتابیسم به این شکل هست اگر مربوط به دیتابیسه چرا فقط با یک کرکتر مشکل داره کمی گیج شدم

پرستو پارسایی
دوشنبه 20 مرداد 1399, 23:25 عصر
من از این روش آپدیت تو چند نرم افزار دیگه استفاده کردم با دیتا بیس های متفاوت امروز تست کردم همشون با تک کوتیشن مشکل دارن

hamidrezax1
سه شنبه 21 مرداد 1399, 05:06 صبح
سلام دوست عزیز


cm.CommandText = "UPDATE TBL_VB_Code SET [Count] = "& lblCount.Text.tostring & ", [Name_code] = "& txtName_Code.Text.tostring & ", [Details_Code] = "& txtCode.Text.tostring & " WHERE [ID] = "& DgwCode.Rows(DgwCode.CurrentRow.Index).Cells(0).Va lue.tostring & ""




به نظرم شما قبل از هر کاری اطلاعات رو درون یک متغیر بریزید نه اینکه مستقیم از دیتاگرید بخونید
بعدش پیشنهاد میکنم قبل خطا روی کامند تکست کلیک کنید و کل پاراگراف بگیرید و درون اس کیو ال برین و در اونجا تست کنید و بهترین روش بدست بیارین(این کلی بود) اینجوری میتونید راحت خطا یابی کنید و مشکل رو درک و رفع کنید
موفق باشید

Hossis
پنج شنبه 30 مرداد 1399, 16:32 عصر
من هم همین مشکل رو داشتم ولی با تبدیل تک کوتیشن به دو تا (نه دابل کوتیشن ،بلکه تکرار تک کوتیشن) مشکل حل شد
Dim cot1 As String = "'", cot2 As String = "''"
Dim Value As String = RTB.Text.Replace(cot1, cot2)

Mahmoud.Afrad
یک شنبه 02 شهریور 1399, 23:04 عصر
از پارامترها استفاده کنید تا مشکل برطرف بشه.

پرستو پارسایی
دوشنبه 03 شهریور 1399, 11:02 صبح
از پارامترها استفاده کنید تا مشکل برطرف بشه.


سپاسگزارم امکان داره کمی بیشتر توضیح دهید!!!

محمد آشتیانی
جمعه 07 شهریور 1399, 02:47 صبح
سلام
با پارامتر به این شکل می شود.


Dim sqlConnection As New SqlConnection("ConnctionString")
Dim sqlCommand As New SqlCommand("UPDATE TBL_VB_Code SET [Count] = @Count, [Name_code] = @NameCode, [Details_Code] = @DetailsCode WHERE [ID] = @Id", sqlConnection)


sqlCommand.Parameters.AddWithValue("@Count", lblCount.Text)
sqlCommand.Parameters.AddWithValue("@NameCode", txtName_Code.Text)
sqlCommand.Parameters.AddWithValue("@DetailsCode", txtCode.Text)
sqlCommand.Parameters.AddWithValue("@Id", Cint(DgwCode.Rows(DgwCode.CurrentRow.Index).Cells( 0).Value))


sqlConnection.Open()
sqlCommand.ExecuteNonQuery()
sqlConnection.Close()

پرستو پارسایی
جمعه 07 شهریور 1399, 10:48 صبح
سلام
با پارامتر به این شکل می شود.


Dim sqlConnection As New SqlConnection("ConnctionString")
Dim sqlCommand As New SqlCommand("UPDATE TBL_VB_Code SET [Count] = @Count, [Name_code] = @NameCode, [Details_Code] = @DetailsCode WHERE [ID] = @Id", sqlConnection)


sqlCommand.Parameters.AddWithValue("@Count", lblCount.Text)
sqlCommand.Parameters.AddWithValue("@NameCode", txtName_Code.Text)
sqlCommand.Parameters.AddWithValue("@DetailsCode", txtCode.Text)
sqlCommand.Parameters.AddWithValue("@Id", Cint(DgwCode.Rows(DgwCode.CurrentRow.Index).Cells( 0).Value))


sqlConnection.Open()



sqlCommand.ExecuteNonQuery()
sqlConnection.Close()


جناب آشتیانی سپاسگزارم از پاسخ شما مشکلم حل شد فقط اگر امکان داره علت بوجود آمدن مشکلی که در کد نویسی ارسال شده خودم بود رو بفرمائید جهت آموزش و اگر ممکنه بفرمائید وقتی رکوردها زیاد هستند و رکورد مورد نظر رو سلکت کردم چطور میتونم رکورد رو اسکرول کنم به بالا با تشکر

محمد آشتیانی
جمعه 07 شهریور 1399, 13:29 عصر
سلام
در کوئری خودتون در بخش Where ، چون ID یک فیلد از نوع Int است ، نباید مقدارش رو داخل تک کوتیشن قرار بدی ، یعنی به این شکل

cm.CommandText = "UPDATE TBL_VB_Code SET [Count] = '" & lblCount.Text & "', [Name_code] = '" & txtName_Code.Text & "', [Details_Code] = '" & txtCode.Text & "' WHERE [ID] = " & DgwCode.Rows(DgwCode.CurrentRow.Index).Cells(0).Va lue

سوال بعدی رو متوجه نشدم

پرستو پارسایی
جمعه 07 شهریور 1399, 19:33 عصر
سپاس از توجه شما سوال دومم در مورد سلکت کردن رکوردی هست که آپدیت میکنیم این کار رو بعد از آپدیت انجام میدم ولی چون رکوردها زیاد هستند در دیتا گرید جایی قرار میکیره که دیده نمیشه باید اسکرول را حرکت دهم تا رکوردی رو که سلکت کردم رو پیدا کنم . الان میخواهم بعد از آپدیت رکورد آپدیت شده در دیتا گرید جایی قرار بکیره که نیاز به اسکرول کردن دستی نباشه در حال حاضر سایز دیتا گریدم برای دیدن 6 رکورد تنظیم شده ممنونم از شما

محمد آشتیانی
جمعه 07 شهریور 1399, 23:53 عصر
سلام
شما قبل از آپدیت باید ایندکس ردیف مورد نظر رو بگیرید و توی یک متغیر نگهداری کنید
Dim selectedRowIndex = DataGridView1.CurrentRow.Index

بعد از آپدیت و مقدار دهی مجدد دیتاگرید ، همون ایندکس رو انتخاب کنید
DataGridView1.Rows(selectedRowIndex).Selected = True

پرستو پارسایی
شنبه 08 شهریور 1399, 09:25 صبح
سلام ممنونم از پاسخ شما ببخشید که سوالم نا مفهوم بوده من سلکت رو قبلا انجام دادم الان یه کد پیدا کردم که مشکلم رو حل کرد .


If DgwCode.Rows.Count - 1 >= lblCount.Text Then
DgwCode.FirstDisplayedScrollingRowIndex = lblCount.Text
DgwCode.Update()
End If