PDA

View Full Version : مشکل در پارامترهاي آپديت



Hossis
پنج شنبه 20 خرداد 1389, 22:09 عصر
من کد آپديت يک رديف رو اين طوري نوشتم ولي نمي‌دونم کجاش ايراد داره که پيام مي ده که ساينتکس اش اشتباهه


Dim sqlStr As String = "Update Matn Set (Caption=@Cap,string=@str,Tag=@tg,User=@Usr,Folder =@Fldr,Rate=@rat)"
Dim cmd As New OleDb.OleDbCommand(sqlStr, cnn)
Dim C1 As New OleDb.OleDbParameter("@Cap", "'" & tHead.Text.Trim & "'")
Dim S1 As New OleDb.OleDbParameter("@str", "'" & matn.Trim.ToLower & "'")
Dim T1 As New OleDb.OleDbParameter("@tg", "'" & tSubjects.Text & "'")
Dim U1 As New OleDb.OleDbParameter("@Usr", optNaqes.Checked)
Dim F1 As New OleDb.OleDbParameter("@fldr", "'" & tPath.Tag & "'")
' Dim L1 As New OleDb.OleDbParameter("@Lnk", fn1)
Dim R1 As New OleDb.OleDbParameter("@rat", j)
cmd.Parameters.AddRange(New OleDb.OleDbParameter() {C1, S1, T1, U1, F1, R1})
cnn.Open()
cmd.ExecuteNonQuery()
cnn.Close()

Hossis
جمعه 21 خرداد 1389, 00:05 صبح
البته نوع فيلدهاي فوق هم فرق مي کنه، فيلد String مقدار متن طولاني(Memo) مي گيره بقيه هم متني هستند به جز فيلد يوزر که بولين هست
شايد تفاوت نوع فيلد ها تآثير داشته باشه؟؟

Open-Source
جمعه 21 خرداد 1389, 09:59 صبح
چرا، وقتی از Parameters استفاده میکنی، مقدار فیلدها رو توی ' ' میزاری?!
چرا، برای مقدار دهی به Parameter هات اینقدر کد نوشتی?!

به این کد نگاه کن:


sCommand.CommandText = "tblKala_Insert_New_Record"
sCommand.Parameters.Clear()
sCommand.Parameters.AddWithValue("@KalaCode", txtKalaCode.Text)
sCommand.Parameters.AddWithValue("@KalaName", txtKalaName.Text)
sCommand.Parameters.AddWithValue("@AnbarCode", txtAnbarCode.Text)
sCommand.Parameters.AddWithValue("@SahmiehCode", txtSahmiehCode.Text)
sCommand.Parameters.AddWithValue("@VahedKalaCode", txtVahedKalaCode.Text)
sCommand.Parameters.AddWithValue("@SefareshPoint", sefareshPoint)

sCommand.ExecuteNonQuery()

Hossis
جمعه 21 خرداد 1389, 17:10 عصر
چرا، وقتی از Parameters استفاده میکنی، مقدار فیلدها رو توی ' ' میزاری?!
چرا، برای مقدار دهی به Parameter هات اینقدر کد نوشتی?!

اگه ميشه اين کدي که گذاشتيد، کاملشو بذاريد که من بدونم قبل و بعدش بايد چکار کنم؟
آرگومان اول AddwithValue چيه ؟ نام فيلد هست يا چيز ديگه ؟
منظور از
"tblKala_Insert_New_Record"
چيه ؟؟

b.mahsa
جمعه 21 خرداد 1389, 17:21 عصر
یه نگاه به این تاپیکتون بندازین

http://www.barnamenevis.org/forum/showthread.php?t=224919

تو پست 9 ام . یه نمونه update براتون گذاشتم.

Open-Source
جمعه 21 خرداد 1389, 18:19 عصر
اگه ميشه اين کدي که گذاشتيد، کاملشو بذاريد که من بدونم قبل و بعدش بايد چکار کنم؟
آرگومان اول AddwithValue چيه ؟ نام فيلد هست يا چيز ديگه ؟
منظور از
"tblKala_Insert_New_Record"
چيه ؟؟

1. آرگومان اول AddwithValue چيه ؟
همون متغییری هستش که توی CommandText برای مقدار دهی به فیلدت تعریف میکنی؛ مثلا در مثال زیر p1@ و p2@ و p3@ .



