PDA

View Full Version : تیک خوردن رکورد در DataGrid در صورت ثبت در جدول دیگر



teymoorei
یک شنبه 15 آبان 1401, 15:24 عصر
سلام

من یه جدول دارم مثلا Table1 با فیلد های (ID,Name) که با یه دستور Select توی DataGrid رکورد های اون رو نمایش میدم .

حالا میخوام اگه اون رکورد توی Table2 هم ثبت شده بود توی DataGrid یه تیک بخوره .

ممنون میشم راهنمایی بفرمایید .

ROSTAM2
سه شنبه 17 آبان 1401, 06:12 صبح
سلام.
اگر طبق Id بخوای جستجو کنید: باید یک تابع کوئری ایجاد بشه که طبق ID تعداد رکوردهای با اون id رو بر گردونه: اگر مقدار برگشتی بیشتر از صفر باشه True و اگر صفر باشه False:

SELECT COUNT(*) FROM dbo.Table2
WHERE Id= ?;


154176 (https://learn.microsoft.com/en-us/sql/t-sql/functions/count-transact-sql?view=sql-server-ver16)

teymoorei
سه شنبه 17 آبان 1401, 17:15 عصر
سلام

ببخشید فکر میکنم منظور منو متوجه نشدید

من میخوام اگر اون table1 ، id ، توی table2 هم ذخیره شده بود زمانی که table1 رو توی datagrid نمایش دادم جلوی رکوردی که توی هر دو تا table بود تیک بزنه همین .

مثلا :
یه مشتری یه کالایی آورده که توی table1 (table1 کالاهای ورودی به انبار) ذخیره شده و حالا او کالا برای مشتری فروخته شده و رفته توی table2 (جدول کالاهای فروخته شده) .
حالا توی datagrid کالاهای هر مشتری از table 1 (table1 کالاهای ورودی به انبار) نمایش داده میشه ، میخوام درصورتی که اون کالا فروخته شده بود توی لیست کالا های مشتری (که از table1 گرفته شده) توی datagrid یه سلول باشه که تیک بخوره که اون کالا جزو کالا های فروخته شده است و دیگه توی انبار نیست .

teymoorei
جمعه 20 آبان 1401, 15:03 عصر
دوستان کسی نیست کمک کنه ؟

336699
جمعه 20 آبان 1401, 19:32 عصر
سلام

از اونجایی که ساختار و ارتباط جدول های شما مشخص نیست.

هرگونه راهنمایی می تواند منجر به ایجاد یک مشکل جدید بشود.

شما اگر برنامه انبارداری میسازید، یک نگاه به برنامه های آماده و دیتابیس آنها و ساختارشون بندازید

تا چرخ را دوباره اختراع نکنید.

teymoorei
جمعه 20 آبان 1401, 23:57 عصر
سلام

از اونجایی که ساختار و ارتباط جدول های شما مشخص نیست.

هرگونه راهنمایی می تواند منجر به ایجاد یک مشکل جدید بشود.

شما اگر برنامه انبارداری میسازید، یک نگاه به برنامه های آماده و دیتابیس آنها و ساختارشون بندازید

تا چرخ را دوباره اختراع نکنید.

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


من یه جدول دارم مثلا Table1 با فیلد های (ID,Name) که با یه دستور Select توی DataGrid رکورد های اون رو نمایش میدم .

حالا میخوام اگه اون رکورد توی Table2 هم ثبت شده بود توی DataGrid یه تیک بخوره .

ROSTAM2
شنبه 21 آبان 1401, 07:34 صبح
کوئری که شما لازم دارید توی پست 2# (https://barnamenevis.org/showthread.php?571873-%D8%AA%DB%8C%DA%A9-%D8%AE%D9%88%D8%B1%D8%AF%D9%86-%D8%B1%DA%A9%D9%88%D8%B1%D8%AF-%D8%AF%D8%B1-DataGrid-%D8%AF%D8%B1-%D8%B5%D9%88%D8%B1%D8%AA-%D8%AB%D8%A8%D8%AA-%D8%AF%D8%B1-%D8%AC%D8%AF%D9%88%D9%84-%D8%AF%DB%8C%DA%AF%D8%B1&p=2454086&viewfull=1#post2454086)هست. برای Id یکپارامتر میسازید که بتونید بصورت AddWithValue مقداری اون رو تعیین کنید که در جدول اول وجود داره با استفاده از یک حلقه برا پیمایش ردیف های جدول با این شرط که Id ردیف جدول اول در جدول دوم باشه مقدار >=1 می شه و اگر نباشه 0 که می تونید به Boolean تبدیلش کنید و با این شرط می تونید تیک ردیف در دیتاگرید رو فعال یا غیر فعال کنید. :متفکر:

336699
شنبه 21 آبان 1401, 18:36 عصر
این کاری که شما میخواهید بکنید، به مرور زمان که تعداد ردیفهای جدول زیاد بشه، سرعت کار میاد پایین.

شما اینکارو بکن

در جدول یک، یک ستون جدید از نوع int اضافه کن و مقدار پیش فرض را صفر قرار بده.

سپس زمانی که یک ردیف جدید در جدول شماره دو اضافه کردی، در جدول شماره یک همون ایدی رو مقدارش رو به یک تغییر بده.

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

البته باز هم تکرار میکنم این روشها اصولی نیست و باید از نمونه های آماده الگو برداری کنید تا در آینده دچار مشکلات جدید نشوید.

ROSTAM2
یک شنبه 22 آبان 1401, 08:18 صبح
این کاری که شما میخواهید بکنید، به مرور زمان که تعداد ردیفهای جدول زیاد بشه، سرعت کار میاد پایین.

شما اینکارو بکن

در جدول یک، یک ستون جدید از نوع int اضافه کن و مقدار پیش فرض را صفر قرار بده.

سپس زمانی که یک ردیف جدید در جدول شماره دو اضافه کردی، در جدول شماره یک همون ایدی رو مقدارش رو به یک تغییر بده.

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

البته باز هم تکرار میکنم این روشها اصولی نیست و باید از نمونه های آماده الگو برداری کنید تا در آینده دچار مشکلات جدید نشوید.

سلام.

تذکر شما درست و بجا بود.

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

ROSTAM2
دوشنبه 23 آبان 1401, 10:08 صبح
سلام

ببخشید فکر میکنم منظور منو متوجه نشدید

من میخوام اگر اون table1 ، id ، توی table2 هم ذخیره شده بود زمانی که table1 رو توی datagrid نمایش دادم جلوی رکوردی که توی هر دو تا table بود تیک بزنه همین .

مثلا :
یه مشتری یه کالایی آورده که توی table1 (table1 کالاهای ورودی به انبار) ذخیره شده و حالا او کالا برای مشتری فروخته شده و رفته توی table2 (جدول کالاهای فروخته شده) .
حالا توی datagrid کالاهای هر مشتری از table 1 (table1 کالاهای ورودی به انبار) نمایش داده میشه ، میخوام درصورتی که اون کالا فروخته شده بود توی لیست کالا های مشتری (که از table1 گرفته شده) توی datagrid یه سلول باشه که تیک بخوره که اون کالا جزو کالا های فروخته شده است و دیگه توی انبار نیست .

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

154195

زمانی که کالایی به فروش می رسه آی.دی کالا-آی.دی مشتری-تعداد فروش-تاریخ فروش در جدول فروش رفته ثبت می شه و با هر بار فروش یک ردیف به همین صورت به جدول اضافه می شه. برای دونستن اینکه در جدول فروش رفته موجود هست استفاده از Count پیشنهاد من بود اما آقای 336699 یک فیلد اضافی برای جدول اول جهت ثبت فروش یا عدم فروش کالا پیشنهاد دادند. در صورتی که نخواهیم از سال مالی و حسابرسی از اطلاعات جدول استفاده کنیم بله این مورد و هر روش دیگه ای کاربرد دارد.