PDA

View Full Version : DataGridView و آپديت(ذخيره) TableAdapter



ALI TT
یک شنبه 15 اردیبهشت 1387, 01:37 صبح
سلام دوستان . لطفا كمكم كنيد !
خيلي سادست :
من يه بانك دارم كه يه جدول داره و به يك DataGridView وصل است و وقتي بصورت دستي اطلاعات آن را دستكاري مي‌كنم و مي‌خواهم آن را ذخيره كنم از دستور :
TableAdapter.Update(DataSet
استفاده مي‌كنم . ولي ارور ميده ، ولي قبلا نمي‌داد !
براي اينكه ارور نده بايد بوسيله‌ي يك كد يك رديف و چيزي شبيه به آن به Dataset اضافه كرد تا در مقابل دستور بالا ارور ندهد مثل :
DataSet.TabelName1.Rows.Add("ali") ******HELP
:افسرده:

masoodp666
یک شنبه 15 اردیبهشت 1387, 10:30 صبح
براي اينكه ارور نده بايد بوسيله‌ي يك كد يك رديف و چيزي شبيه به آن به Dataset اضافه كرد تا در مقابل دستور بالا ارور ندهد


در صورتیکه هیچ داده ای هم در DataSet دستکاری نشه وقت آپديت کردن نباید هیچ Error ای بده.
کمی بیشتر توضیح بدید.

ALI TT
یک شنبه 15 اردیبهشت 1387, 15:03 عصر
در صورتیکه هیچ داده ای هم در DataSet دستکاری نشه وقت آپديت کردن نباید هیچ Error ای بده.
کمی بیشتر توضیح بدید.

سلام و تشكر بسيار از شما
اين پروژه را دانلود كن حجمش 100 كيلو بايته ببين مالتو هم همين طوره يا نه
اگه براي تو هم ارور داد كدش همراهشه يه نگاه بهش بنداز اگه نشد يكي خودت برام ضميمه كن
خيلي خيلي ببخشي . با ويژوال استديو 2005
درضم بانك اصلاعاتيش رو بايد تو درايو C كپي كني تا باز بشه
:ناراحت:

masoodp666
دوشنبه 16 اردیبهشت 1387, 23:25 عصر
مشکل برنامت اینه که دستور UpdateCommand رو ست نکردی توی فایل AliDataSet.xsd در قسمت T1TableAdapter

من بانک تو دیدم از Access استفاده کردی.
در صورتیکه از SQL استفاده کنی خودش همه ی دستوراتو (update , insert , delete) با این روش Drag and Drop کردن، توليد می کنه.

ولی با اکسس نمیکنه. نمیدونم چرا

این روش که شما استفاده کردی توصیه نمیشه سعی کن همه کدهاتو خودت دستی بنویسی.
البته بستگی به برنامه ای داره که میخوای استفاده کنی. برای برنامه های کوچک جواب میده این روش.

ALI TT
سه شنبه 17 اردیبهشت 1387, 00:52 صبح
تشكر مشكلشو حل كردم
مرسي

بعد منظورت چي بود كه گفتي از Access استفده كردي و ميبايست از SQL استفاده كني ، بعد مگه Acces خودش زير مجموعه SQL نيست
ميشه يه پروژه كوچيك از همون كه گفتي برام بزاري
خيلي
خيلي
ممنون ميشم

بعد ، من خودم قبلا از دستورهايي مثل زير استفاده ميكردم كه خيلي وقت گير بود و تازه اين روش بالا رو تست كردم بودم كه ارور داد
ولي با دستورات زير ميشود مانور بيشتري داد . نظر شما چيه اصلا اين كدها درسته يا نه ؟!

select :


DataSet1.Clear()

OleDbDataAdapter1.SelectCommand.CommandText = "SELECT * FROM SH WHERE Daterooz = '" & LDate.Text & "' AND name = '" & ComboBoxSetTime.Text & "'"

OleDbDataAdapter1.Fill(DataSet1)

Dim dataTable As DataTable = DataSet1.Tables(0)

update :


OleDbDataAdapter1.UpdateCommand.CommandText = "UPDATE SH SET Timeexit = '" & Ltime.Text & "' , Settime = '" & time & "' WHERE name = '" & ComboBoxSetTime.Text & "' AND Daterooz = '" & LDate.Text & "'"

OleDbDataAdapter1.UpdateCommand.ExecuteNonQuery()

insert :


OleDbDataAdapter1.InsertCommand.CommandText = "INSERT INTO SH(name, Daterooz, Timeenter)VALUES( '" & ComboBoxSetTime.Text & "' , '" & LDate.Text & "' , '" & Ltime.Text & "' )"

OleDbDataAdapter1.InsertCommand.ExecuteNonQuery()

masoodp666
سه شنبه 17 اردیبهشت 1387, 10:22 صبح
ميبايست از SQL استفاده كني
من نگفتم می بایست. گفتم اگه....



ميشه يه پروژه كوچيك از همون كه گفتي برام بزاري
منظورت یه پروژه که با Drag and Drop آبجکتها، با SQL ارتباط برقرار کرده یا به صورت دستی ؟

در مورد دستوراتی که نوشتی باید بگم که اولا این دستورات مربوط به چه قسمتی از پروژه ست ؟ آیا همه رو دستی نوشتید ؟



OleDbDataAdapter1.SelectCommand.CommandText = "SELECT * FROM SH WHERE Daterooz = '" & LDate.Text & "' AND name = '" & ComboBoxSetTime.Text & "'"
توی دستوراتی که مستقیم توی کد برنامه نوشته میشه دستورات باید بین دوتا " قرار بگیرند. یعنی اینجوری:


OleDbDataAdapter1.SelectCommand.CommandText = "SELECT * FROM SH WHERE Daterooz =" & LDate.Text & " AND name = " & ComboBoxSetTime.Text
برای دستورات update و insert هم همینجوری عمل کن.
یه نمونه کد که با SQL ارتباط برقرار کرده :


Dim cn As New SqlConnection("Data Source=.;Initial Catalog=DB Name;Integrated Security=True")
Dim sqlda As New SqlDataAdapter
Dim DS As New DataSet
Dim t As New DataTable("question")
DS.Tables.Add(t)
Dim c1 As New DataColumn("qpriority", GetType(Short))
t.Columns.Add(c1)
Dim c2 As New DataColumn("fid", GetType(Short))
t.Columns.Add(c2)
Dim c3 As New DataColumn("qid", GetType(Short))
t.Columns.Add(c3)
Dim c4 As New DataColumn("question", GetType(String))
t.Columns.Add(c4)
Dim c5 As New DataColumn("anstype", GetType(String))
t.Columns.Add(c5)

Dim col(0) As DataColumn
col(0) = c3
t.PrimaryKey = col

DataGridView1.DataSource = t

Dim cmd1 As New SqlCommand
cmd1.Connection = cn
cmd1.CommandType = CommandType.Text
cmd1.CommandText = "select * from ......"
sqlda.SelectCommand = cmd1
Dim b As New SqlCommandBuilder(sqlda)
sqlda.Fill(DS.Tables("question"))
این دستوره:

Dim b As New SqlCommandBuilder(sqlda)باعث ساخته شدن دستورات insert , update , delete میشه. فقط کافیه یه آبجکت ازش بسازی.
توی Access هم همینطوریه فقط با این فرق که از Jet 4.0 , Provider استفاده میشه.

ALI TT
سه شنبه 17 اردیبهشت 1387, 12:50 عصر
در مورد دستوراتی که نوشتی باید بگم که اولا این دستورات مربوط به چه قسمتی از پروژه ست ؟ آیا همه رو دستی نوشتید ؟

بله خودم نوشتم و در قسمت رويداد ها ، مثلا رويداد كليك باتون، اين روش select رو من يه جايي توي يه CD ديدم كه استفاده شده بود (CD آموزشي)

اينم يه برنامه براي دفترچه تلفنه همينطوري از رو همون CD آموزشي درست كردم .
البته اون يه برانامه براي نگه داري ليست كتابها بود و من ابتكاري اينو درست كردم .

روش كار با برنامه !!!!!!!!!!! :
ـــــ وقتي بازش ميكني آدرس يه بانك رو مي‌خواد كه اسمش PN.mdb هستش(توي همون فايل گذاشتم) ، بش بده
ـــــ بعد برنامه كه اومد بالا روي دكمه Show كليك كن ، تمام اطلاعات بانك مياد اونجا
ـــــ براي جستجو نام ، نام خانوادگي را در قسمت مربوط وارد و بروي find كليك كن . درضم اين برنامه با نام خانوادگي سرچ ميكنه و اگه چند نفر هم، هم نام باشند توي DataGrid همه را نمايش ميده
براي insert و update و ... . همون نام رو كه سرچ كردي ميتوان تغيير داد و سپس update كرد و ...... تا آخر

درضم بايد بگم كه اينجا من dataadapter رو از توي منوي tool و choose tol box item به تول باكس اضافه كردم چون خودش يه Data Adapter ديگه داره......
و dataGridView هم نداره به جاش DataGrid استفاده شده

يه چيز ديگه


منظورت یه پروژه که با Drag and Drop آبجکتها، با SQL ارتباط برقرار کرده یا به صورت دستی ؟

منظورم هم Drag and Drop و هم نوشتن كد بصورت دستي .
ولي دوميه رو بيشتر مي‌خوام

یا به صورت دستی


Dim b As New SqlCommandBuilder(sqlda)
باعث ساخته شدن دستورات insert , update , delete میشه. فقط کافیه یه آبجکت ازش بسازی.
توی Access هم همینطوریه فقط با این فرق که از Jet 4.0 , Provider استفاده میشه.

اگه از اين يه پروژه داري برام ميزاريي

از توجه شما ممنون منتظر جوابتان هستم .:قلب:

masoodp666
چهارشنبه 18 اردیبهشت 1387, 08:44 صبح
من تقریبا کل پروژه رو گذاشتم !
اون کدی رو که من اون بالا برات گذاشتم جواب همه سوالاتتو میده. نمیدونم منظورت چیز دیگه ست ؟
کافیه اون رو توی رویداد Load فرمت بنویسی و یه DataGridView بندازی روی فرمت. همین.

ALI TT
چهارشنبه 18 اردیبهشت 1387, 13:58 عصر
بله ، جواب داد واقعا ممنون