برگزیده های پرشین تولز

مشکل با insert در اکسس

shervin

ASP.net
کاربر قدیمی پرشین تولز
تاریخ عضویت
26 ژوئن 2005
نوشته‌ها
6,353
لایک‌ها
261
سن
38
محل سکونت
تهران
ببخشید بخش مربوط به اکسس نداشتیم همینجا تاپیک زدم
اینو ببینید موقع اینزت کردن ایراد میگیره
ارورش نمیدونم چیه
ضمنا ویندوز اپلیکیشن هستش
کد:
   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim msg As String
        Dim title As String
        Dim style As MsgBoxStyle
        Dim response As MsgBoxResult
        msg = "می خواهید ادامه دهید ؟"
        style = MsgBoxStyle.YesNo
        title = "توجه"
        response = MsgBox(msg, style, title)
        If response = MsgBoxResult.Yes Then
            cm = New OleDbCommand("insert into price (date,price,duration) values (@date,@price,@du)", cn)
            cm.Parameters.Add("@date", Date.Today)
            cm.Parameters.Add("@price", tprice.Text)
            cm.Parameters.Add("@du", "daily")
            cn.Open()
            cm.ExecuteNonQuery()
            cn.Close()
            lerror.Text = "قیمت جدید اضافه شد"
        End If
    End Sub
 

shervin

ASP.net
کاربر قدیمی پرشین تولز
تاریخ عضویت
26 ژوئن 2005
نوشته‌ها
6,353
لایک‌ها
261
سن
38
محل سکونت
تهران
ضمنا من کلی هم گشتم و موارد مشابهی رو دیدم تو همین فوروم ولی هیچ کدوم راه حلش برام فایده نداشت
فکر نمیکنم مشکل پرمیشن داشته باشم
چون قبلا درستش کردم
کارای این لینکم که جای دیگه حسین خان گفته بود انجام دادم دوباره نشد
http://rooznamechi.blogspot.com/2006/03/aspnet.html
بازم تاکید کنم که دارم ویندوز اپلیکیشن کار میکنم
البته فکر نمیکنم تفاوتی داشته باشه همه جا این دستورات یکی هستش تا اونجایی که میدونم
 

Parham

Registered User
تاریخ عضویت
24 سپتامبر 2003
نوشته‌ها
1,042
لایک‌ها
2
به جای این سه خط:
کد:
            cm = New OleDbCommand("insert into price (date,price,duration) values (@date,@price,@du)", cn)
            cm.Parameters.Add("@date", Date.Today)
            cm.Parameters.Add("@price", tprice.Text)
            cm.Parameters.Add("@du", "daily")

این خط رو بنویس!

کد:
cm = New OleDbCommand("insert into price (date,price,duration) values (" & Date.Today & "," & tprice.Text & ",'daily')", cn)
 

shervin

ASP.net
کاربر قدیمی پرشین تولز
تاریخ عضویت
26 ژوئن 2005
نوشته‌ها
6,353
لایک‌ها
261
سن
38
محل سکونت
تهران
ممنون از کمکت ولی بازم نشد
راستی نگی چقدر اسکوله واسه daily یه پارامتر درست کرده ها
اولش قرار بود متغیر باشه بعد قرار شد ثابت باشه واسه همین اونجوری موند
:D
حالا چیکار کنم ؟
ینی چشه؟
 

Parham

Registered User
تاریخ عضویت
24 سپتامبر 2003
نوشته‌ها
1,042
لایک‌ها
2
آخه شروین جان!‌اینطوری که نمیشه! چه اروری میده؟! چرا ارورش نمیدونی چیه؟! اگه ارور میده توضیحات اون ارور رو بزار اگه InnerException داره توضیحات اونو بزار. از Exception Handling استفاده کن، ببین ارور چیه:

کد:
        Try

اینجا کد خودتو بزار!

        Catch ex As DataException
            MessageBox.Show(ex.Message)


        End Try
 

shervin

ASP.net
کاربر قدیمی پرشین تولز
تاریخ عضویت
26 ژوئن 2005
نوشته‌ها
6,353
لایک‌ها
261
سن
38
محل سکونت
تهران
اینجوری نمیتونم ارور رو بگیرم اصلا قبل از اینکه به گرفتن خطا برسه استاپ میده همینو میگم دیگه
از تو دیتیلز اینو تونستم بگیرم
کد:
System.Data.OleDb.OleDbException was unhandled
  ErrorCode=-2147217900
  Message="Syntax error in INSERT INTO statement."
  Source="Microsoft JET Database Engine"
  StackTrace:
       at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
       at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
       at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
       at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
       at System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
       at Badansazi.config.Button1_Click(Object sender, EventArgs e) in D:\New Folder\Badansazi\Badansazi\Tools\config.vb:line 22
       at System.Windows.Forms.Control.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.ButtonBase.WndProc(Message& m)
       at System.Windows.Forms.Button.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.Run(ApplicationContext context)
       at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
       at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
       at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
       at Badansazi.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:line 81
       at System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args)
       at System.Runtime.Hosting.ManifestRunner.Run(Boolean checkAptModel)
       at System.Runtime.Hosting.ManifestRunner.ExecuteAsAssembly()
       at System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext, String[] activationCustomData)
       at System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssemblyDebugInZone()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
 

