PDA

View Full Version : گزارشگیری از نتایج گزارشات(خیلی فوری)



selmira
یک شنبه 04 دی 1390, 10:29 صبح
سلام دوستان خسته نباشید

من 4 تا گزارش فرعی دارم که در آخر هرگزارش جمع هر ستون رو در یک text box دخیره کردم حالا نمیدونم چطوری اون textbox ها رو ببرم توی جدول a1 ذخیره کنم که بتونم از اون جدول هم گزارش اصلی رو بگیرم
فایل رو ببینید

Abbas Amiri
یک شنبه 04 دی 1390, 19:35 عصر
اگر مجمع مقادیر را می خواهید به جدول بفرستید نیازی به گزارش نیست از قالب زیر استفاده کنید (نام فیلدها وجدول را مطابق نیاز خود انتخاب کنید)


Dim strSQL As String
strSQL = "INSERT INTO TableName (fieldName1, fieldName2, fieldName3, fieldName4) & VALUES(" & _
DSum("scale_costs", "View1") & ", " & DSum("scale_costs", "View2") & ", " & _
DSum("scale_costs", "View3") & ", " & DSum("scale_costs", "View4") & ") " & _
"WHERE [date]=#" & var & "#"
CurrentDb.Execute strSQL

selmira
یک شنبه 04 دی 1390, 20:50 عصر
خیلی ممنون آقای امیری دستتون درد نکنه

selmira
دوشنبه 05 دی 1390, 20:16 عصر
آقای امیری من کدهایی که گفتین رو اضافه کردم ولی خطا میده
بالای کدهای شما کدهایی رو هم نوشتم که غیرفعالشون کردم اون دستورات مقادیر 2000و20و20 رو پر میکنن ولی مقادیر اصلی رو نه

Private Sub rpt11_Click()
If Not IsNull(cboReportName) And Not IsNull(Text80) Then
DoCmd.OpenReport cboReportName, acViewPreview, , "[date]=#" & Text80 & "#"
End If
' Dim SQL As String
' Dim gimat As String

' SQL = "SELECT TBL_A2.radif, TBL_A2.subject, T_M2.scale_costs, T_M2.percent_total_costs_prevention, T_M2.percent_total_costs_quality, T_M1.date, TBL_A2.rank FROM T_M1 INNER JOIN (TBL_A2 INNER JOIN T_M2 ON TBL_A2.radif=T_M2.a2) ON T_M1.rank=T_M2.m1 WHERE (((TBL_A2.rank)=1));"
' gimat= DoCmd.RunSQL SQL

' INSERT INTO T_M1(mablag,percent1,percent2) VALUES(T_M2.scale_costs,T_M2.percent_total_costs_p revention,T_M2.percent_total_costs_quality)
'docmd.RunSQL(INSERT INTO T_M1(mablag,percent1,percent2 VALUES(2000,20,20);)

Dim strSQL As String
strSQL = "INSERT INTO T_M1(mablag,percent1,percent2) & VALUES(" & DSum("scale_costs", "View1") & ", " & DSum("scale_costs", "View2") & ", " & DSum("scale_costs", "View3") & ", " & DSum("scale_costs", "View4") & ") " & "WHERE [date]=#" & var & "#"
CurrentDb.Execute strSQL

End Sub

Abbas Amiri
دوشنبه 05 دی 1390, 20:34 عصر
در عبارت زیر بجای var باید نام فیلد یا متغیر قرار گیرد و کاراکترگ '&' آبی رنگ حذف شود ضمن اینکه تعداد آیتم های داخل پرانتزهای سبز باید برابر باشد که در مثال زیر 4 و 3 است
strSQL = "INSERT INTO T_M1(mablag,percent1,percent2) & VALUES(" & DSum("scale_costs", "View1") & ", " & DSum("scale_costs", "View2") & ", " & DSum("scale_costs", "View3") & ", " & DSum("scale_costs", "View4") & ") " & "WHERE [date]=#" & var & "#"

