View Full Version : مشکل در Update رکورد جاری در Datagrid
navi2002
سه شنبه 29 دی 1388, 07:19 صبح
سلام دوستان عزیز من یک برنامه دارم که با vb و وقتی یک رکورد رو تو Datagrid انتخاب می کنم و فیلد هاش رو تغییر میدم با کلیک بر روی دکمه Update که تو فرم گذاشتم به جای رکورد جاری ، رکورد اول دیتابیس Update میشه این مشکل رو برای حذف رکورد جاری روی فرم هم دارم یعنی باز میره رکورد اول رو حذف می کنه من برنامه رو میذارم و ممنون میشم اگه یکی از دوستان لطف کنه و اصلاحش کنه بی نهایت ممنونم ، ضمنا تاپیک های مشابه رو دیدم این مطلب مطرح شده اما جواب نهایی بهش داده نشده بود
ضمنا برای انتخاب رکورد جاری باید روی شماره اتونامبر کنار رکورد دابل کلیک کرد
navi2002
چهارشنبه 30 دی 1388, 09:41 صبح
تصورم این بود اینجا دوستان لطف دارند و جواب می دن به سوالم ، انگار به تازه وارد ها کسی اهمیتی نمی ده
Dr.Bronx
چهارشنبه 30 دی 1388, 11:24 صبح
تصورم این بود اینجا دوستان لطف دارند و جواب می دن به سوالم ، انگار به تازه وارد ها کسی اهمیتی نمی ده
تصورتون کاملا درست هست . اساتید اینجا هستند و به سوال ها پاسخ می دن اما براشون اهمیتی نداره که شما 10000 پست دارید یا 1 پست . اگر وقتش رو داشته باشند حتما به سوال شما جواب می دن .
به هر حال
برنامه رو دانلود کردم
اولا که شما خیلی کدها رو بی دلیل پیچیده می کنید
دوما فایل های Frx موجود نیست
اون checkdigit توی فرم موجود نیست
و در این sub
Private Sub Cmnd_Save_Click()
27 بار از If استفاده کردید که خیلی غیر منطقی هستید
شما می تونید با Or دستورات رو جدا کنید
مثلا
If txt_ID.Text = "" or txt_CUSTYPE.Text = "" or txt_NAME.Text = "" then
msgbox "..........."
end if
در ضمن شما متغیر هاتون رو اصلا تعریف نمی کنید نوعش رو و همینطوری استفاده می کنید
مطمئن باشید در آینده براتون مشکل ساز میشه
اما
دلیل این اشکال به خاطر این هست که شما فیلتر نمی کنید اطلاعات رو
و طبیعی هست که میاد اولین رکورد رو حذف می کنید
ببینید الان در این قسمت
Set AdoData = New Recordset
AdoData.Open "SELECT * FROM CardInformation", Db, adOpenStatic, adLockOptimistic
Set DataGrid.DataSource = AdoData.DataSource
AdoData.Delete
شما همه اطلاعات رو از تیبل cardinformation استخراج می کنید
و بعد دستور حذف رو می دید
باید فقط همون خطی رو که می خواید حذف کنید با دستور where جدا کنید از بقیه
مثلا
select * from cardinformation where cardid = 10
بعد که دستور delete رو بدید
فقط رکوردی حذف میشه که cardid اون مساوی با 10 باشه
فکر می کنم توضیحات کافی بود
به هر حال سوالی بود در خدمتم
موفق و موید باشید
navi2002
چهارشنبه 30 دی 1388, 11:49 صبح
تصورتون کاملا درست هست . اساتید اینجا هستند و به سوال ها پاسخ می دن اما براشون اهمیتی نداره که شما 10000 پست دارید یا 1 پست . اگر وقتش رو داشته باشند حتما به سوال شما جواب می دن .
به هر حال
برنامه رو دانلود کردم
اولا که شما خیلی کدها رو بی دلیل پیچیده می کنید
دوما فایل های Frx موجود نیست
اون checkdigit توی فرم موجود نیست
و در این sub
Private Sub Cmnd_Save_Click()
27 بار از If استفاده کردید که خیلی غیر منطقی هستید
شما می تونید با Or دستورات رو جدا کنید
مثلا
If txt_ID.Text = "" or txt_CUSTYPE.Text = "" or txt_NAME.Text = "" then
msgbox "..........."
end if
در ضمن شما متغیر هاتون رو اصلا تعریف نمی کنید نوعش رو و همینطوری استفاده می کنید
مطمئن باشید در آینده براتون مشکل ساز میشه
اما
دلیل این اشکال به خاطر این هست که شما فیلتر نمی کنید اطلاعات رو
و طبیعی هست که میاد اولین رکورد رو حذف می کنید
ببینید الان در این قسمت
Set AdoData = New Recordset
AdoData.Open "SELECT * FROM CardInformation", Db, adOpenStatic, adLockOptimistic
Set DataGrid.DataSource = AdoData.DataSource
AdoData.Delete
شما همه اطلاعات رو از تیبل cardinformation استخراج می کنید
و بعد دستور حذف رو می دید
باید فقط همون خطی رو که می خواید حذف کنید با دستور where جدا کنید از بقیه
مثلا
select * from cardinformation where cardid = 10
بعد که دستور delete رو بدید
فقط رکوردی حذف میشه که cardid اون مساوی با 10 باشه
فکر می کنم توضیحات کافی بود
به هر حال سوالی بود در خدمتم
http://barnamenevis.org/forum/images/editor/menupop.gif
موفق و موید باشید
fd نهایت از توضیحات شما ممنونم و نکات مفیدی رو فرمودید فقط یه سوال اون هم اینکه اینکه فرمودید باید همون رکوردی رو که میخوام فراخوانی کنم من چون با vb تا حالا کار نکردم نمی دونم چه دستوری بدم که رکورد جاری انتخاب بشه چون شما فرمودید Cardid=10 در حالیکه رکورد جاری هر رکوردی میتونه باشه و باید یه دستوری بنویسم که شرطش برابر با رکورد جاری روی فرم باشه
ضمنا من فایل های ocx رو میگذارم بی نهایت ممنون میشم اگه فایلم رو اصلاح کنید گرچه این کمی زیاده خواهی اما ممنون میشم
Dr.Bronx
چهارشنبه 30 دی 1388, 13:03 عصر
چرا مشخص نباشه
شما اینجا مشخص کردید دیگه
"SELECT * FROM CardInformation WHERE AutoNumber = " & Val(DataGrid.Text)
حالا به جای select از delete استفاده کنید
یعنی میشه
"DELETE * FROM CardInformation WHERE AutoNumber = " & Val(DataGrid.Text)
موفق باشید !
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.