shimakh

کاربر تازه وارد
تاریخ عضویت
11 دسامبر 2006
نوشته‌ها
115
لایک‌ها
0
HTML:
 strinsert="Insert Into Price"&"([date],[price],[duration]) Values(?,?,?)"   cmdInsert = New oledbCommand( strInsert, cn)

اینو امتحان کنید نتیجشو بگید
 

shervin

ASP.net
کاربر قدیمی پرشین تولز
تاریخ عضویت
26 ژوئن 2005
نوشته‌ها
6,353
لایک‌ها
261
سن
38
محل سکونت
تهران
کار نکرد
مشکل نوع نوشتن نباید باشه
همون اولی هم که نوشتم درسته
باید مشکل جای دیگه باشه
 

shimakh

کاربر تازه وارد
تاریخ عضویت
11 دسامبر 2006
نوشته‌ها
115
لایک‌ها
0
ببینید اینطوری که شما از این دستور استفاده می کنید من تا حالا نتونستم نتیجه بگیرم
نمی دونم شاید خودتون تونستید باهاش کار کنید:blink: در هر صورت اگر قبلا از دستور خودتون نتیجه نگرفتید پیشنهاد می کنم فعلا این طوری باهاش کار کنید راستی شما اینا رو به کدتون اضافه کردید؟
<%@ Import Namespace="System.Data.OleDb"%>
<%@ Import Namespace="System.Data" %>
 

shervin

ASP.net
کاربر قدیمی پرشین تولز
تاریخ عضویت
26 ژوئن 2005
نوشته‌ها
6,353
لایک‌ها
261
سن
38
محل سکونت
تهران
اینقدرا دیگه یول نیستم :D
بله من همیشه همینجوری مینویسم و مشکلی هم ندارم
 

shimakh

کاربر تازه وارد
تاریخ عضویت
11 دسامبر 2006
نوشته‌ها
115
لایک‌ها
0
منظورم بیشتر به عبارتOleDb بود چون الان یک سرچ کردم دیدم بعضی ها که این مشکل رو داشتن به خاطر این بوده که اشتباها از sqlclient و امثالهم استفاده کردن ...​
 

Parham

Registered User
تاریخ عضویت
24 سپتامبر 2003
نوشته‌ها
1,042
لایک‌ها
2
شروین جان اینو بجای اون خط بالا که گفتم بزار:
کد:
cm = New OleDbCommand("insert into price (date,price,duration) values (#" & Date.Today & "#,'" & tprice.Text & "','daily')", cn)

یه کار دیگه هم بکن، اسم اون فیلد date ات رو عوض کن. همیشه سعی کن از کلمات کلیدی برای نام فیلدها استفاده نکنی.
 

shervin

ASP.net
کاربر قدیمی پرشین تولز
تاریخ عضویت
26 ژوئن 2005
نوشته‌ها
6,353
لایک‌ها
261
سن
38
محل سکونت
تهران
شرمنده پرهام جان تو زحمت افتادی
بازم نشد
نمیدونم چه مرگشه
واسه ویندوز اپلیکیشن اگه از SQL استفاده کنم حتما باید رو سیستمی که برنامه اجرا میشم SQL Server نصب بشه دیگه نه؟
البته تا اونجا که میدونم باید نصب بشه گفتم شاید راهی باشه
 

Parham

Registered User
تاریخ عضویت
24 سپتامبر 2003
نوشته‌ها
1,042
لایک‌ها
2
چه عرض کنم. اون خطا میگه که یه مشکل دستوری تو اون کامند هست! بعد از اون خط یه Break Point بزار بعد مقدار cm.CommandText رو با wath بگیر اینجا بزار.

برای SQL Server هم همونطور که خودت گفتی باید نصب کنی. میتونی Express Edition رو نصب کنی که رایگان و سبک هست. از سایت مایکروسافت دانلودش کن.
 

Parham

Registered User
تاریخ عضویت
24 سپتامبر 2003
نوشته‌ها
1,042
لایک‌ها
2
اون فیلد date هم حتما باید اسمش عوض بشه.
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
مشكل همونطور كه دوستان هم اشاره كردن فقط به date‌ مربوط هست و لاغير! بايد اسمش در ديتابيس و كد عوض بشه.
 

shervin

ASP.net
کاربر قدیمی پرشین تولز
تاریخ عضویت
26 ژوئن 2005
نوشته‌ها
6,353
لایک‌ها
261
سن
38
محل سکونت
تهران
از همه دوستان ممنونم
اشکال از date بود
آخه تو sql اگه کلمه کلیدی به کار میبردیم توی یه کروشه قرار میگرفت اینجا چون اونجوریش نکرد گفتم حتما ایرادی نداره
آخه اولین باره دارم با اکسس کار میکنم
همیشه با sql بوده
به هر حال خیلی ممنون از همه
 

shervin

ASP.net
کاربر قدیمی پرشین تولز
تاریخ عضویت
26 ژوئن 2005
نوشته‌ها
6,353
لایک‌ها
261
سن
38
محل سکونت
تهران
:blink: :blink: بچه مایه دار هیچ وقت پیکان سوار نشده ! از اولش زانتیا میرونده !:lol:
:D
البته همش مثل همه ولی یه نکات کوچولو مثل این فرق میکرد که مشکل شد
 
بالا