PDA

View Full Version : سوال: مشکل با ثبت زمان در دیتابیس



toopak
پنج شنبه 31 مرداد 1387, 01:45 صبح
سلام
من با کد زیر توی فرمم زمان سیستم رو میگیرم


Dim gettime As String = Format(Now, "hh:mm:ss").ToStringوقتی میخوام توی دیتابیس با این دستور بنویسم



inssql2 = "INSERT INTO tbservices(sid,accid,accname,time)VALUES('" & getsid & "','" & getaccid & "','" & getaccname & "','" & gettime & "')"
cmdsql.Connection = con
cmdsql.CommandText = inssql2


cmdsql.ExecuteNonQuery()






قسمت قرمز رو خطلا میده میگه syntax error INSERTمیده
توی بانکم فیلد زمان string
کد رو چطوری تغییر بدم؟

(مشکل حل شد) به پست 12-13-14-15 مراجعه کنید

kablayi
پنج شنبه 31 مرداد 1387, 03:46 صبح
سلام ...
اگرفقط ساعت رو میخوای ذخیره کنی اینطوری بنویس:


Dim gettime As String = TimeString


من دیتابیس شما رو ندیدم ولی احتمال میدم اگر طولی رو برای فیلدهاتون معین کرده باشین اونو یه بار دیگه چک کنید ... مثلا ممکنه برای فیلد time حداکثر طول 6 رو در نظر گرفته باشین که باید به 8 تغییر پیدا کنه ...

اگه مشکلتون حل نشد خطایی رو که میگیره بنویسید تا ببینم مشکل از کجاست ...

موفق باشید ...

toopak
پنج شنبه 31 مرداد 1387, 04:10 صبح
متاسفانه همون error رو میده
Syntax error in INSERT INTO statement

تو بانکم طول فیلد کم نیست

kablayi
پنج شنبه 31 مرداد 1387, 04:45 صبح
همه فیلدهای جدولتون از نوع string ... ؟؟
به صورت پارامتری بنویس احتمالا مشکل حل بشه ...

toopak
پنج شنبه 31 مرداد 1387, 04:55 صبح
چطوری یعنی؟

Dariuosh
پنج شنبه 31 مرداد 1387, 08:44 صبح
چطوری یعنی؟
SqlCommand يه Property داره به نام پارامتر
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection.aspx
که ميتوني با اون Selectته متغير دار بنويسي
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparametercollection.addwi thvalue.aspx

toopak
پنج شنبه 31 مرداد 1387, 14:27 عصر
ممنون اما من 10تا فیلد دارم
اگه بخوام همرو از این روش بفرستم که خیلی شلوغ میشه و کدمم قاطی میشه! :-(

Dariuosh
پنج شنبه 31 مرداد 1387, 16:08 عصر
ممنون اما من 10تا فیلد دارم
اگه بخوام همرو از این روش بفرستم که خیلی شلوغ میشه و کدمم قاطی میشه! :-(
10تا متغير يعني 10 خط کد !!
در هر صورت فکر ميکنم استانداردش اينطوريه !

kablayi
پنج شنبه 31 مرداد 1387, 16:26 عصر
سلام ...
فکر نمیکنم خیلی شلوغ بشه ... برعکس برنامه خواناتر میشه ...


Dim constr As String = "Provider=Microsoft.jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\database.mdb"
Dim cn As New OleDbConnection(constr)
strsql = "insert into driver (sid,accid,accname,time) VALUES (@sid,@accid,@accname,@time)"
Dim cmd As New OleDbCommand (strsql, cn)
With cmd.Parameters
.AddWithValue("@sid", getsid)
.AddWithValue("@accid",getaccid )
.AddWithValue("@accname",getaccname )
.AddWithValue("@time", gettime)
end with
cn.Open()
cmd.ExecuteNonQuery()
cn.Close()


دیگه مشکل کوتیشن("") و سینگل کوتیشن(' ') و امپرسند(&) و ... نداری!!!

toopak
سه شنبه 05 شهریور 1387, 02:27 صبح
متاسفانه باز هم همون error رو داد!!!

toopak
چهارشنبه 06 شهریور 1387, 01:04 صبح
یعنی هیچ کدوم از دوستان راه حل این مشکل منو نمیدونه؟

ali_md110
چهارشنبه 06 شهریور 1387, 03:11 صبح
دوست عزیز شما هنگام طراحی بانگ و فیلد نامگزاری فیلدها رو با یک سری از کلمات اساسی برنامه نویسی و ویندوز خودداری کنید مثلا نام فیلدتون رو time یا Date نزارید بزارید مثلا stime یا sdate
مشکل شما اینه
اسم فیلدتون رو از time به مثلا mytime بزارید نوعش رو هم فرقی نداره میتونید datetime یا استرینگ انتخاب کنید

Dariuosh
چهارشنبه 06 شهریور 1387, 12:25 عصر
دوست عزیز شما هنگام طراحی بانگ و فیلد نامگزاری فیلدها رو با یک سری از کلمات اساسی برنامه نویسی و ویندوز خودداری کنید مثلا نام فیلدتون رو time یا Date نزارید بزارید مثلا stime یا sdate
مشکل شما اینه
اسم فیلدتون رو از time به مثلا mytime بزارید نوعش رو هم فرقی نداره میتونید datetime یا استرینگ انتخاب کنید
سلام شما در کل به نکته خوبي اشاره کرديد .
و اميدوارم که مشکله دوستمون با اين تغيير حل شه ، اما فکر نميکنم !

ولي يه مطلبي که شايد به استاندارد کردن Quaryها کمک کنه و از مشکلات بيان شده جلوگيري کنه اينه که بهتره اسم Table ، Owner يا از اين دست رو داخل [] قرار بديم

kablayi
چهارشنبه 06 شهریور 1387, 19:58 عصر
سلام ...
دوست عزیز شما کوئری تونو اول تست کنید اگر جواب داد بزارید توی برنامه اصلی ...
در پنجره server Explorer هم میتونی اونو تست کنی ...

toopak
چهارشنبه 06 شهریور 1387, 23:36 عصر
(مشکل حل شد)

از هر سه شما دوستان ممنون
اول با راهنمایی kablayi (http://barnamenevis.org/forum/member.php?u=8701) کوئری گرفتم دیدم اسم فیلدها رو توی [] گذاشته رسیدم به نتیجه Dariuosh (http://barnamenevis.org/forum/member.php?u=48048) رسیدم
با این تفاسیر حرف ali_md110 (http://barnamenevis.org/forum/member.php?u=18325) هم درست باید باشه(البته تست نکردم)