PDA

View Full Version : سوال: پنهان کردن ستونهای جدول



RezaS_1354
پنج شنبه 19 فروردین 1395, 02:14 صبح
سلام خدمت دوستان گرامی
آیا راهی هست که در حالت اجرا ستونهای جدول کنترل MSHFlexGrid را کاربر بتواند پنهان و آشکار کند
موضوع به این صورت است که من یه جدول مرتبط به دیتابیس دارم که حدود 30 تا Col یا همون ستون داره نمیشه در حالت عادی و پیشفرض کل ستونها نمایش داده شود و از طرفی خود کاربر هر بار فرم را باز میکند باید تمامی ستونها میبیند و خودش به دلخواه بعضی از ستونها را پنهان و یا آنهایی که پنهان کرده اشکار کند
نکته اصلی اینکه من خودم اینکار را با 0 صفر کردن عرض ستون مورد نظر توانسته ام اینکار و انجام دهم فقط مشکل اینجاست که هربار میخواهم رکوردی را جستجو یا دکمه رفرش را کلیک میکنم دوباره همه ستونهای پنهان نمایش داده میشود از دوستان اگر کسی تجربه اینکارو دارند محبت کنند راهنمایی بفرمایند . فقط به هیچ وجه از جدول های اکتیو ایکس نمیخواهم استفاده کنم مثله : vsflexgrid یا سایر ocx ها
ممنون


MSH1.ColWidth(1) = 0

hamed_vb
پنج شنبه 19 فروردین 1395, 13:47 عصر
تا اونجایی که من می دونم موقع ریفرش کردن ستون عرضش همون صفر میمنونه


MSHFlexGrid1.ColWidth(2) = 0
MSHFlexGrid1.Refresh

vbhamed
جمعه 20 فروردین 1395, 08:09 صبح
سلام
خب شما با دستور Sql راحت می‌تونید اینکار رو انجام بدید
Select * From Table
Select Name From Table
Select Name, Family From Table
Select Name, Family,... From Table

RezaS_1354
جمعه 20 فروردین 1395, 09:31 صبح
سلام مدیر ممنون
این خوبه فقط مشکلش اینجاس که وقتی میخاد دوتا یا بیشتر ستونها رو پنهان کنه هربار بعد از این کوئری باید یه رفرش انجام بشه که این وقتی اطلاعات زیاده خیلی وقتگیر و زشت میشه چیز دیگه ای بنظر شما نمیرسه که حالت فیلتر داشته باشه موضوع رو تو همون دیتا گرید جمع و جور کنه کاری با فیلدها نداشته باشه چون اینجوری مجبورم کنترل Ado جدول و تکست ها رو از هم جدا کنم تا هنگام ادد کردن رکورد مشکلی پیش نیاد شما هم با من موافقی ؟؟؟
ممنون میشم یه راه حل ساده تر و کارآمد تر بهم بدی
از دوست عزیز اقا حامد که اولین جواب رو گذاشته ممنونم فقط منظورم رفرش
MSHFlexGrid نبود منظورم رفرش دیتا بود
با تشکر

vbhamed
جمعه 20 فروردین 1395, 20:09 عصر
سلام

شما می‌خواین از کامپوننتهایی که این قابلیت رو دارن استفاده نکنین، از Ado و Sql هم استفاده نکنید، ،MSHFlexGrid هم که این قابلیت رو به اون شکل نداره، احتمالا راه بعدی هم پیشنهاد بشه می‌خواین ازش استفاده نشه، خب اینطوری که نمیشه بالاخره باید یک راه رو قبول کنید

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

hamed_vb
شنبه 21 فروردین 1395, 19:03 عصر
من هم با مدیر محترم انجمن موافق هستم پیشنهاد من Vsflexgrid8 هستش

RezaS_1354
یک شنبه 22 فروردین 1395, 05:59 صبح
مدیر جان ممنون از لطفت
فقط منظورم این بود که اگه بخام اینکارو انجام بدم باید از دو تا ado استفاده کنم لطف کن به این مثال توجه کن

10 تا تکست که مثلا شامل فیلد 1 و فیلد 2 و فیلد 3 و تا فیلد 10 رو دارم و جدول گرید هم داره 10 تا فیلد رو نشون میده و هم 10 تا تکست و هم جدول گرید به یک Ado متصل هست
تا اینجا که بحثی نداریم درسته ؟؟؟

حالا کاربر میاد 3 تا از فیلدهای جدول رو مثلا (فیلد های 1 و 2 و 3 ) رو پنهان میکنه که بقول شما من قبلا با دستور SQL اینکارو براش لینک کردم و کد نوشتم
حالا چه مشکلی پیش میاد ؟؟؟

مشکل وقتی شروع میشه که در همون حالت 7 فیلدی ، کاربر میخاد دکمه جدید یا همون عملیات Add رو انجام بده اونوقت 3 تا از تکست ها غیر فعاله و رکوردی قبول نمیکنه درسته استاد ؟؟؟
پس اینجا باید از دوتا Ado استفاده کرد یکی واسه جدول یکی هم تکست ها . حالا شما بفرمایید من بیرا حرف میزنم یا اگه دنبال راه حل بهتری هستم اشتباس
بهرحال بازم از لطف جنابعالی ممنون

vbhamed
یک شنبه 22 فروردین 1395, 07:51 صبح
سلام

اول اینکه برای موارد اینچنینی که شما گفتید استفاده از کامپوننتهایی که این قابلیت رو دارن مشکلتون رو حل می‌کنه چون فقط ستون پنهان میشه ولی فیلد وجود داره

اما اگر من باشم با توجه به شرایط برنامه تصمیم می‌گیرم چه کاری انجام بدم، در این مورد خاص من از دو تا Ado استفاده می‌کنم یا به جای Ado دوم از کد نویسی برای درج رکورد جدید استفاده می‌کنم (به کمک ADODB) چون تو حجم اطلاعات زیاد مخصوصا در شبکه بارگذاری بیهوده همه فیلدها باعث ایجاد ترافیک زیاد در شبکه و کاهش سرعت برنامه خود ما میشه

نکته ای که باید دقت کنید اینه که وقتی سؤالی مطرح می‌کنید باید تمام جوانب سؤال و شرایط رو توضیح بدین تا بشه راهنمایی درستی انجام داد نه اینکه بعد از اینکه پاسخی داده شد دوباره شرط جدیدی رو مطرح کنید و پاسخ داده شده رو رد کنید، اینطوری مشکل خودتون زودتر حل میشه

RezaS_1354
یک شنبه 22 فروردین 1395, 10:33 صبح
ممنون مدیر عزیز
از ما ببخشید دیگه آماتوری و هزار مشکل ، چه تو طرح سوال چه تو برنامه نویسی ، فقط من تو این یکی دو روزه روی یک روش کار کردم ، انشالله به نتیجه مطلوب رسیدم اینجا میزارم واسه سایر دوستان با مشکل شبیه بنده که بتونن استفاده کنن چون پیرو فرمایش جنابعالی سخته که بشه اینکارو انجام داد چون کلا کنترل محدودیه
بهرحال تشکر