PDA

View Full Version : انتخاب داده بین x و y که ستون Number زوج یا فرد باشد!



sajaaaaad
سه شنبه 02 تیر 1394, 15:05 عصر
با درود فراوان...
من یکسری شماره توی بانک اطلاعاتی دارم که از یک میلیون شروع میشه.!
1000001
1000002
1000003
...
الی آخر...
حالا من میخوام این اعداد رو توی گزارشم دو به دو نمایش بدم.! مثلا
10000001 و 1000002 کنار هم قرار بگیره توی یک صفحه.! (منظورم از صفحه یک لیبل بارکد 10 سانت در 2.5 سانته)
چکار باید انجام بدم.؟
فکری که به ذهن خودم رسید اینه که! کاربر میگه از عدد مثلا 1000024 تا 1000078 چاپ کن.! کاری که باید انجام بدم اینکه بین این بازه اعداد فرد رو یک بار انتخاب کنم! اعداد زوج رو جدا.! بعد اینارو به گزارش نسبت بدم.! حالا سوال Query ریش چی میشه.؟ چطور بگم بین بازه x و y تمام اعدادی که ستون Numberesh فرده انتخاب کن.؟ یا زوجه انتخاب کن.؟
.
اگر پیشنهاد دیگه ای هم دارین لطفاً راهنمایی کنید. با تشکرات فراوان. (سی شارپ، اسکیوال و استیمول کار میکنم)

SabaSabouhi
سه شنبه 02 تیر 1394, 16:04 عصر
با درود فراوان...
من یکسری شماره توی بانک اطلاعاتی دارم که از یک میلیون شروع میشه.!
1000001
1000002
1000003
...
الی آخر...
حالا من میخوام این اعداد رو توی گزارشم دو به دو نمایش بدم.! مثلا
10000001 و 1000002 کنار هم قرار بگیره توی یک صفحه.! (منظورم از صفحه یک لیبل بارکد 10 سانت در 2.5 سانته)
چکار باید انجام بدم.؟
فکری که به ذهن خودم رسید اینه که! کاربر میگه از عدد مثلا 1000024 تا 1000078 چاپ کن.! کاری که باید انجام بدم اینکه بین این بازه اعداد فرد رو یک بار انتخاب کنم! اعداد زوج رو جدا.! بعد اینارو به گزارش نسبت بدم.! حالا سوال Query ریش چی میشه.؟ چطور بگم بین بازه x و y تمام اعدادی که ستون Numberesh فرده انتخاب کن.؟ یا زوجه انتخاب کن.؟
.
اگر پیشنهاد دیگه ای هم دارین لطفاً راهنمایی کنید. با تشکرات فراوان. (سی شارپ، اسکیوال و استیمول کار میکنم)

سلام
تو صورت مساله یه مشکل می‌بینم. و اون اینه که اگه این شماره‌ها پیاپی نبودن و یکی جا افتاده باشه چه خواهد شد؟

و مساله دیگه‌ای که توجه من رو جلب کرد این هست که چرخ رو دوباره اختراع نکنیم.
من از ابزار گزارش‌گیری DevExpress استفاده می‌کنم و اون امکان تولید گزارش دو ستونی رو داره، به احتمال زیاد
Stimul Report که ابزار گزارش‌گیری تخصصی هست حتماً باید این امکان رو داشته باشه.
این رو بررسی کن و اگه امکانش پیش‌بینی شده، ازش استفاده کن و خودت رو تو دردسر فرد و زوج ننداز.

صبا صبوحی

sajaaaaad
چهارشنبه 03 تیر 1394, 07:38 صبح
با تشکر
عددی از چرخه جا نمیوفته! به هیچ وج، عدد رو خودم دارم تولید میکنم و همیشه یک واحد یک واحد میره جلو.! مثلا اگر آخرین عدد بوده یک میلیونو 50، کاربر فقط میتونه بگه 70 تا چاپ کن و خودش اتوماتیک از ادامه عدد چاپ میکنه به تعداد هفتادتا..!
.
مرسی از راهنماییتون حتما برسی میکنم.!
ولی یک سوال دیگه.! آیا میشه کاری کرد که زوج و فرد ها توی یک selectبیان.؟ یعنی یک جدول به من برگردونه که یک ستونش فردباشه یک ستونش زووج.؟

SabaSabouhi
چهارشنبه 03 تیر 1394, 08:59 صبح
با تشکر
عددی از چرخه جا نمیوفته! به هیچ وج، عدد رو خودم دارم تولید میکنم و همیشه یک واحد یک واحد میره جلو.! مثلا اگر آخرین عدد بوده یک میلیونو 50، کاربر فقط میتونه بگه 70 تا چاپ کن و خودش اتوماتیک از ادامه عدد چاپ میکنه به تعداد هفتادتا..!
.
مرسی از راهنماییتون حتما برسی میکنم.!
ولی یک سوال دیگه.! آیا میشه کاری کرد که زوج و فرد ها توی یک selectبیان.؟ یعنی یک جدول به من برگردونه که یک ستونش فردباشه یک ستونش زووج.؟

سلام
من روش مناسبی سراغ ندارم. شاید اگه RowNumber اضافه کنی، بعد یه Select از حاصل این Query بگیری و اونجا زوج و فرد رو جدا کنی چیزی که می‌خوای بشه
یا یه چیزی تو مایه‌های این Query

SELECT *
FROM MyTable t1
JOIN MyTable t2 on t2.Code = t1.Code + 1
AND ( t1.Code % 2 ) = 0


البته این چیزی که من نوشتم، فقط از رکورد زوج شروع می‌کنه یعنی اگه اولین آیتم 1000001 باشه، اون رو نمی‌خونه.
اگه رو خط آخر بجای صفر یک بگذاری، از رکورد فرد شروع می‌کنه و اگه اولین آیتم 1000000 باشه اون رو ندیده می‌گیره.

صبا صبوحی

cherchil_hra
چهارشنبه 03 تیر 1394, 09:27 صبح
می توانید از کد زیر استفاده کنید :
DECLARE @MinNum INT,@MaxNum INT
SET @MinNum=1000000
SET @MaxNum=1000999

;WITH
t1 AS (
SELECT ROW_NUMBER()OVER(ORDER BY mynum) r, mynum
FROM MyTable
WHERE mynum%2 = 0 AND mynum BETWEEN @MinNum AND @MaxNum
)

, t2 AS (
SELECT ROW_NUMBER()OVER(ORDER BY mynum) r, mynum
FROM MyTable
WHERE mynum%2 != 0 AND mynum BETWEEN @MinNum AND @MaxNum
)

SELECT t1.mynum AS mynum1 ,t2.mynum AS mynum2
FROM t1
INNER JOIN t2
ON t1.r=t2.r

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