ايران ويج

نسخه‌ی کامل: قراردادن يك مقدار درون ديتا گريد
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
ايا گريدهاي خود vb اين امكان رو دارن كه بشه درونشون يك رشته اضافه كرد
مثلا يك ركورد ست رو به يك ديتا گريد بدي و بعدش يك رشته رو تو خونه جديدي از گريد اضافه كني؟ ميدونم كه ميشه يك ستون جديد با اين شرايط ايجاد كرد اما نميدونم چجوري ميشه مقدارم رو بهش بدم
با سلام
خاصیت AllowAddNew این کنترل باید از نوع True باشد که بتوانید این کار را انجام بدهید.

موفق باشید.
سؤالت زیاد واضح نیست (یعنی من درست متوجه نمیشم)
اما اگه میخوای یه ستون به DataGrid اضافه کنی امکانش هست.
کد:
DataGrid1.Columns.Add DataGrid1.Columns.Count
ولی چون این ستون جزو فیلدهای جدولت نیست ـ تا زمانی که DataGrid به یک Table متصل باشه ـ نمیشه بهش مقدار بدی.
پس چجوري بايد بهش مقدار داد
هر ستون از دیتاگراید نماینده یک فیلد از جدول بانک اطلاعاتی است (هر ردیف هم یک رکورد).
به نظرتون منطقیه که دیتاگراید ستونی به غیر از فیلدهای جدول رو نشون بده و بعد اطلاعاتی هم توش ذخیره کنه؟
فرض کنید یک ستون جدید اضافه کردیم و بعد خواستیم توی ردیف n ام از اون ستون اطلاعاتی وارد کنیم. دیتاگراید زبون بسته این اطلاعات رو کجا باید ذخیره کنه در حالیکه چنین فیلدی اصلا توی جدول دیتابیسمون موجود نیست؟
شما دقیقا بفرمایید چیکار میخواید بکنید شاید بشه یه کاریش کرد.
خوب اين بستگي داره به اينكه شما ركورد ست رو چجوري بگيري اين امكان وجود داره كه شما اجازه تغيير رو تو بانك با توجه به نوع ركورد ست ايجاد شده از كاربر بگيري و يا اجازه update شدن ركورد ها رو بهش بدي
مشكل من اينه كه ميخواهم تو يك گريد مقادير select شده تيبلم رو با كمي تغيير نشون بدم مثلا تهران رو بصورت استان تهران نشون بدم و يا مقادير پولي رو به يك فانكشن ارسال كنم و نتيجه رو تو گريد نشون بدم و يا تاريخ ميلادي موجود در بانك رو بصورت شمسي نشون بدم
اين رو هم بگم كه نميخواهم به بانك چيزي اضافه يا كم كنم فقط ميخواهم نمايش فيلد هام رو با كمكي تغيير در اونها نشون بدم
با استفاده از FormatString خود DateGrid میشه یه رشته به آخر مقادیر عددی اضافه کرد. احتمالا به آخر مقادیر رشته ای هم بشه ولی من بلد نیستم. اما اینکه مقادیر رو به یک تابع از برنامه خودت بدی و بعد از پردازش تو گراید نشون بدی چون من هیچ راهی بلد نیستم اگه جای شما بودم، مثلا برای تاریخ این کار رو می کردم:
یک فیلد تاریخ برای ذخیره تاریخ میلادی از نوع Date/Time واقعا لازمه چون اگه بخواید رکوردهای بین دو تاریخ رو فیلتر کنی حتما باید تاریخت میلادی باشه. در کنارش یک فیلد تاریخ از نوع String هم میذارم که تاریخ شمسی توش ذخیره میشه. وقتی کاربر تاریخ شمسی رو وارد میکنه (جدا از کنترل صحیح بودن تاریخ) مقدار رو اول توی فیلد تاریخ که از نوع رشته بود میذارم بعد تبدیل به میلادی می کنم و تو فیلد تاریخ که از نوع Date/Time بود هم میریزم. این کار هم موقع ثبت رکورد جدید هم موقع ویرایش رکورد از قبل ایجاد شده انجام میشه و توی گراید هم فقط تاریخی رو که از نوع String و به صورت شمسی هست نشون میدم. (تو گرایدی که خودم شبیه سازی کردم از این روش استفاده کردم)

