PDA

View Full Version : سوال: کمک در مورد Execute Non Qury



melika-leyla
جمعه 24 خرداد 1387, 15:20 عصر
برنامه به بانک اکسس بنام db1.mdb که دارای یک جدول بنام mojodi ویک فیلد بنام mojodi است متصل شده


برنامه زیر در خط cmd.ExecuteNonQuery() ارورهای زیر را میدهد
__________________________________________________ ___________________________
check to determie if the object is null before
__________________________________________________ ___________________________
system.data.oledbexcption{"data type mismatch in criteria exprssin"}
__________________________________________________ __________________
system .null Refrence Excption "object Refrence not set an instance of an object



Imports System.Data.OleDb
PublicClass Form1
Inherits System.Windows.Forms.Form
Dim da As OleDbDataAdapter
Dim con As OleDbConnection
Dim cmd As OleDbCommand
Dim strsql AsString
Dim ds AsNew DataSet
PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load
con = New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=d:\database\db1.mdb")
da = New OleDbDataAdapter("select * from mojodi", con)
ds.Clear()
con.Open()
da.Fill(ds, "mojodi")
Me.BindingContext(ds, "mojodi").Position = Me.BindingContext(ds, "mojodi").Count - 1
TextBox1.DataBindings.Add(New Binding("text", ds, "mojodi.mojodi"))
da.Update(ds, "mojodi")
MsgBox("eeee")
Me.BindingContext(ds, "mojodi").AddNew()
strsql = "insert into mojodi(mojodi) values ('" & TextBox1.Text & "')"
ds.Clear()
cmd = New OleDbCommand(strsql, con)
cmd.ExecuteNonQuery()
MsgBox("dd")
ds.Clear()
da.Fill(ds, "mojodi")
con.Close()
EndSub
EndClass

ali_md110
شنبه 25 خرداد 1387, 01:31 صبح
مشکل شما در داده های ورودی با نوع فیلد بانک شماست که با هم یکی نیست مثل اینکه شما یه فیلد تو بانک از نوع number داشته باشی و بخوای رشته غیر عددی وارد کنی من کد شما رو اصلاکردم در ضمن هیچگاه نام جدول رو با نام یکی از فیلدهای اون همنام نگزارید

Dim da As OleDbDataAdapter
Dim con As OleDbConnection
Dim cmd As OleDbCommand
Dim strsql As String
Dim ds As New DataSet
con = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\db.mdb")
da = New OleDbDataAdapter("select * from table1", con)
da.Fill(ds, "table1")
strsql = "insert into table1(field1) values ('" & TextBox1.Text & "')"
con.Open()
cmd = New OleDbCommand(strsql, con)
cmd.ExecuteNonQuery()
MsgBox("dd")

دو روش دیگه براتوت گزاشتم میتونید استفاده کنید خیلی راجت و ساده
یه جدول با یک بانک بنام table1 و دو فیلد بنام فیلد 1و فیلد2

Private Sub save()
Dim intRowsAffected As Integer
Dim CNN As OleDbConnection
Dim Command As OleDb.OleDbCommand
Dim StrSql As String
Dim cnnstr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\db.mdb"
CNN = New OleDbConnection(cnnstr)
StrSql = "INSERT INTO Table1 ( field1,field2 )values(?,?)"
Command = New OleDbCommand(StrSql, CNN)
Command.CommandType = CommandType.Text
Command.Parameters.Add("@field1", Data.OleDb.OleDbType.VarChar, 50).Value = TextBox1.Text
Command.Parameters.Add("@field2", Data.OleDb.OleDbType.VarChar, 50).Value = TextBox2.Text
CNN.Open()
intRowsAffected = Command.ExecuteNonQuery()
CNN.Close()
If intRowsAffected = 0 Then
MsgBox("مشکل در اضافه کردن")
ElseIf intRowsAffected = 1 Then
MsgBox("اضافه شد")
End If

End Sub


روش 2


Private Sub Save2()
Dim StrSql As String
Dim CNN As OleDbConnection
Dim Adapter As OleDbDataAdapter
Dim DS As DataSet
Dim Drow As DataRow
Dim cmdBilder As OleDbCommandBuilder
Dim cnnstr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\db.mdb"
CNN = New OleDbConnection(cnnstr)
StrSql = "select * from table1 "
Adapter = New OleDbDataAdapter(StrSql, CNN)
DS = New DataSet
Adapter.Fill(DS, "table1")
Drow = DS.Tables("table1").NewRow
Drow("field1") = TextBox1.Text
Drow("field2") = TextBox2.Text
DS.Tables("table1").Rows.Add(Drow)
cmdBilder = New OleDb.OleDbCommandBuilder(Adapter)
If MsgBox("آیا مایل به ذخیره ردیف هستید", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
Adapter.Update(DS, "table1")
DS.AcceptChanges()
MsgBox("ثبت شد")
Else
DS.RejectChanges()
MsgBox("ثبت نشد")
Exit Sub
End If
End Sub
بانک db1 رو تو پوشهDebug در پوشه BIN برنامه کپی کنید