selmira
دوشنبه 05 دی 1390, 21:02 عصر
خب این تغییرات رو اعمال کردم ولی چندتا سوال و خطا پیش اومد

1.آخر دستورات sql باید ; گذاشت که در هر صورتی که گذاشته میشه خطا میده

2.فرمودید باید تعداد آیتم ها برابر باشن خب وقتی من 3 تا فیلد دارم که در 4 رکورد باید قرار بگیرن البته به ازای هر رکورد 3 تا فیلد(mablag,percent1,percent2) باید عوض بشه این چطور امکانپذیره؟

Abbas Amiri
دوشنبه 05 دی 1390, 22:38 عصر
این دستور یک رکورد جدید ایجاد می کند و مقادیر متناظر در پرانتز VALUES به جای فیلدها می نشیند.شما بگویید که چه مقداری را در کجا می خواهید درج کنید

selmira
سه شنبه 06 دی 1390, 19:55 عصر
متوجه اینم که نمیتونم منظورمو برسونم برا همون یه فایل word گذاشتم که با شکل توضیح دادم ایشالا اینبار میتونم منظورمو برسونم

selmira
چهارشنبه 07 دی 1390, 21:08 عصر
به غیر از آقای امیری هیچ یک از دوستان نمیتونن کمک کنن؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟

Abbas Amiri
پنج شنبه 08 دی 1390, 00:40 صبح
در فایل زیر پس از فشردن کامند "گزارش کلی" مقادیر مورد نظر به جدول tmpTable بار می شوند . شما می توانید یک گزارش براساس این جدول ساخته و پس از دستورات بار گذاری جدول آن را باز کنید

selmira
پنج شنبه 08 دی 1390, 07:28 صبح
خیلی ممنون آقای امیری ولی شما فقط مقادیر اول هر گزارش رو انتقال دادین نه جمعشون رو, یعنی در هربار رکورد فعلی + رکورد بعدی نشده که جمعشون در بیاد

Abbas Amiri
پنج شنبه 08 دی 1390, 20:21 عصر
درسته . فایل زیر را ببینید

selmira
جمعه 09 دی 1390, 12:18 عصر
خیلی ممنون آقای امیری واقعا دستتون درد نکنه خیلی کمکم کردین براتون آرزوی موفقیت دایم رو دارم

selmira
دوشنبه 12 دی 1390, 20:20 عصر
سلام آقای امیری شرمنده که باز مزاحم میشم

شما توی برنامه که یه جدول دیگه درست کردین(tmptable) و مجموع هر گزارش رو به این جدول انتقال دادین خب باید بین این جدول و جدول t_m1 ارتباطی باشد(تا بدونه گزارش کلی مربوط به کدوم تاریخ رو بیاره) برای اینکه این ارتباط مشکل ساز رو انجام ندیم میشه اون 3 ستون رو که جمعها در اون قرار دارن رو به t_m1 انتقال بدیم با دستور update? و یا هر دستور دیگه؟
یکی هم چطور میشه به اکسس زبان فارسی هم اضافه کرد؟(شما چون نام ستونها رو فارسی نوشتین ولی سیستم ما فارسی رو در اکسس ساپرت نمیکنه حروف نامشخص میاره نشون میده )

Abbas Amiri
سه شنبه 13 دی 1390, 00:02 صبح
کد زیر را جایگزین کنید تا تاریخ درج شده در Text80 را اعمال کند. در ضمن برای نمایش فارسی مقادیر مورد نظر بایستی تنظیمات Regional Language در کنترل پنل را تغییر دهید . در همین تالار سرچ کنیدپیدا می کنید.



Set rs2 = CurrentDb.OpenRecordset("SELECT Sum(scale_costs), Sum(percent_total_costs_prevention), Sum(percent_total_costs_quality) FROM View" & k & " WHERE [date]=#" & Text80 & "#")