یه راه دیگه اینکه گراید رو به Ado وصل نکنی، خودت با حلقه For رکوردها بخونی بعد با فرمت دلخواه وارد گراید کنی. نمی دونم شاید اگه رکوردهات چندهزارتا باشن سرعت پایین بیاد. برا ویرایش هم که مشکل خاصی نیست هر ردیفی از گراید تغییر کرد اول با MoveFirst میری رو اولین رکورد بعد با Move میری به رکوردی که برابر شماره ی ردیفِ ویرایش شده تو گراید هست بعد Edit میکنی و مقادیر رو با فرمت دلخواه ثبت میکنی. (قبلا از این روش استفاده کردم و کاملا هم راضی بودم اما الان نمونه ندارم)

من بجای استفاده از DataGrid خودم یه گراید شبیه سازی کردم که کنترل همه چیزش دست خودمه. ولی چون بصورت کمپوننت درش نیاوردم ممکنه بدرد شما نخوره. (باید برات جالب باشه)
دانلود کن رمزش رو PM میکنم. برای دوستان ایرانویجی هم اگه کسی خواست رمزش رو PM می کنم چون نمی خوام هرکی ثبت نام کرد فوری بیاد دانلودش کنه.

نقل قول: نميخواهم به بانك چيزي اضافه يا كم كنم
سخت نگیر... اگه منطقا چیزی باید اضافه بشه خوب اضافه کن دیگه...
نه واقعا اجازه تغيير در بانك و يا ساختار بانك رو ندارم به همين خاطر ميخواهم تو مقدارهاي موجود در گريد تغيير بدم
مخصوصا اون قسمت تاريخ
من سه تا گراید رو امتحان کردم.
DataGrid حتما باید به یک Table متصل باشه
FlexGrid و HFlexGrid هم نمیشه تو خونه هاشون با کیبورد تایپ کرد (اطلاعات وارد کرد)

اینایی که گفتم طبق اطلاعات من بود؛ شاید هم یکی از سه تای بالا بدردتون بخوره یا شاید شیء چهارمی هم موجود باشه که من ندونم.

پیشنهاد می کنم برای نمایش اطلاعات به صورت جدول، از همون روشی که توی برنامه نمونه گذاشتم استفاده کن. تعداد رکوردها هم هیچ تأثیری توی سرعت برنامه نداره.

فقط یه مقدار کد برنامه و یه مقدار ظاهر فرم باید متناسب با فیلدهای شما تغییر کنه که اگه تصمیم گرفتی از روش من استفاده کنی و لیست فیلدها رو در اختیارم بذاری حاضرم خودم این تغییرات رو برات انجام بدم. کار ساده ای هست. همونطور که میدونی تو برنامه نمونه سه تا فرم بود. درست کردن فرم اول زحمت داشت ولی برای دو تا فرم دیگه از اولی کپی گرفتم و یکم تغییرات دادم.

تصمیم با شماست. از بقیه اعضا هم تقاضا می کنم پست شماره 6 رو که سؤال بطور کامل مطرح شده بخونند شاید راه بهتری پیشنهاد کنند.
البته با vsflex8.ocx كه از گريدهاي خود بيسيك نيست ميشه اين كار رو كرد ولي با اون نميخواهم كار كنم يعني ميشه بدون اتصال به بانك مقادير داخلش گذاشت گريد بسيار كاملي هم هست ولي ميخواستم با گريد هاي خود vb باشه
اینی که میگی RightToLeft داره؟
اگه کارت رو راه میندازه پس چرا میگی نمیخوای؟ (دانلود کردم یه نگا بش بندازم)
آخرش تصمیم نگرفتی چیکار میخوای بکنی؟
کسی غیر از من هم که اینجا نمیاد یه جوابی بده!!!
امیدوارم هرچه زودتر به نتیجه برسی...
چیز خوبی بود چون هم RightToLeft داشت هم قابل ویرایش بود (یعنی میشد داخلش تایپ کرد)
ای کاش زودتر با این کنترل آشنا میشدم. یه تشکر هم به شما بدهکار شدم.
دیگه چی میخوای؟ از همین استفاده کن.
صفحه‌ها: 1 2