sCommand.CommandText = "Update Table1 Set fild1=@p1,fild2=@p2,fild3=@p3"
sCommand.Parameters.Clear()
sCommand.Parameters.AddWithValue("@p1", مقدار)
sCommand.Parameters.AddWithValue("@p2", مقدار)
sCommand.Parameters.AddWithValue("@p3", مقدار)

sCommand.ExecuteNonQuery()




2.
"tblKala_Insert_New_Record"
چيه ؟؟

بیخیال.
اون یه Stored Procedure هستش.

msadgd
جمعه 21 خرداد 1389, 19:25 عصر
عزیزجان اگه کدت درسته و با همین کد قبلا نتیجه گرفتی توی بانکت فیلد user رو چیز دیگه ای قرار بده مثلا users ببین درست میشه؟

ashkan209
جمعه 21 خرداد 1389, 20:02 عصر
من کد آپديت يک رديف رو اين طوري نوشتم ولي نمي‌دونم کجاش ايراد داره که پيام مي ده که ساينتکس اش اشتباهه

چیزی که دوستمون توی تاپیک 3 گفتند رو رعایت کنید ولی با استفاده از کد خودتون
ابتدا ' ' را برای فیلدهای از نوع کاراکتر بردارید و در صورتی که باز خطا داشتید ، اسکرین شات خطا و یا اون تکه کدتون رو اینجا بگذارین

Hossis
شنبه 22 خرداد 1389, 06:25 صبح
چیزی که دوستمون توی تاپیک 3 گفتند رو رعایت کنید ولی با استفاده از کد خودتون
ابتدا ' ' را برای فیلدهای از نوع کاراکتر بردارید و در صورتی که باز خطا داشتید ، اسکرین شات خطا و یا اون تکه کدتون رو اینجا بگذارین
کد خطا مربوط به سانتکس هست اين هم متن خطا
'Syntax error in UPDATE statement.
اين هم کد کامل
اين دستور آپديت بدون استفاده از پارامتر

Update Matn Set Caption='بديهى و نظرى', string=<html dir=rtl></html>, Tag='', User=False, Folder=144, Rate=3 Where Id=647

اين هم با استفاده از پارامتر

Dim sqlStr As String = "Update Matn Set Caption=? ,[string]=? ,[Tag]=? ,User=? ,Folder=? ,Rate=? Where Id=" & CurntNote
Dim cmd As New OleDb.OleDbCommand(sqlStr, cnn)
' "Update Pro Set Nam=?,Famil=? ,Age=? Where Id=" & txId.Text, con)
1: With cmd
2: .Parameters.Clear()
3: .Parameters.AddWithValue("?Caption", tHead.Text.Trim)
4: .Parameters.AddWithValue("?String", matn.Trim.ToLower)
5: .Parameters.AddWithValue("?TAG", tSubjects.Text)
6: .Parameters.AddWithValue("?User", optNaqes.Checked)
7: .Parameters.AddWithValue("?Folder", Mid(tPath.Tag, 2))
8: .Parameters.AddWithValue("?Rate", j)
9: cnn.Open()
10: .ExecuteNonQuery()
11: cnn.Close()
12: End With

من همه فرضيه ها رو امتحان کرم ولي نشد
در ضمن بگم که فيلد String از نوع Memo و فيلد Folder,rate از نوع عدد و فيلد User ازنوع بولين يا همان Yes/No هستند.

Hossis
شنبه 22 خرداد 1389, 06:39 صبح
یه نگاه به این تاپیکتون بندازین

http://www.barnamenevis.org/forum/showthread.php?t=224919


تو پست 9 ام . یه نمونه update براتون گذاشتم.

اون کد رو هم ديدم ، همين خطا رو ميده که نمونه اش رو در پست اخير گذاشتم



عزیزجان اگه کدت درسته و با همین کد قبلا نتیجه گرفتی توی بانکت فیلد user رو چیز دیگه ای قرار بده مثلا users ببین درست میشه؟
اين کار رو هم کردم و يوزر را به Sel تغيير دادم باز هم نشد.

Hossis
شنبه 22 خرداد 1389, 07:44 صبح
مشکل حل شد
مشکل اين بود که نام فيلدها از اسامي ويژه بودند که با گذاشتن آنها بين [] درست شد.
از همه دوستان نيز بابت همياري و کمک بي دريغ تشکر مي کنم