PDA

View Full Version : سوال: راهنمایی جهت برطرف کردن خطای "Syntax error in INSERT INTO statement.



ali.m.a
پنج شنبه 03 مهر 1393, 11:43 صبح
با سلام
اساتید محترم لطفا راهنمایی بفرمایید که مشکل کد زیر چیه که خطای فوق رو میده
پیشاپیش ممنونم

Private Sub BtnEdit_Click(sender As Object, e As EventArgs) Handles BtnEdit.Click
Dim OledbConnection As New OleDbConnection(Class_Variables.StrConnection)
Dim cmd As New OleDbCommand
Dim SqlStr As String
SqlStr = String.Concat("INSERT INTO Tbl_Storage (RegFactDate, SanadNo, FactorNo, Factorer, Kala, Model, Tedad, Date1, Prise, Mem) VALUES", _
"('", TxtRegFactDate.Text, "',", TxtSanadNo.Text, ",", TxtFacorNo.Text, ",'", TxtFactorer.Text, "','", TxtKala.Text, "','", TxtModel.Text, "',", TxtTedad.Text, ",'", TxtDateIn.Text, "',", TxtPrise.Text, ",'", TxtMemo.Text, "')")
MsgBox(SqlStr.ToString)
cmd.CommandType = CommandType.Text


cmd.CommandText = SqlStr


cmd.Connection = OledbConnection


If OledbConnection.State <> ConnectionState.Open Then
OledbConnection.Open()
End If


cmd.ExecuteNonQuery()
End Sub

محمد آشتیانی
پنج شنبه 03 مهر 1393, 12:46 عصر
سلام
مشکل شما به خاطر ویرگول هایی هست که اضافه گذاشتی ، برای چسبوندن رشته ها به هم از & یا + استفاده کن
ضمن اینکه این روش درست نیست ، شما از پارامترها استفاده کن ، اینجوری هم اصولی تره ، هم خودت راحتتری و هم کدت خواناتر میشه
و نهایتا کانکشن رو باید ببندی بعد ازاینکه کوئری رو اجرا کردی
الان کوئری شما با استفاده از پارامترها به اینصورت میشه


Dim OledbConnection As New OleDbConnection(Class_Variables.StrConnection)
Dim cmd As New OleDbCommand
cmd.Parameters.AddWithValue("@RegFactDate", TxtRegFactDate.Text)
cmd.Parameters.AddWithValue("@SanadNo", TxtSanadNo.Text)
cmd.Parameters.AddWithValue("@FactorNo", TxtFacorNo.Text)
cmd.Parameters.AddWithValue("@Factorer", TxtFactorer.Text)
cmd.Parameters.AddWithValue("@Kala", TxtKala.Text)
cmd.Parameters.AddWithValue("@Model", TxtModel.Text)
cmd.Parameters.AddWithValue("@Tedad", TxtTedad.Text)
cmd.Parameters.AddWithValue("@Date1", TxtDateIn.Text)
cmd.Parameters.AddWithValue("@Prise", TxtPrise.Text)
cmd.Parameters.AddWithValue("@Mem", TxtMemo.Text)
Dim SqlStr As String
SqlStr = "INSERT INTO Tbl_Storage (RegFactDate, SanadNo, FactorNo, Factorer, Kala, Model, Tedad, Date1, Prise, Mem) VALUES "
SqlStr += "(@RegFactDate, @SanadNo, @FactorNo, @Factorer, @Kala, @Model, @Tedad, @Date1, @Prise, @Mem)"
MsgBox(SqlStr.ToString)
cmd.CommandType = CommandType.Text
cmd.CommandText = SqlStr
cmd.Connection = OledbConnection
If OledbConnection.State <> ConnectionState.Open Then
OledbConnection.Open()
End If
cmd.ExecuteNonQuery()
OledbConnection.Close()




موفق باشید

ali.m.a
پنج شنبه 03 مهر 1393, 13:35 عصر
ممنون از راهنماییتون

میشه بگید کدوم ویرگول ها منظورتونه؟

gilsoft
پنج شنبه 03 مهر 1393, 13:43 عصر
ممنون از راهنماییتون

میشه بگید کدوم ویرگول ها منظورتونه؟

سلام دوست عزیز

ضمن تشکر از دوست خوبم جناب Mohammad.Ashtiani (http://barnamenevis.org/member.php?12815-Mohammad-Ashtiani) ... سطر 5 و 6 رو بصورت زیر تغییر بده :

SqlStr = String.Format("INSERT INTO Tbl_Storage (RegFactDate, SanadNo, FactorNo, Factorer, Kala, Model, Tedad, Date1, Prise, Mem) VALUES ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', '{9}')", _
TxtRegFactDate.Text, TxtSanadNo.Text, TxtFacorNo.Text, TxtFactorer.Text, TxtKala.Text, TxtModel.Text, TxtTedad.Text, TxtDateIn.Text, TxtPrise.Text, TxtMemo.Text)


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

محمد آشتیانی
پنج شنبه 03 مهر 1393, 13:54 عصر
این یک قطعه از کد شما که اصلاح شده


"('" & TxtRegFactDate.Text & "'," & TxtSanadNo.Text & "," & TxtFacorNo.Text, " & ...

h.gheidrlou
جمعه 01 خرداد 1394, 19:56 عصر
سلام
ایا تغییر نسخه افیس 2013 و 2007 اکسس مشکل ایجاد میکند