PDA

View Full Version : حرفه ای: اجرای چند کوئری همزمان



masoode
دوشنبه 25 مهر 1401, 15:54 عصر
سلام
من برای تهیه گزارشم باید از چندین کوئری استفاده کنم. مثلا سه بار باید SELECT کنم از جداول مختلف با فیلدهای مختلف
در ضمن من با دلفی 10.2 از FDQuery و فست ریپورت استفاده میکنم
آیا این امکان وجود دارد که هر سه کوئری را یک جا بزنم و جواب را در سه جدول (یا هر چیزی شبیه جدول) دریافت کنم؟

isaac23
سه شنبه 26 مهر 1401, 07:52 صبح
شما باید با استفاده از ویو با جوین کردن جداول گزارشت رو بدست بیاری

اینکه بخای از سه جدول باید ارتباط بین جداول رو تنظیم کنی و با استفاده جوین زدن اونو بدست بیاری
می تونید ویو درست کنید و ازش استفاده کنید . یا غیره ...

masoode
سه شنبه 26 مهر 1401, 09:13 صبح
شما باید با استفاده از ویو با جوین کردن جداول گزارشت رو بدست بیاری

اینکه بخای از سه جدول باید ارتباط بین جداول رو تنظیم کنی و با استفاده جوین زدن اونو بدست بیاری
می تونید ویو درست کنید و ازش استفاده کنید . یا غیره ...

کوئری های من کاملا مستقل هستند شبیه زیر:
SELECT *
FROM [vwLantekFactor]
where ProjectId=4
--------------------------------------
--رسید حسابداری برش
SELECT FA,SUM([TOTAL]) [TOTAL], SUM([Quantity]) [Quantity],SUM([Normal cutting length]*[Quantity]) [Normal cutting length],
SUM([Rectangular weight]*[Quantity])[Rectangular weight]
FROM vwLantekFactor
GROUP BY ProjectId,FA
HAVING ProjectId=4
--رسید حسابداری متریال
SELECT Material +' '+ FORMAT([Thickness],'0.#')+ ' میلیمتر' AS FA,CAST(Length as varchar)+'*'+CAST(Width as varchar) as Dim,Quantity,Weight,[Unit Price],[Unit Price]*Quantity as Price
FROM tblLantekFactorMaterial
WHERE ProjectId=4
--رسید حسابداری برش لوله و پروفیل و خم
SELECT ServiceName,Material,Dimention,Quantity-Defect Quantity,DrawingCode,UnitPrice,UnitPrice*Quantity as Price FROM tblServiceFactor T1
INNER JOIN tblServiceTypes T2 ON T2.Id=T1.ServiceTypeId
WHERE ProjectId=4
ORDER BY ServiceTypeId,Material,T1.Id
--رسید حسابداری جوش و مونتاژ
SELECT Material,Dimention,Quantity-Defect Quantity,DrawingCode,UnitPrice,UnitPrice*Quantity as Price FROM tblServiceFactor
WHERE ServiceTypeId=3 AND ProjectId=4
ORDER BY ServiceTypeId,Material,Id

masoode
شنبه 30 مهر 1401, 15:28 عصر
من هنوز راهی برای این کار پیدا نکرده ام!

یوسف زالی
یک شنبه 01 آبان 1401, 07:02 صبح
سلام بله می شه، هر سه کوئری رو پشت سر هم در فیلد کوئری بنویسید، بعد از ران شدن می تونید در رکوردست های بعدی همون دیتاست بهش دسترسی داشته باشید.

masoode
یک شنبه 01 آبان 1401, 08:47 صبح
سلام بله می شه، هر سه کوئری رو پشت سر هم در فیلد کوئری بنویسید، بعد از ران شدن می تونید در رکوردست های بعدی همون دیتاست بهش دسترسی داشته باشید.
قبلا این کار را کرده بودم اما توی properties دنبالش میگشتم
اما با توضیح شما فهمیدم که حتما باید کد بنویسم
:تشویق: