PDA

View Full Version : سوال: چگونگی ثبت تغییرات اطلاعات چک باکس در دیتابیس اسکیوال؟؟؟ یا چک باکس های مجزا یا ستونی ؟؟؟



sima_ahmadi
دوشنبه 24 بهمن 1390, 23:48 عصر
سلام به همه
من ی فرم (تحت ویندوز)دارم با حدود ده تا چک باکس...ی تسهیلاتی هست مثل
بن ،بلیط سینما،بن کتاب
حالا هر کس تو بانک باید برای هر ماهش مشخص بشه اینا رو گرفته یا نه؟حالا میخوام با تیک خوردن هر کدوم بره تو بانک و ثبت شه تغییرات..
قطعه کدشو میدونم اما میخوام ی جورایی برای چک باکس ها حلقه درست کنم که همشون چک بشن...باید آرایه تعریف کنم ؟اگه آره چه جوری ؟بلد نیستم
اگه ایده بهتری دارید هم که چه بهتر

من گفتم متغیر بولین باشه اگه تیک خورد ترو بشه تو بانک ذخیره شه
به نظرتون میشه این تسهیلات بشن ستونای گرید ویو از نوع چک باکس و من توی ی دکمه ثبت برای همه چک باکس ها ،د قطعه کدمو فراخوانی کنم؟؟؟
چون عاقلانه نیست که توی رویداد CheckBox1_CheckedChanged هر چک باکس قطعه کد رو بنویسم...آخه طولانی میشه !!
راه دیگه ای به نظرتون میرسه؟
از طرفی
فکر میکنم
فکر میکنم از روش آرایه نمیشه چون با تغییر هر چک باکس فیلد متفاوتی باید دستکاری بشه...
به نظرم اینجوری که تسهیلات من ستون های گرید ویو باشن و تیک بخورن شکیل تره ...
اما نمیدونم شیوه کد نویسیش چه جوریه ؟
میخوام شماره پرسنلی از جدول کارمند باشه ...میشه اینجوری ؟؟؟؟
باید توی دکمه ثبت یا کلیک سلول چه کدی بنویسم که تسهیلات واگذاری ثبت شه؟؟؟
82628

فرید نجفلو
سه شنبه 25 بهمن 1390, 00:10 صبح
چون عاقلانه نیست که توی رویداد CheckBox1_CheckedChanged هر چک باکس قطعه کد رو بنویسم...آخه طولانی میشه !!

اگه Tag چک باکس رو با نام فیلدهاتون یکی کنید می تونید ازش استفاده کنید:(باید CheckedChanged تمام چک باکس ها با CheckBox1_CheckedChanged هندل بشن)


If Typeof Sender Is Chekbox Andalso sender.tag<>"" then
'Update Database -- Filed Name IS > cstr(sender.tag)
end if

sima_ahmadi
سه شنبه 25 بهمن 1390, 01:29 صبح
راستش چون با تیک خوردن هر کدوم فیلدهای مجزا از بانک دستکاری میشه نمیشه ی تد یکتا برای همه نوشت
توی عکسی که گذاشتم...میخوام تیک اونایی که میخوام بزنم وبعد با دکمه ثبت ائنارو به بانک منتقل کنم...اما نمیدونم چطور برای خانه های گریدویو بگم اگه تیک خورده بود برو true کن اگه نخورده بود false کن!!!

sima_ahmadi
سه شنبه 25 بهمن 1390, 02:05 صبح
مثه این عکس



http://1.eup.comze.com/photos/4ed066df378e.jpg

فرید نجفلو
سه شنبه 25 بهمن 1390, 11:44 صبح
معادل اون کد C شارپ که پ.خ دادین اینه:
Private Sub DataGridView1_CellValueChanged(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged
If e.ColumnIndex = 0 Then
Dim DataGridViewCheckBoxCell = CType(Me.DataGridView1.Item(e.ColumnIndex, e.RowIndex), DataGridViewCheckBoxCell)
If CBool(DataGridViewCheckBoxCell.Value) = True Then
'Do Here
End If
End If
End Sub

ولی فکر کنم منظور شما اصلاح اطلاعات به صورت خود کاره. درسته؟
این کدی هم که گفتین کار خاصی انجام نمیده و فقط واسه ستون اول کا می کنه و چک باکس عکس شما در ستون سومه(ایندکس 2)

sima_ahmadi
سه شنبه 25 بهمن 1390, 12:24 عصر
معادل اون کد C شارپ که پ.خ دادین اینه:
Private Sub DataGridView1_CellValueChanged(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged
If e.ColumnIndex = 0 Then
Dim DataGridViewCheckBoxCell = CType(Me.DataGridView1.Item(e.ColumnIndex, e.RowIndex), DataGridViewCheckBoxCell)
If CBool(DataGridViewCheckBoxCell.Value) = True Then
'Do Here
End If
End If
End Sub

ولی فکر کنم منظور شما اصلاح اطلاعات به صورت خود کاره. درسته؟
این کدی هم که گفتین کار خاصی انجام نمیده و فقط واسه ستون اول کا می کنه و چک باکس عکس شما در ستون سومه(ایندکس 2)

خیلی خیلی متشکر از لطف شما

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

فرید نجفلو
سه شنبه 25 بهمن 1390, 13:04 عصر
من کاملا متوجه نشدم
شما می خواهید به محض اینکه چک باکس تغییر کرد در بانک اطلاعاتی هم ثبت بشه یا باید دکمه رو فشار بده؟
و اینکه خودش تغییرات رو انجام بده یا شما تابع خاصی واسه خودتون دارید؟
و شما مرحله پایانی تون این صفحه است یا اینکه این قسمتی از یک عملیاته که باید کل عملیات رو انجام بده و اطلاعات این بخش به همراه کل اطلاعات به یک باره ثبت بشه؟!

sima_ahmadi
سه شنبه 25 بهمن 1390, 13:17 عصر
من کاملا متوجه نشدم
شما می خواهید به محض اینکه چک باکس تغییر کرد در بانک اطلاعاتی هم ثبت بشه یا باید دکمه رو فشار بده؟
و اینکه خودش تغییرات رو انجام بده یا شما تابع خاصی واسه خودتون دارید؟
و شما مرحله پایانی تون این صفحه است یا اینکه این قسمتی از یک عملیاته که باید کل عملیات رو انجام بده و اطلاعات این بخش به همراه کل اطلاعات به یک باره ثبت بشه؟!

من ی جدول کارمند دارم ی جدول تسهیلات ی جدول تخصیص تسهیلات
این فرم بالا دیتاسورسش جدول تسهیلاته ،خودم ی ستون چک باکسی به گرید اضافه کردم که هر کدوم از تسهیلات که به کارمند تعلق گرفته علامت بخوره
شماره پرسنلیشم که از تکست باکس گرفتیم
حالا توی ی دکمه ثبت تغییرات اعمال بشه ...یعنی برای این شماره پرسنلی ای تسهیلات که تیک خوردن در جدول تخصیص تسهیلات ثبت بشن
سناریوش درسته دیگه؟!؟!؟

فرید نجفلو
سه شنبه 25 بهمن 1390, 13:26 عصر
تقریبا درسته ولی
شما قبل از اینکه به کاربر اجازه تغییرات بدین باید وضعیت فعلی رو در دیتا گرید لود کنید یعنی اون تسهیلاتی که الان بهش تعلق گرفتن تیک داشته باشن(در حالت ویرایش نه اضافه کردن کارمند)
حالا شما اصل مشکلتون کجاست کد تغییرات دیتا بیس میخواین یا تعیین اینکه کدوم تسهیلات علامت دارن یا نه(درواق هم علامت دار و هم بدون علامت ها هر دو مهم هستن چون باید هر دو در دیتابیس ذخیره بشن)

sima_ahmadi
سه شنبه 25 بهمن 1390, 13:44 عصر
تقریبا درسته ولی
شما قبل از اینکه به کاربر اجازه تغییرات بدین باید وضعیت فعلی رو در دیتا گرید لود کنید یعنی اون تسهیلاتی که الان بهش تعلق گرفتن تیک داشته باشن(در حالت ویرایش نه اضافه کردن کارمند)
حالا شما اصل مشکلتون کجاست کد تغییرات دیتا بیس میخواین یا تعیین اینکه کدوم تسهیلات علامت دارن یا نه(درواق هم علامت دار و هم بدون علامت ها هر دو مهم هستن چون باید هر دو در دیتابیس ذخیره بشن)
بازم ممنون

اپراتور با برنامه کار میکنه
یعنی صرفا میخواد وارد کنه کی چه تسهیلاتی بهش تعلق گرفته و حالا بتونه گزارش بگیره ..هم از تسهیلات واگذاری به کارمند
و هم اینکه مثلا بن شیلات به کدوم کارمندا واگذار شده
مشکلم اینه که میخوام ستون چک باکسی به گرید اضافه کنم این ستون باید قابلیت داشته باشه تیک خورد و دوباره برداشته شد خودشو اصلاح کنه و این کجا باید نوشته بشه و چطور؟
ی جا خوندم چک باکس توی گرید خوب نیست بهتره DataGridViewLinkColumn استفاده بشه
نمیدونم استفاده این چطوره؟
فکر میکنم خوبه دو تا گرید تو صفحه باشه اینا باهم مرتبط باشن از این کم شه به اون اضافه شه و برعکس
و در نهایت بعد از اطمینان از تخصیصات دکمه ثبت محتوای گرید ویو دوم رو در جدول تخصیص تسهیلات ذخیره کنه

واقعا دیگه نمیدونم چه راهی بهتره ...

فرید نجفلو
سه شنبه 25 بهمن 1390, 14:15 عصر
یعنی صرفا میخواد وارد کنه کی چه تسهیلاتی بهش تعلق گرفته و حالا بتونه گزارش بگیره ..هم از تسهیلات واگذاری به کارمند
و هم اینکه مثلا بن شیلات به کدوم کارمندا واگذار شده

خارج از این بحثه!


مشکلم اینه که میخوام ستون چک باکسی به گرید اضافه کنم این ستون باید قابلیت داشته باشه تیک خورد و دوباره برداشته شد

برای این که کاربر بتونه تیک بزنه خاصیت Readonly ستون را False کنید .مقدار معدل چک ها راو هم می تونید تعیین کنید مثلا 0 برای بدون علامت و -1 برای علامت دار
باید خاصیت های AllowUserToAddRows و AllowUserToDeleteRows رو False کنید


خودشو اصلاح کنه و این کجا باید نوشته بشه و چطور؟

این رو هم بهتره با ویزارد دیتا گریدتون رو به دیتا بیس بایند کنید


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



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