PDA

View Full Version : وارد کردن اطلاعات در دیتاگرید و ثبت در دیتابیس



elmira_63
سه شنبه 11 تیر 1387, 16:47 عصر
سلام
من میخوام با وارد کردن اطلاعات در دیتا گرید مستقیم در دیتابیس sql ذخیره بشه

saeed_rezaei
چهارشنبه 12 تیر 1387, 09:31 صبح
خوب، حالا مشکل کجاست؟

elmira_63
چهارشنبه 12 تیر 1387, 11:19 صبح
مشکل من اینه که نمی دونم این کد insert کردن رو کجا باید بزارم؟ من با این کد insert میکنم


Dim str As String = "data source='" & ser & "';Initial Catalog=zaban;Integrated Security=True"
Dim cn As SqlConnection = New SqlConnection(str)
Dim query As String
If pish = True Then
query = "insert into resid(residno,dchek,code,numgharar,date,mabh,maba, darvajh,babat,naghd,chek,chekno,bank,shobe,jari,ma bnaghd,mabchek,resid1,residno1,mabresid,pish) values('" & t13 & "','" & m12 & "','" & t1 & "','" & c8 & "','" & m1 & "','" & m2 & "','" & m3 & "','" & m4 & "','" & m5 & "','" & c1 & "','" & c2 & "','" & m6 & "','" & m7 & "','" & m8 & "','" & m9 & "','" & m10 & "','" & m11 & "','" & c3 & "','" & m13 & "','" & m14 & "',1)"
Else
query = "insert into resid(residno,dchek,code,numgharar,date,mabh,maba, darvajh,babat,naghd,chek,chekno,bank,shobe,jari,ma bnaghd,mabchek,resid1,residno1,mabresid) values('" & t13 & "','" & m12 & "','" & t1 & "','" & c8 & "','" & m1 & "','" & m2 & "','" & m3 & "','" & m4 & "','" & m5 & "','" & c1 & "','" & c2 & "','" & m6 & "','" & m7 & "','" & m8 & "','" & m9 & "','" & m10 & "','" & m11 & "','" & c3 & "','" & m13 & "','" & m14 & "')"
End If
Dim cmd As SqlCommand = New SqlCommand(query, cn)
cn.Open()
cmd.ExecuteNonQuery()
cn.Close()
البته این روش ثبت برای وقتی هستش که دارم از توی تکست باکس ها اطلاعات رو می خونم اگه بخوام اطلاعات رو توی دیتاگرید بنویسم و اطلاعات از دیتا گرید ذخیره بشه چیکار باید بکنم اگه یه نمونه کد برام بزارین ممنون می شم

saeed_rezaei
چهارشنبه 12 تیر 1387, 16:10 عصر
سلام
من هیچ وقت از دیتاگرید استفاده نمی کنم اما می دونم که باید دیتاگرید رو به جدول مربوطه از دیتاست مورد نظر مقید (bind) کرد.
وقتی شما اطلاعات رو در دیتاگرید نشون می دید، فکر می کنم عمل binding به صورت درست انجام شده.
شما اطلاعات رو در دیتاگریدی که به جدولی خاص از دیتاستتون مربوط هست رو مقید می کنید و در ادامه اطلاعات رو در دیتاگرید می نویسید. بدین ترتیب این اطلاعات به صورت مستقیم در جدول مربوطه از دیتاست ذخیره می شه.
در نهایت باید این اطلاعات در بانک اطلاعاتی منعکس بشه.
برای انعکاس اطلاعات یک دیتاست در دیتابیس از باید از دیتاآداپتور کمک بگیرم. متد update از کلاس دیتاآداپتور این وظیفه رو بر عهده داره.
یعنی یه کدی مثل این:



dataadapter.update (dataset,"mytable")


می شه گفت سه نوع عملیات در یک دیتاست انجام می شه، حذف، ویرایش و یااضافه. بایستی برای هر کدام از این عملیات از command مربوط به خودش استفاده کرد.
یه کد مثل این:



dim ds as new dataset
dim da as new oledbdataadapter
dim cb as oledbcommandbuilder
.
.
.
.

cb= new oledbcommandbuilder (da)

da.insertcommand=cb.getinsertcommand
da.updatecommand=cb.getupdatecommand
da.deletecommand as cb.deletecommand

da.update (ds,"mytablename")


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

parsavb
جمعه 14 تیر 1387, 09:32 صبح
شما می تونید با چک کردن خاصیت state ردیفهای گرید خودتون ردیفهائی که تغییر پیدا کردند رو بدست آورده و بقیه کار هم که معلومه با یه دستور update ساده اون رو تو بانک ذخیره کنید . این طوری دیگه نیازی به صرف حافظه زیادی نیست

elmira_63
یک شنبه 16 تیر 1387, 08:23 صبح
شما می تونید با چک کردن خاصیت state ردیفهای گرید خودتون ردیفهائی که تغییر پیدا کردند رو بدست آورده و بقیه کار هم که معلومه با یه دستور update ساده اون رو تو بانک ذخیره کنید . این طوری دیگه نیازی به صرف حافظه زیادی نیست

ممنون از راهنماییتون ولی ممکنه یه نمونه کد برام مثال بزنید ؟؟
آخه من اومدم دستور آپدیت رو توی رویداد rowstatechange دیتاگریدم نوشتم ولی همون اول که اطلاعات از دیتابیس میخواد بایند بشه توی دیتاگرید err می گیره احتمال به یقین کار من اشتباه بوده
من یه دیتاگرید دیده بودم توی یه برنامه که انگار دقیقا داری توی جدول دیتابیس مستقیم می نویسی وقتی یه اطلاعاتی رو تغییر میدادی از اون cell بیرون میومدی تغییراتش ثبت می شد , وقتی روی یه سطری ctr+del می زدی اون سطر حذف می شد وقتی هم توی سطر جدید اطلاعات وارد می کردی سطر جدید insert می شد

parsavb
دوشنبه 17 تیر 1387, 12:51 عصر
این یک نمونه کوچک که هم زمان خروج اطلاعات را در بانک ذخیره می کنه و هم با کلیک بر روی botton البته از روشهای دیگری هم می تونی استفاده کنی که یک نمونه اون رو قبلاً توضیح دادم و یا اینکه از خاصیت rowvalidating سطرهای گرید استفاده کنی امیدوارم به دردت خورده باشه