PDA

View Full Version : لطفا در طراحي كارتكس انبار كمكم كنيد



aghl2004
یک شنبه 20 فروردین 1391, 07:36 صبح
سلام
در ديتابيس ضميمه همانطور كه مشاهده ميكنيد سه جدول داريم كه اطلاعات كالا، خريد و فروش را ثبت ميكنند حال ميخواهيم بتوانيم از موجودي كالاهاي مختلف صرف نظر از قيمت و يا ساپلاير گزارشي بتوانيم بگيريم شامل اين عناوين: تاريخ-- مقدار ورود ---- مقدار خروج ----- مانده
مقدار ورودها را از جدول خريد بياورم و مقدار خروجها را از جدول فروش
اگر كمكم كنيد لطف بزرگي كرده ايد

dadsara
یک شنبه 20 فروردین 1391, 09:21 صبح
سلام
با این کوئری می توانید موجودی را محاسبه کنید

SELECT tblproducts.productID, tblproducts.NameOfProducts, Sum(tblkharid.QuantityOfKharid) AS SumOfQuantityOfKharid, Sum(tblforoosh.QuantityOfForoosh) AS SumOfQuantityOfForoosh
FROM (tblproducts INNER JOIN tblkharid ON tblproducts.productID = tblkharid.productID) INNER JOIN tblforoosh ON tblproducts.productID = tblforoosh.productID
GROUP BY tblproducts.productID, tblproducts.NameOfProducts;

aghl2004
یک شنبه 20 فروردین 1391, 10:42 صبح
ممنون از پاسخگوييتان
اين كوئري فقط موجودي را ميدهد و كارتكس انبار شامل كليه ورودها و خروجها نميدهد

rashidianc
یک شنبه 20 فروردین 1391, 12:34 عصر
نمونه اصلاح شد . ببینید درست متوجه منظورتون شدم یا نه؟

aghl2004
یک شنبه 20 فروردین 1391, 12:51 عصر
سلام
دقيقا به مشكل من برخوردين اگه كوئري را اجرا كنيد ميبينيد كه سطرهاي كوئري به صورت تكراري و تركيبي از ورود و خروج ثبت شده اند كه اين مد نظر نيست

Abbas Amiri
یک شنبه 20 فروردین 1391, 23:10 عصر
hاحتمالا نمونه زیر جواب می دهد

aghl2004
دوشنبه 21 فروردین 1391, 06:40 صبح
سلام
واقعا عالي بود فقط نحوه درست كردن را اگه ميشه توضيح بدهيد لطفا

aghl2004
دوشنبه 21 فروردین 1391, 09:17 صبح
سلام
در ضمن چطور ميشه بر اساس يك محصول خاص كه از يك كامبو باكس انتخاب ميكنيم فيلتر بشه؟

Abbas Amiri
دوشنبه 21 فروردین 1391, 18:10 عصر
از کوئری یونیون استفاده کردم کمی تحقیق کنید متوجه می شوید. وبرای فیلتر از طریق کمبو به روش زیر عمل کنید


Private Sub cmdReportMandeh_Click()
DoCmd.OpenReport "rptMandeh", , , "productID=" & cboProductID
End Sub

aghl2004
سه شنبه 22 فروردین 1391, 07:25 صبح
سلام
حيفم آمد با اينكه دكمه تشكر را زدم كتبا تشكر نكنم.
يك سوال ديگه هم داشتم:
ميخوام گزارش براي يك محدوده خاصي از تاريخ باشد كه انجام دادم و همينطور در اول گزارش مانده از قبل بيايد كه اين را هم با گزارش ديگري كه آن گزارش را به گزارش اصلي الحاق كردم انجام دادم.حال:
1- اگه روش بهتري مد نظرتون هست اعلام نماييد تا بر علممون افزوده شود
2- چكار كنيم كه اين مانده در رانينگ سام شركت نمايد.
باز هم ممنون و دعاتون ميكنم.

Abbas Amiri
سه شنبه 22 فروردین 1391, 22:25 عصر
دوتکست باکس جهت محدوده تاریخ ایجاد کنید و کد زیر جایگزین قبلی کنید


Private Sub cmdReportMandeh_Click()
Dim strFilter As String
If IsNull(txtFromDate) Then
txtFromDate = Nz(DMin("[Date]", "[tblforoosh Query]"))
End If
If IsNull(txtToDate) Then
txtToDate = Nz(DMax("[Date]", "[tblforoosh Query]"))
End If
strFilter = "[Date]>=#" & txtFromDate & "# AND [Date]<=#" & txtToDate & "#"
strFilter = strFilter & " AND productID=" & cboProductID
DoCmd.OpenReport "rptMandeh", acViewPreview, , strFilter
End Sub

aghl2004
چهارشنبه 23 فروردین 1391, 07:05 صبح
بسيار ممنون
ميخواهيم در ابتداي گزارش خط اول "مانده از قبل" را بياره مثلا اگر از سوم ارديبهشت تا بيستم ارديبهشت اقدام به چاپ كارتكس كرديم خط اول گزارش مانده تا تاريخ سوم ارديبهشت را در بياره و باقي گزارش طبق كد بالايي كه نوشته ايد

Abbas Amiri
چهارشنبه 23 فروردین 1391, 21:05 عصر
اضافه کردن رکورد به ابتدای هر صفه احتمالا باید پیچیدگی های داشته باشد . ساده ترین را استفاده از یک تکست باکس در بالای لیبل مانده بنام txtMandeh واستفاده از کدهای زیر درگزارش میباشد


Dim Mandeh As Long

Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer)
Mandeh = Mandeh + [BuyQty]-[SaleQty]
End Sub

Private Sub PageHeaderSection_Format(Cancel As Integer, FormatCount As Integer)
If Me.Page = 1 Then
txtMandeh.visible = False
Else
txtMandeh.visible = True
txtMandeh = Mandeh
End If