View Full Version : یک datagrid برای هر کالا
amir zahed
شنبه 10 مهر 1389, 10:42 صبح
سلام دوستان
چطوری میشه برای هر کالا در انبارم یک datagrid داشته باشم.مثلا اگه 100 تا جنس داشته باشم 100 تا datagrid داشته باشم که اطلاعات افزایش-کاهش اون جنسو ببینم.الان من همه کالاهام تو یک datagrid نمایش داده میشه
ممنون
SilverLearn
شنبه 10 مهر 1389, 12:00 عصر
سلام دوست عزیز اصلا نیازی به داشتن 100 تا دیتاگرید نیست عزیز من اینجوری اگه بخای برنامه نویسی کنی که برنامت هم از نظر حجم هم از نظر زیبایی و هم از نظر user friendly شکل خوبی پیدا نمی کنه و در نتیجه کاربران برنامت کاهش پیدا می کنه چون با این کار ممکنه سرعت نرم افزار نیز بیاد پایین
راه حل :
خوب چرا از یه فیلتر استفاده نمی کنی
ببین با کد زیر می تونی این فیلتر رو بذاری
If Text1.Text <> "" Then
Adodc1.RecordSource = "Select * from Name_table where Name_kala='" & Text1.Text & "'"
Adodc1.Refresh
Text1.Text = ""
Exit Sub
توضیحات : یک تکس باکس قرار بده و مثلا فیلد رو بر اساس نام کالا سرچ کن
اگر سوالی بود در خدمتیم
amir zahed
شنبه 10 مهر 1389, 12:17 عصر
سلام دوست عزیز
ممنون از چوابت .من همین کارو کردم .فایل برناممو میذارم شاید بهتر متوجه بشی
این برنامه کوچیک رو نوشتم که مربوط به انبار داریه. فقط چند تا مورد هست که میخوام شما بهم کمک کنید
1-میخوام برا هر کالا در انبارم یک datagrid داشته باشم. الان برای همه کالاهام یک datagrid دارم.
2-چطور میتونم ویرایش کنم؟مثلا تعداد کالایی رو کم یا زیاد کنم تو همون datagrid
3-میخوام آخرین موجودی انبارم رو بهم نشون بده.البته الانم میتونم این کارو انجام بدم از طریق جستجوی نام کالا.ولی اگه 100 تا رکورد داشته باشم همه رو میاره. میخوام فقط آخرین رکورد یا موجودی آخریه انبارم رو فقط تو یه رکورد بهم نشون بده
4-من برای حذف کالا یک فرم گذاشتم که از اون فرم حذف میکنم.امکان حذف کالا از تو خود datagrid هست؟ البته میدونم که هست ولی نتونستم این کارو انجام بدم. حذف انجام نمیده
SilverLearn
شنبه 10 مهر 1389, 23:43 عصر
سلام دوست عزیز بله امکان انجام چنین عملیاتی در خود دیتا گرید نیز وجود دارد
راستی سوال یک فکر کنم یک سوال استفهامی (سوالی که جواب آن معلوم باشد) بود درسته؟
کد زیر باعث می شود در خود دیتا گرید اجازه حذف - ویرایش - و ایجاد رکورد جدید داشته باشید
DataGrid1.AllowUpdate = True
DataGrid1.AllowAddNew = True
DataGrid1.AllowDelete = True
برای حذف در جای دیگر و یا همان در دیتا گرید توسط یک دکمه بدون نیاز به دیتاگرید می تونی کد زیر رو در برنامه قرار بدی
البته این کد اولین رکورد جاری رو حذف می کنه پس اول یه سرچ بگذار بعد اقدام به حذف کردن بکن یا همون کاری که کردی با دوبار کلیک روی دیتاگرید رکورد انتخاب میشه خوبه...
Dim msg As Integer
If Adodc1.Recordset.RecordCount = 0 Then
msg = MsgBox("File bara hazf vojod nadarad", vbCritical, "ÇÎØÇÑ")
Else
msg = MsgBox("Are u sure?", vbQuestion + vbYesNo, Space(20) + "")
If msg = vbYes Then
Adodc1.Recordset.Delete adAffectCurrent
End If
End If
amir zahed
یک شنبه 11 مهر 1389, 10:20 صبح
ممنون دوست گرامی
فقط چطور میتونم موجودی آخری هر کالا رو داشته باشم؟ الان بطور مثال من اگه قند رو انتخاب کنم حدود 5 تا رکورد از مواردی که وارد کردم رو میاره که من میخوام فقط مورد آخری که وارد کردم یعنی آخرین موجودی رو برام بیاره
با تشکر
SilverLearn
یک شنبه 11 مهر 1389, 21:36 عصر
سلام دوست عزیز فکر کنم کد های زیر می تونه کمک زیادی بهت در این مورد بکنه دیگه توضیح هم لازم نداره
چون همشون معلوم هستن البته اگر بازم مشکلی بود در خدمتیم
Adodc1.Recordset.MoveFirst
Adodc1.Recordset.MoveNext
Adodc1.Recordset.MoveLast
,.........
amir zahed
سه شنبه 13 مهر 1389, 12:54 عصر
سلام دوست عزیز
من همه کارایی که گفته بودید تو دیتا گرید انجام دادم.
allow delete=true و ...
با این کار عملیات حذف و ویرایش و اضافه کردن انجام میشه.اما وقتی از فرم خارج میشم تمام تغییرات سر جای خودش برمیگرده. مثلا اگه من رکوردی رو حذف کنم همون لحظه حذف انجام میشه اما به یک refresh کردن یا خارج شدن از فرم باز رکورد برمیگرده.دوست گرامی در مورد آخرین موجودی انبار هم اون کدی که نوشتید رو استفاده کردم ولی نتونستم موجودی آخر یک کالای مورد نظرم رو داشته باشم.الان با استفاده از دکمه search که در دیتا گرید گذاشتم نوع کالا رو انتخاب میکنم که اگه 100 رکورد داشته باشم بهم نشون میده که من اینو نمیخوام.فقط آخرین موجودی که از اون کالا رو دارم میخوام برام بیاره نه 100 تا رکورد از اونو.اگه ممکنه راهنمایی بیشتری بفرمایید
با تشکر از راهنمایی ارزنده شما
موفق باشید
conter
سه شنبه 13 مهر 1389, 16:40 عصر
دوست عزیز والا منم دقیقا در حال نوشتم یک برنامه انبار هستم و در مورد پاک کردن یک خط یا ستون وقتی خاصیت delete رو فعال کنی به راحتی پاک میشه و اگه فرم رو ببندی و برنامه رو دوباره اجرا کنی اون ستون ها یا ... پاک شدن
دوستان من هم مشکلی مثل دوست عزیز مون تقریبا دارم مشکل من اینه که مثلا اگه برنامه ما در مورد فاکتور برای کالا ها باشه حالا مثلا فاکتور اول تموم شد و ما پرینتشو گرفتیم و میخواییم اون فاکتور رو داشته باشیم چه طور میتونم توی دیتا گرید یا توی برنامه همون table ها یا همون ستون های فاکتور اول در فاکتور های جدید رعایت بشه
منظورم دقیقا اینه که مثلا ما کارمون با فاکتور اول تموم شده چطور میشه مثلا با یک دکمه تو برنامه دستور ساخت یک دیتا بیس جدید با همون مشخصات قبلی رو داد که توی برنامه استفاده شه به صورت اتوماتیک و فاکتور قبلی بایگانی شه ؟؟؟؟
amir zahed
چهارشنبه 14 مهر 1389, 19:50 عصر
سلام
کسی نیست جواب بده
amir zahed
جمعه 16 مهر 1389, 18:17 عصر
سلام دوستان عزیز
واقعاً کسی نیست بتونه مشکل منو حل کنه؟
SilverLearn
پنج شنبه 13 آبان 1389, 22:31 عصر
سلام آقاي كانتر خوب شما مي تونيد در برنامه تون از دو تا adodc و دو تا ديتا بيس استفاده بكنيد
به طوري كه :
پس از ثبت فاكتور جديد اول در دريتا بيس اولي ذخيره شود - از ديتا بيس دومي حذف گردد و براي فاكتور جديد آماده بشود
به اين صورت هم اطلاعات فاكتور هاي قديمي حفظ مي شه هم مشكلي براي ثبت فاكتر جديد پيش نمياد
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.