View Full Version : سوال: کار با datagrid
hosein3000
دوشنبه 26 دی 1390, 12:48 عصر
با سلام
دوستان من می خوام حدود 20 جدول رو به هم وصل کنم در همه جدول ها هم یک فیلد با عنوان id بصورت کلید اصلی تعریف کردم
می خوام کل جدول ها رو توی یک datagrid نشون بدم (به نوعی گزارشگیری) که اطلاعات یکپارچه بشه
اما هر کاری می کنم نمی تونم انجامش بدم.از کد زیر برای اتصال 2 جدول تونستم استفاده کنم اما برای همه جدول ها نمی دونم چطوری انجام بدم
srcSQL1 = " select * from mosh inner join live on mosh.id=live.id "
راستی بعد از اینکه این جدول ها رو به هم وصل کردم چطوری برای ستون ها caption دلخواه خودم رو بنویسم.چون وقتی datagrid اجرا میشه caption های پیش فرض جدول توی datagrid نشون داده میشه
hosein3000
دوشنبه 26 دی 1390, 23:35 عصر
دوستان کسیی برا این مشکل راه حلی نداره؟؟
1101001
سه شنبه 27 دی 1390, 07:28 صبح
بعد از مقدار دادن به Datagrid این Function رو فراخوانی کن تا Caption تنظیم بشه
Function Caption1()
DataGrid1.Columns(0).Caption = ""
DataGrid1.Columns(1).Caption = ""
DataGrid1.Columns(2).Caption = ""
DataGrid1.Columns(0).Width = 1000
DataGrid1.Columns(1).Width = 3000
DataGrid1.Columns(2).Width = 1200
End Function
برای مقدار دادن به Datagrid بعد از انتخاب Recordset از یک Query مشخص (کل 20 جدول رو از قبل توی یه Query جمع میکنیم دیگه، مگه نه؟) اینجوری منتقل میکنیم به Datagrid
Rs.Close
Rs.Open "select * from Query1 Order By ID_Field"
Rs.Requery
Rs.MoveFirst
Rs.MoveLast
Rs.MoveFirst
Set DataGrid1.DataSource = Rs
X = Caption1()
hosein3000
پنج شنبه 29 دی 1390, 22:23 عصر
دوست من ممنون
الان می خوام query درست کنم . باید این کوئری ها رو تو اکسس درست کنم؟؟ درسته؟؟
خوب من تو اکسس کوئری درست کردم اما وقتی می خوام بعد از درست کردن بازش کنم کلا افیس گیر می کنه . نمی دونم به چه علتی اینطور میشه .ایا ممکنه از زیاد بودن جدول می تونه باشه؟ یا از ارتباط بین جدول ها؟؟
ارتباط بین جدول ها رو به چه صورت انتخاب کنم؟
من تو قسمت relationship فیلد id جدول رو به فیلد id کلیه جدول ها وصل کردم
hosein3000
جمعه 30 دی 1390, 15:50 عصر
دوستان شدیدا تو این قسمت گیر کردم
لطفا کمک !!!!
kitcat_m18
جمعه 30 دی 1390, 19:54 عصر
سلام،
دوست من برو تو این لینک فکر می کنم مشکلت حل بشه
http://www.online.tusc.k12.al.us/tutorials/access/accquery.htm
http://office.microsoft.com/en-us/access-help/create-queries-for-a-new-access-2007-database-RZ010291917.aspx?section=4
http://www.baycongroup.com/access2007/05_access.html
موفق باشی :لبخندساده:
hosein3000
جمعه 30 دی 1390, 20:36 عصر
با تشکر
من کوئری رو مثل روشهای بالا درست می کنم اما نمی دونم چرا کلا دیتابیس قفل می کنه ؟
احتمالا از relationship باشه اما اونم مثل روشهای بالا انجام می دم
نمی دونم علتش چیه
وقتی جدول ها 6 -7 تا باشه گیر نمی کنه اما وقتی جدول ها زیاد میشه کلا فایل قفل می کنه و برای خروج باید end prossess کرد
kitcat_m18
جمعه 30 دی 1390, 21:05 عصر
ببین برام جالبه که داری جداول با تعداد بالا رو با هم Join می کنی
مطمئنی اصول کارت از اول درسته؟؟؟
برنامت رو توضیح بده و چرا اینکه جدواول جدا هستند و چرا اینطوری داری با هم ترکیبشون می کنی.
اگه ممکنه نمونه بذار تا بررسی بشه
به نظرم از لحاظ معماری نرم افزار ضعیف عمل کردی
موفق باشی :لبخندساده:
hosein3000
جمعه 30 دی 1390, 21:46 عصر
مهندس جان قبلا از راهنمایی های شما در برنامه ام زیاد استفاده کردم الان دارم به مراحل اخرش میرسم
من کلا چند تا جدول مختلف دارم
با عنوان های مالک ، مشخصات سازه ، مشخصات ساختمان بتنی طبقه 1، مشخصات طبقه 2 تا طبقه 4
که اطلاعات این جداول به هر کدوم از یک فرمی میاد و چون هر کدوم از اطلاعات در یک فرمی قرار داره و زیاده نتونستم همشو در یک جدول قرار بدم
خلاصه ...
یک نوعی همه جداول با هم در ارتباط هستند یعنی برای هر مالک اطلاعات سایر جداول تعریف شده
تنها هدف من از اتصال جداول به هم ایجاد یک جدول یک پارچه از اطلاعات همه جدول ها بود و همچنین جستجوی اطلاعات
به عنوان مثال مثلا وقتی نام مالک رو تو یه تسکت باکس وارد کردم سایر مشخصات مربوط به همون مالک از سایر جداول هم نمایش داده بشه
من راه حل های مختلفی را برای این کار امتحان کردم اما نتونستم تا این که یکی از دوستان تو فروم گفت که از اتصال جداول استفاده کن که این نشد
امیدوارم منظورمو رسونده باشم
تو همه جداول هم یک کلید اصلی با عنوان id بصورت autonumber تعریف کردم
1101001
شنبه 01 بهمن 1390, 09:05 صبح
دوست عزیز ساختار جداول یا نوع ارتباطی که بین اونها تعریف کردی مشکل داره، من توی یکی از برنامه هام چند Query دارم که از بین 38 Query و Table دیتا میگیره و به Report منتقل میکنه (هم توی نسخه ی Access دارم هم نسخه ی SQL) نتیجه اینکه یا ارتباط جداول منطقی نیست و یا Query شما به چرخه ی نامحدود و باطلی می افته که مجبوری end prossess بزنی !
joker_pok
شنبه 01 بهمن 1390, 09:09 صبح
شما تو تعریف فیلد های جداولت مشکل داری رابطه ها رو درست چک کن - کلید های اصلی و خارجی رو بررسی کن رابطه هات چند به چندن ؟ عزیزم اینا درسته ساده هستند اما اصول کارت درست نباشه جواب هم نمیگیری دستور Inner join موقعی اتصال میده که رابطه ها درست باشن .
joker_pok
شنبه 01 بهمن 1390, 09:13 صبح
شما می تونی اگه مشخصات طبقه هات یکی باشن یه جدول درست کنی نه 4 تا و فقط تو قسمت طبقه ها شماره طبقه رو ذکر کن برای چی 4 تا جدول الکی می سازی نرمال سازی کن جداولتو تا جایی که می تونی کم کن تعداد جداول رو . بازم سوالی داشتی پایگاه داده رو پیوست کن کمکت کنیم
kitcat_m18
شنبه 01 بهمن 1390, 09:23 صبح
سلام،
دوست من به نظم معماری برنامت خیلی به هم ریختست.
در ضمن شما یه روشی رو می گم تست کن ببین جواب میده یا نه البته خودم امتحان نکردم
شما سعی کن جداولت رو در 3 تا کوئری به هم ارتباط بدی یعنی اگه 30 تا جدول داری 3 تا کوئری 10 تایی بزن بعد 3 تا کوئری رو تو یه کوئری به هم اتصال بده
ببین میشه یا نه
موفق باشی :لبخندساده:
hosein3000
شنبه 01 بهمن 1390, 14:24 عصر
حق با شماست
همینطوری دیمی جداول رو درست کردم و به همین علت هم زیاد شده و الان بیام دوباره جدول درست کنم خیلی طول می کشه باید یه طوری مشکل و حل کنم چون از اول دوباره درست کردن همه جدول ها خیلی سخته چون فرم هام زیاده
من ارتباطمو بصورت one to many انجام دادم
یعنی ستون id مشخصات مالک رو به ستون id همه جدول ها ارتباط دادم
hosein3000
شنبه 01 بهمن 1390, 14:49 عصر
سلام،
دوست من به نظم معماری برنامت خیلی به هم ریختست.
در ضمن شما یه روشی رو می گم تست کن ببین جواب میده یا نه البته خودم امتحان نکردم
شما سعی کن جداولت رو در 3 تا کوئری به هم ارتباط بدی یعنی اگه 30 تا جدول داری 3 تا کوئری 10 تایی بزن بعد 3 تا کوئری رو تو یه کوئری به هم اتصال بده
ببین میشه یا نه
موفق باشی :لبخندساده:
مهندس جان
مرسی این روشی که شما فرمودید تو اکسس جواب داد و بدون مشکل کوئری نهایی درست شد ببینم می تونم تو وی بی هم درست اتصالش بدم یا نه
باز هم ممون
hosein3000
شنبه 01 بهمن 1390, 15:29 عصر
با تشکر از دوستان
مشکل من تقریبا حل شد ولی یه سوال دیگه؟
چون تعداد فیلد ها زیاده وقتی فرم رو باز می کنم حدود چند ثانیه طول میشکه تا فرم رو نشون بده چطور می تونم یه کدی بنویسم که مثلا تا زمانی که دیتاگرید و فرم لود میشن بگه که چند ثانیه صبر کنید تا اطلاعات لود بشن
این زمان لود شدنشو چطوری بدست بیارم
اصلا چیکار کنم؟چطوری بنویسم؟؟
kitcat_m18
شنبه 01 بهمن 1390, 17:51 عصر
سلام،
نمیشه این کارو کرد. مگر اینکه اطلاعات رو تو یه فرم ثانوی بارگزاری کنی.
در ضمن Vb از Multi Trading ضعیف پشتیبانی می کنه به نظرم استفاده از این روش هم نمی تونه مفید باشه
موفق باشی :لبخندساده:
hosein3000
شنبه 01 بهمن 1390, 19:30 عصر
اخه چر ا؟ من زیاد دیدم تو برنامه هایی که دوستان همین فروم گذاشته بودن یک progress bar بود که زیرش هم نوشته بود تا لود شدن کامل صفحه چند لحظه صبر کنید و بعد از جند ثانیه میرفت به فرم مورد نظر
kitcat_m18
شنبه 01 بهمن 1390, 20:49 عصر
اون صوري گذاشته شده
فرم استارت آپ برنامه اون نوار پيمايشه اما در پشت زمينه اصل بانك داره لود ميشه :لبخندساده:
hosein3000
شنبه 01 بهمن 1390, 23:35 عصر
با تشکر منم منظورم همین بصورت صوری بود
مشکل حل شد
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.