PDA

View Full Version : سوال: خطا در گزارش‌گيري با قرار دادن شرط در CrossTab Query



arman2000
دوشنبه 31 فروردین 1394, 13:31 عصر
با سلام
من از كد زير در كوئري براي آمارگيري سالانه استفاده كردم:


TRANSFORM IIf(Count(city) Is Null,'0',Count(city)) AS Expr1
SELECT tbl1388.city, count(city)
FROM tbl1388 RIGHT JOIN Tmah ON Mid(tbl1388.date,6,2)=Tmah.mahNum
GROUP BY tbl1388.city
PIVOT Tmah.mahName;

نياز دارم كه در اون يه شرط قرار بدم:


WHERE (sale) Is Not Null

وقتي اين كد رو استفاده مي كنم، در گزارش‌گيري پيغام زير رو مي گيرم:

130468

همين كد رو در Filter گزارش قرار دادم ولي باز هم خطا داد.
در واقع مي خوام ماههايي كه اين مقدار رو شامل نمي شند، در گزارش، به صورت ستون صفر نمايش بده

Abbas Amiri
دوشنبه 31 فروردین 1394, 19:00 عصر
سلام
به تاپیکهای زیر مراجعه کنید
گزارش گیری توسط Crosstab (http://barnamenevis.org/showthread.php?399827-%DA%AF%D8%B2%D8%A7%D8%B1%D8%B4-%DA%AF%DB%8C%D8%B1%DB%8C-%D8%AA%D9%88%D8%B3%D8%B7-Crosstab)ایجاد یک گزارش Dynamic با استفاده از کوئری CrossTab (http://barnamenevis.org/showthread.php?439176-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%DB%8C%DA%A9-%DA%AF%D8%B2%D8%A7%D8%B1%D8%B4-Dynamic-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%DA%A9%D9%88%D8%A6%D8%B1%DB%8C-CrossTab)

arman2000
دوشنبه 31 فروردین 1394, 22:42 عصر
با سلام
هر دو رو مطالعه کردم و هر دو ضمیمه رو نگاه کردم ولی اون چیزی که دنبالش هستم رو پیدا نکردم یا اون چیزی که مورد نظر شما بود متوجه نشدم

Abbas Amiri
سه شنبه 01 اردیبهشت 1394, 00:56 صبح
با سلام
هر دو رو مطالعه کردم و هر دو ضمیمه رو نگاه کردم ولی اون چیزی که دنبالش هستم رو پیدا نکردم یا اون چیزی که مورد نظر شما بود متوجه نشدم

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

arman2000
شنبه 05 اردیبهشت 1394, 10:36 صبح
سلام
بزرگوار گزارشي كه نتيجه داد به صورت زير هست كه در واقع جمع سالانه رو براي هر ماه در نظر گرفته:

130607
درصورتي كه بايد مثل شكل زير مي شد (كد چطور بايد اصلاح بشه؟) البته جدول رير رو در Word نوشتم:چشمک:
130606

Abbas Amiri
شنبه 05 اردیبهشت 1394, 23:39 عصر
سلام
شما هیچ ارتباطی بین جداول ماه و سال در کوئری ایجاد نکرده بودید که البته امکان پذیر هم نبود . در فایل اصلاحی زیر راه حل آمده است:

arman2000
یک شنبه 06 اردیبهشت 1394, 11:01 صبح
سلام
گزارش، خطاي زير رو نشون مي ده:

130634

Abbas Amiri
یک شنبه 06 اردیبهشت 1394, 22:49 عصر
سلام
خطا به دلیل تغییر فیلدهای کوئری است .با report wizard گزارش جدید درست کنید .

میثم درویشی
جمعه 11 اردیبهشت 1394, 17:03 عصر
سلام ، ابتدا تشکر می کنیم از زحمات اساتید این انجمن و میخواستم اگه بشه راهنمایی ام کنید . نمونه همچین مشکلی رو منم دارم و از اونجایی که مبتدی هستم ، با خواندن این تاپیک و موارد مشابه ، چیزی دستگیرم نشد .
خطایی که با اون مواجه ام اینه :
130793
مشکل هم از قراردادن فیلتر در کوئری هستش که پایه کوئری crosstab است .
نمونه فایل رو براتون میزارم

Abbas Amiri
یک شنبه 13 اردیبهشت 1394, 19:22 عصر
سلام ، ابتدا تشکر می کنیم از زحمات اساتید این انجمن و میخواستم اگه بشه راهنمایی ام کنید . نمونه همچین مشکلی رو منم دارم و از اونجایی که مبتدی هستم ، با خواندن این تاپیک و موارد مشابه ، چیزی دستگیرم نشد .
خطایی که با اون مواجه ام اینه :
130793
مشکل هم از قراردادن فیلتر در کوئری هستش که پایه کوئری crosstab است .
نمونه فایل رو براتون میزارم

سلام
برای مشکلتان باید یک تاپیک جدید ایجاد می کردید.
با این حال برای حل مشکلتان از روش زیر استفاده کنید:
در یک ماژول کدهای زیر را کپی کنید:
Option Compare Database

Function GetCboValue() As Integer
If IsOpen("Search") Then
GetCboValue = Nz(Forms!Search!Combo8)
End If
End Function

Public Function IsOpen(ByVal strObjName As String, Optional objType As AcObjectType = acForm) As Boolean
Const conobjStateClosed = 0
Const conDisignView = 0
IsOpen = False
If SysCmd(acSysCmdGetObjectState, objType, strObjName) <> 0 Then
If Forms(strformName).CurrentView <> 0 Then
IsOpen = True
End If
End If
End Function
و در قسمت شرط فیلد sale_mali کوئری soratjalase_and_radif عبارت GetCboValue() را بنویسید