PDA

View Full Version : اشكال در خروجي SELECT



lm48390
چهارشنبه 18 اسفند 1389, 10:02 صبح
با سلام و خسته نباشيد
من در برنامه مي خواهم يك SELECT بر روي يك جدول بنويسم. دستور را به شكل زير نوشته ام . ولي نمي دانم در ستون BES1 مقدار ستاره نمايش داده مي شود:

SELECT code,name,bed,bes,IIF(BED-BES > 0 , BED-BES , 0) as bED1,IIF(BES-BED >0, BES-BED,0 ) as bes2 FROM aa



خروجي فوق بايد اگر بدهكاراست ستون BED1 اگر بستانكار است ستون BES1 مقداردهي كند .ستون BED1 درست است ولي اشكال من در خروجي ستون BES1 است. ( DATATYPE هر دو فيلد BED,BES هست NUMERIC(16))
با تشكر از راهنمايي شما

rahro
پنج شنبه 19 اسفند 1389, 06:55 صبح
به نظر نمياد مشکلي داشته باشه ولي يک موضوع رو رعايت نکردي دستور رو به اين صورت تغير ده و نتيجه رو نگاه کن:

SELECT aa.code,aa.name,aa.bed,aa.bes,IIF(aa.BED-aa.BES > 0 , aa.BED-aa.BES , 0) as bED1,IIF(aa.BES-aa.BED >0,aa.BES-aa.BED,0 ) as bes2 FROM aa

Esikhoob
جمعه 20 اسفند 1389, 10:57 صبح
با سلام
البته بگویم که این اشکالی که گفتی همیشه پیش نمی آید ، فقط وقتی پیش میآید که اولین رکورد خروجی select ، در مورد فیلد IIF دار که قرار است ایجاد شود، برابر 0 شود .
در این صورت ظاهرا VFP ، تعداد ارقام را محدود میکند .
برای حل مشکل به جای یک صفر چند تا صفر بگزار. (شاید به نظرت خنده دار بیاید ولی کار میکند)
مثلا:
SELECT code,name,bed,bes,IIF(BED-BES > 0 , BED-BES , 000000.0) as bED1,IIF(BES-BED >0, BES-BED,000000.0 ) as bes2 FROM aa

rahro
شنبه 21 اسفند 1389, 06:57 صبح
آره اين موضوع تائيده ؛ و به نکته ظريفي هم اشاره داشت . من خودم قبلا کلي درگيرش بودم البته من عدد صفر رو در تعداد عرض مورد نظرم ضرب ميکنم :

IIF(BES-BED >0, BES-BED,0*999999)