PDA

View Full Version : اشکال در فرم ویرایش بعداز دوبار کلیک بر datagird



mohammadi
دوشنبه 26 اسفند 1387, 07:00 صبح
با سلام به دوستان

من یه دیتا گرید و دو تا تکست باکی برای جستجو توی یک فرم
گذاشتم

حال وقتی نتایج جستجو را می بینم وفتی دوبار بر روی هریک از سطر ها کلیک کنم

در پنچره دیگر اطلاعات شخص دیگر نشان داده میشه برای ویرایش

مثلا نتیجه جستجو محمدی است ولی وقتی دوبار روی ان کلیک می کنم رکورد شماره 1 جدول به نمایش در میآید

کد ها و پیوست را هم می ذازم اشکال از کجاست؟

کد جستجو : ( توی notpad درست ببینید)
Private Sub Command3_Click()
With Adodc1
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\senf.mdb;Persist Security Info=False;"
'.CommandType = adCmdText
.RecordSource = "select * from aza where family='" & Text1.Text & "' "
.Refresh


End With
Set DataGrid1.DataSource = Adodc1
End Sub


کد دوبار کلیک بر روی سطر دیتا گرید

Private Sub DataGrid1_DblClick()
edit.Show
edit.Adodc1.Recordset.AbsolutePosition = Adodc1.Recordset.AbsolutePosition
searchedit.DataGrid1.Refresh
End Sub

paysokhan
دوشنبه 26 اسفند 1387, 09:06 صبح
edit.Showedit.Adodc1.Recordset.AbsolutePosition = Adodc1.Recordset.AbsolutePositionsearchedit.DataGr id1.RefreshEnd Sub به جای AbsolutePosition از دستور bookmark استفاده کن درست می شود

mohammadi
دوشنبه 26 اسفند 1387, 10:50 صبح
سلام دوست عزیز بجایAbsolutePosition دستور bookmark گذاشتم ولی باز همون مشکل رو داره

فیلد اول رو فقط نشون میده میشه کد اصلاح شده را برام زحمتشو بکشید

mohammadi
سه شنبه 27 اسفند 1387, 06:52 صبح
چرا کسی از دوستان پاسخ نمی دهد

Sundown
سه شنبه 27 اسفند 1387, 08:23 صبح
سلام چون کد شما اشتباه منطقی داره
ببینید شما یک سری از رکورد ها رو با دستورات SQL سلکت میکنید درست ؟
و مثلا تعداد 10 رکورد انتخاب میشه و وقتی روی دیتاگرید خودتون دابل کلیک میکنید در واقع شماره ی اون رکورد در میان اون 10 رکورد انتخاب شده رو به فرم دیگه انتقال میدید مثلا 3 در حالی که شماره اصلی اون رکورد مثلا 200 هست
و بعد توی فرم دیگه سومین رکورد از بین کل رکورد ها برای ویرایش آماده میشه
شما باید یه طوری شماره واقعی رکورد رو به دست بیارید برای همین به نظر من یه فیلد توی بانکتون اضافه کنید از نوع AutoNumber تا شماره هر رکورد توی اون ذخیره بشه
اگه باز در این مورد سوالی دارید مطرح کنید
_____________________
من و مزرعه یه عمره چشم به راه یه بهاریم
زیر شلاق زمستون ضربه ها رو می شماریم
توی این شقه جز گریه کار دیگه ای نداریم
هرکی خوابه خوش به حالش ما به بیداری دچاریم

mohammadi
سه شنبه 27 اسفند 1387, 08:36 صبح
ممنون از پاسختان

میشه یه مثال کدی برام بزنید که چه جوری از این فیلد autonumber باید توی کدم استفاده کنم؟

یه اشکالی که دیگه دارم اینه چون بانک اطلاعاتی را داخل خود vb ساختم نمیشه فیلد autonumber ساخت

یا حداقل من بلد نیستم

Sundown
سه شنبه 27 اسفند 1387, 18:21 عصر
ببنید از توی VB که بانک رو می سازید بانک برنامه با فرمت اکسس 97 ذخیره شده و لذا توی اکسس 2003 نمیتوان فیلدی اضافه کرد.ولی شما میتوانید از منوی Tools گزینه DataBase Utility را انتخاب کنید و بعد هم گزینه Convert To Access 2003 و بعد هم امنتخاب مسیر و ذخیره بانک جدید.
آنوقت یه فیلد رو از نوع AotuNumber به بانک اضافه کنید و بانک را ذخیره کرده و دوباره از همان مسیر بانک را این بار به Access 97 تبدیل کنید
بعد چون شماره هر رکورد در کنار رکورد ها قرار میگیره شما میتوانید آن شماره به فرم دیگر برده و آن ویرایش کنید
این اون چیزی هست که میخواید

mohammadi
چهارشنبه 28 اسفند 1387, 08:04 صبح
دوست خوبم ممنون از پاسختان

اما یک اشکال کوچولو دارم شما کدی که محبت کردید از MSFlexGrid استفاده کرده

در حالیکه من از daagird استفاده می کنم آیا این دو روش فرق دارد یا کد را باید بر اساس datagird تغییر بدم؟

ممنون میشم کمکم کنی

Sundown
چهارشنبه 28 اسفند 1387, 09:39 صبح
هیچ فرقی نداره فقط شما از Ado و DataGrid استفاده کنید وگرنه الگوریتم کار همینه و شما باید همین کار رو با DataGrid انجام بدید
موفق باشید

mohammadi
چهارشنبه 28 اسفند 1387, 10:14 صبح
من اینکار رو کردم مشکلم حل نشد
خطا داره
سوال اینجاست شما در این کد چه جوری از فیلد id استفاده کردی؟

Sundown
پنج شنبه 29 اسفند 1387, 13:42 عصر
با سلام این هم یه کد و این بار با Ado و DataGrid

موفق و پیروز و سربلند باشید
____________________________
مسجد سر راه از آن گذشتیم
بر روی درش چنین نوشتیم
در میکده هم خدای بینی
با مرد خدای اگر نشینی

mohammadi
شنبه 01 فروردین 1388, 20:07 عصر
متشکر از لطف بی دریغ تان

با عرض پوزش تو مسافرت هستم و دسترسی به vb ندارم تا تست کنم به محض رسیدن به منزل چک کرده و نتیجه به اطلاع شما دوست خوبم خواهم رساند

باز از لطف بی دریغ تان سپاس گذار بوده و سالی سرشار از موفقیت را برایتان ارزومندم