اذهب الي المحتوي
أوفيسنا

توحيد استعلام بعدة استعلامات بمعايير


كريمو2

الردود الموصى بها

السلام عليكم اساتذتي الكرام

لديا استعلام موحد 

SELECT  dm([Numéro de compte],[Clé],[montant global],[nombre de bénificiaires],[Mois],[Année]) AS LIGNECD
FROM tbl2;
UNION ALL SELECT cd([N° compt CCP],[Cle CCP],[Montant],[Nom &Prénom &fr]) AS LIGNECD
FROM tbl1;

نتيجته

2020-12-05_13-50-17.jpg.7e8333e07e2a17668e615acaa2dfc0e2.jpg

اردت ان استبدل هذا الاستلام

UNION ALL SELECT cd([N° compt CCP],[Cle CCP],[Montant],[Nom &Prénom &fr]) AS LIGNECD
FROM tbl1;

 بمجموعة من الاستعلامات وهي

SELECT Bill.CompanyID, Company.[Nom &Prénom &fr],Company.[N° compt CCP], Company.[Cle CCP],-1 AS TheType, Sum(Bill.Bill_Value) AS TheValue, Add_Observations([Bill].[CompanyID],"Bill") AS Obsérvation, -1 AS M
FROM Company INNER JOIN Bill ON Company.CompanyID = Bill.CompanyID
GROUP BY Bill.CompanyID, Company.[Nom &Prénom &fr],Company.[N° compt CCP], Company.[Cle CCP],-1, Add_Observations([Bill].[CompanyID],"Bill"), Month([Bill_Date]), Year([Bill_Date])
HAVING (((Month([Bill_Date]))=Month(CDate([Forms]![FrmTransfer]![txtMonth]))) AND ((Year([Bill_Date]))=Year(CDate([Forms]![FrmTransfer]![txtMonth]))))

UNION  ALL

SELECT Cridi.EmployeeID, Employee.[Nom &Prénom &fr],Employee.[N° compt CCP],Employee.[Cle CCP],+1 AS TheType, Sum(Cridi.Cridi_Value) AS SumOfCridi_Value,Add_Observations([Cridi].[EmployeeID],"Cridi") AS Obsérvation,-1 AS M
FROM Employee INNER JOIN Cridi ON Employee.EmployeeID = Cridi.EmployeeID
GROUP BY Cridi.EmployeeID, Employee.[Nom &Prénom &fr],Employee.[N° compt CCP],Employee.[Cle CCP],[adress],+1, Add_Observations([Cridi].[EmployeeID],"Cridi"), Month([Cridi_Date]), Year([Cridi_Date]) 
HAVING (((Month([Cridi_Date]))=Month(CDate([Forms]![FrmTransfer]![txtMonth]))) AND ((Year([Cridi_Date]))=Year(CDate([Forms]![FrmTransfer]![txtMonth]))))

UNION ALL

SELECT Mena7.EmployeeID, Employee.[Nom &Prénom &fr],Employee.[N° compt CCP],Employee.[Cle CCP],+1 AS TheType, Sum(Mena7.Menha_Value) AS SumOfMenha_Value,Add_Observations([Mena7].[EmployeeID],"Mena7") AS Obsérvation ,-1 AS M
FROM Employee INNER JOIN Mena7 ON Employee.EmployeeID = Mena7.EmployeeID
GROUP BY Mena7.EmployeeID, Employee.[Nom &Prénom &fr], Employee.[N° compt CCP],Employee.[Cle CCP],+1, Add_Observations([Mena7].[EmployeeID],"Mena7"), Month([Menha_Date]), Year([Menha_Date]) 
HAVING (((Month([Menha_Date]))=Month(CDate([Forms]![FrmTransfer]![txtMonth]))) AND ((Year([Menha_Date]))=Year(CDate([Forms]![FrmTransfer]![txtMonth]))))

UNION ALL

SELECT Sanitaire.EmployeeID, Employee.[Nom &Prénom &fr],Employee.[N° compt CCP],Employee.[Cle CCP],+1 AS TheType, Sanitaire.NesbaValue,Add_Observations([Sanitaire].[EmployeeID],"Sanitaire") AS Obsérvation, -1 AS M
FROM Employee INNER JOIN Sanitaire ON Employee.EmployeeID = Sanitaire.EmployeeID
GROUP BY Sanitaire.EmployeeID, Employee.[Nom &Prénom &fr],Employee.[N° compt CCP],Employee.[Cle CCP],+1, Sanitaire.NesbaValue, Add_Observations([Sanitaire].[EmployeeID],"Sanitaire"), Month([Sanitaire_Date]), Year([Sanitaire_Date]) 
HAVING (((Month([Sanitaire_Date]))=Month(CDate([Forms]![FrmTransfer]![txtMonth]))) AND ((Year([Sanitaire_Date]))=Year(CDate([Forms]![FrmTransfer]![txtMonth]))))

UNION ALL

SELECT Mossada.EmployeeID, Employee.[Nom &Prénom &fr],Employee.[N° compt CCP],Employee.[Cle CCP],+1 AS TheType, Mossada.Moss_Value, Add_Observations([Mossada].[EmployeeID],"Mossada") AS Obsérvation, Moss_Ver
FROM Employee INNER JOIN Mossada ON Employee.EmployeeID = Mossada.EmployeeID
GROUP BY Mossada.EmployeeID, Employee.[Nom &Prénom &fr],Employee.[N° compt CCP],Employee.[Cle CCP],+1, Mossada.Moss_Value, Add_Observations([Mossada].[EmployeeID],"Mossada"), Mossada.Moss_Ver, Month([Moss_Date]), Year([Moss_Date])
HAVING (((Month([Moss_Date]))=Month(CDate([Forms]![FrmTransfer]![txtMonth]))) AND ((Year([Moss_Date]))=Year(CDate([Forms]![FrmTransfer]![txtMonth]))))

UNION ALL SELECT Scolaire.EmployeeID, Employee.[Nom &Prénom &fr],Employee.[N° compt CCP],Employee.[Cle CCP],+1 AS TheType, Scolaire.Scolaire_Value,Add_Observations([Scolaire].[EmployeeID],"Scolaire") AS Obsérvation,  -1 AS M
FROM Employee INNER JOIN Scolaire ON Employee.EmployeeID = Scolaire.EmployeeID
GROUP BY Scolaire.EmployeeID, Employee.[Nom &Prénom &fr],Employee.[N° compt CCP],Employee.[Cle CCP],[adress],+1, Scolaire.Scolaire_Value,Add_Observations([Scolaire].[EmployeeID],"Scolaire"), Month([Scolaire_Date]), Year([Scolaire_Date]) 
HAVING (((Month([Scolaire_Date]))=Month(CDate([Forms]![FrmTransfer]![txtMonth]))) AND ((Year([Scolaire_Date]))=Year(CDate([Forms]![FrmTransfer]![txtMonth]))));

 

مع العلم ان montant global هو مجموع Bill_Value و Cridi_Valueو ........... الى اخر استعلام Scolaire_Value

و [nombre de bénificiaires] هو عدد المستفيدين

و [Mois],[Année] هو شهر وسنة هذا المعيار (((Month([Bill_Date]))=Month(CDate([Forms]![FrmTransfer]![txtMonth]))) AND ((Year([Bill_Date]))=Year(CDate([Forms]![FrmTransfer]![txtMonth]))))

ارحوا ان يتم التوحيد وشكرا

 

 

 

تم تعديل بواسطه كريمو2
رابط هذا التعليق
شارك

للتوضيح أكثر

توحيد الصف الاول الى غاية tbl2 

SELECT  dm([Numéro de compte],[Clé],[montant global],[nombre de bénificiaires],[Mois],[Année]) AS LIGNECD
FROM tbl2;
UNION ALL SELECT cd([N° compt CCP],[Cle CCP],[Montant],[Nom &Prénom &fr]) AS LIGNECD
FROM tbl1;

مع 

استبدال
UNION ALL 
SELECT cd([N° compt CCP],[Cle CCP],[Montant],[Nom &Prénom &fr]) AS LIGNECD
FROM tbl1;
بهذا 
SELECT Employee.[Nom &Prénom &fr],Employee.[N° compt CCP],Employee.[Cle CCP],+1 AS TheType, Sum(Cridi.Cridi_Value) AS SumOfCridi_Value,Add_Observations([Cridi].[EmployeeID],"Cridi") AS Obsérvation,-1 AS M
FROM Employee INNER JOIN Cridi ON Employee.EmployeeID = Cridi.EmployeeID
GROUP BY Cridi.EmployeeID, Employee.[Nom &Prénom &fr],Employee.[N° compt CCP],Employee.[Cle CCP],[adress],+1, Add_Observations([Cridi].[EmployeeID],"Cridi"), Month([Cridi_Date]), Year([Cridi_Date]) 
HAVING (((Month([Cridi_Date]))=Month(CDate([Forms]![FrmTransfer]![txtMonth]))) AND ((Year([Cridi_Date]))=Year(CDate([Forms]![FrmTransfer]![txtMonth]))))
مع الاحتفاط ب :
[N° compt CCP]
[Cle CCP]
[Montant]=Sum(Cridi.Cridi_Value)
[Nom &Prénom &fr]
tbl1= Cridi
المعيار

 

 

رابط هذا التعليق
شارك

لقد حاولت التعديل وفلح الا انني وجدت مشكلة في 

[nombre de bénificiaires] هي عدد المستفيدين 

[montant global] المجموع الكلي لـ

[montant global] =Sum(Bill.Bill_Value) + Sum(Cridi.Cridi_Value) +Sum(Mena7.Menha_Value)+Sanitaire.NesbaValue+Mossada.Moss_Value+Scolaire.Scolaire_Value+

ارجو التعديل 

وشكرا

PARAMETERS [Forms]![FrmTransfer]![txtMonth] DateTime = Now();
SELECT  dm([Numéro de compte],[Clé],[montant global],[nombre de bénificiaires],[Mois],[Année]) AS LIGNECD
FROM tbl2;
UNION ALL SELECT cd([N° compt CCP],[Cle CCP],[TheValue],[Nom &Prénom &fr]) AS LIGNECD
FROM (SELECT Company.[N° compt CCP], Company.[Cle CCP],Company.[Nom &Prénom &fr],  -1 AS TheType, Sum(Bill.Bill_Value) AS TheValue,  -1 AS M
FROM Company INNER JOIN Bill ON Company.CompanyID = Bill.CompanyID
GROUP BY Bill.CompanyID, Company.[Nom &Prénom &fr],  Company.[N° compt CCP], Company.[Cle CCP],  -1, "Bill", Month([Bill_Date]), Year([Bill_Date])
HAVING (((Month([Bill_Date]))=Month(CDate([Forms]![FrmTransfer]![txtMonth]))) AND ((Year([Bill_Date]))=Year(CDate([Forms]![FrmTransfer]![txtMonth]))))

UNION  ALL

SELECT  Employee.[N° compt CCP],Employee.[Cle CCP],Employee.[Nom &Prénom &fr],  +1 AS TheType, Sum(Cridi.Cridi_Value) AS SumOfCridi_Value, -1 AS M
FROM Employee INNER JOIN Cridi ON Employee.EmployeeID = Cridi.EmployeeID
GROUP BY Cridi.EmployeeID, Employee.[Nom &Prénom &fr], Employee.[N° compt CCP],Employee.[Cle CCP],   +1, "Cridi", Month([Cridi_Date]), Year([Cridi_Date]) 
HAVING (((Month([Cridi_Date]))=Month(CDate([Forms]![FrmTransfer]![txtMonth]))) AND ((Year([Cridi_Date]))=Year(CDate([Forms]![FrmTransfer]![txtMonth]))))

UNION ALL

SELECT   Employee.[N° compt CCP],Employee.[Cle CCP], Employee.[Nom &Prénom &fr], +1 AS TheType, Sum(Mena7.Menha_Value) AS SumOfMenha_Value, -1 AS M
FROM Employee INNER JOIN Mena7 ON Employee.EmployeeID = Mena7.EmployeeID
GROUP BY Mena7.EmployeeID, Employee.[Nom &Prénom &fr], Employee.[N° compt CCP],Employee.[Cle CCP],  +1, "Mena7", Month([Menha_Date]), Year([Menha_Date]) 
HAVING (((Month([Menha_Date]))=Month(CDate([Forms]![FrmTransfer]![txtMonth]))) AND ((Year([Menha_Date]))=Year(CDate([Forms]![FrmTransfer]![txtMonth]))))

UNION ALL

SELECT   Employee.[N° compt CCP],Employee.[Cle CCP],Employee.[Nom &Prénom &fr],  +1 AS TheType, Sanitaire.NesbaValue, -1 AS M
FROM Employee INNER JOIN Sanitaire ON Employee.EmployeeID = Sanitaire.EmployeeID
GROUP BY Sanitaire.EmployeeID, Employee.[Nom &Prénom &fr], Employee.[N° compt CCP],Employee.[Cle CCP],   +1, Sanitaire.NesbaValue, "Sanitaire", Month([Sanitaire_Date]), Year([Sanitaire_Date]) 
HAVING (((Month([Sanitaire_Date]))=Month(CDate([Forms]![FrmTransfer]![txtMonth]))) AND ((Year([Sanitaire_Date]))=Year(CDate([Forms]![FrmTransfer]![txtMonth]))))

UNION ALL

SELECT   Employee.[N° compt CCP],Employee.[Cle CCP],Employee.[Nom &Prénom &fr],  +1 AS TheType, Mossada.Moss_Value,  -1 AS M
FROM Employee INNER JOIN Mossada ON Employee.EmployeeID = Mossada.EmployeeID
GROUP BY Mossada.EmployeeID, Employee.[Nom &Prénom &fr], Employee.[N° compt CCP],Employee.[Cle CCP],   +1, Mossada.Moss_Value, Add_Observations([Mossada].[EmployeeID],"Mossada"), Mossada.Moss_Ver, Month([Moss_Date]), Year([Moss_Date])
HAVING (((Month([Moss_Date]))=Month(CDate([Forms]![FrmTransfer]![txtMonth]))) AND ((Year([Moss_Date]))=Year(CDate([Forms]![FrmTransfer]![txtMonth]))))

UNION ALL SELECT   Employee.[N° compt CCP],Employee.[Cle CCP],Employee.[Nom &Prénom &fr], +1 AS TheType, Scolaire.Scolaire_Value,   -1 AS M
FROM Employee INNER JOIN Scolaire ON Employee.EmployeeID = Scolaire.EmployeeID
GROUP BY Scolaire.EmployeeID, Employee.[Nom &Prénom &fr], Employee.[N° compt CCP],Employee.[Cle CCP],  +1, Scolaire.Scolaire_Value,"Scolaire", Month([Scolaire_Date]), Year([Scolaire_Date]) 
HAVING (((Month([Scolaire_Date]))=Month(CDate([Forms]![FrmTransfer]![txtMonth]))) AND ((Year([Scolaire_Date]))=Year(CDate([Forms]![FrmTransfer]![txtMonth])))));

 

تم تعديل بواسطه كريمو2
رابط هذا التعليق
شارك

وعليكم السلام 🙂

 

لعمل استعلام توحيد ، هناك شرط واحد فقط ، وهو تساوي عدد الحقول الظاهرة (الغير مخفية) في كل استعلام.

 

الاستعلام الاول يرسل بيانات 5 حقول الى الوحدة النمطية dm (وهذا غير مهم بالنسبة الى استعلام التوحيد) ، ولكن المهم ان الاستعلام فيه حقل واحد فقط :

SELECT  dm([Numéro de compte],[Clé],[montant global],[nombre de bénificiaires],[Mois],[Année]) AS LIGNECD
FROM tbl2

 

image.png.3dba024f5dedf0ac902072bac5434a91.png

.

والاستعلام الثاني يرسل بيانات 4 حقول الى الوحدة النمطية cd (وهذا غير مهم بالنسبة الى استعلام التوحيد) ، ولكن المهم ان الاستعلام فيه حقل واحد فقط :

SELECT cd([N° compt CCP],[Cle CCP],[Montant],[Nom &Prénom &fr]) AS LIGNECD
FROM tbl1

 

image.png.679ab3fa6774c17c5eaf9a2c0b1bb2c8.png

.

لهذا السبب تمكنا من توحيد الاستعلامين في استعلام واحد.

 

اما الاستعلام الجديد (احد الاستعلامات الجديدة) فهو يحتوي على 6 حقول :

SELECT  Employee.[N° compt CCP],Employee.[Cle CCP],Employee.[Nom &Prénom &fr],  +1 AS TheType, Sum(Cridi.Cridi_Value) AS SumOfCridi_Value, -1 AS M
FROM Employee INNER JOIN Cridi ON Employee.EmployeeID = Cridi.EmployeeID
GROUP BY Cridi.EmployeeID, Employee.[Nom &Prénom &fr], Employee.[N° compt CCP],Employee.[Cle CCP],   +1, "Cridi", Month([Cridi_Date]), Year([Cridi_Date]) 
HAVING (((Month([Cridi_Date]))=Month(CDate([Forms]![FrmTransfer]![txtMonth]))) AND ((Year([Cridi_Date]))=Year(CDate([Forms]![FrmTransfer]![txtMonth]))))

 

image.png.2b9ff4361da2d6953ff37788ebfa0e47.png

 

فلا يمكن توحيد الاستعلام ذو الحقل الواحد (الاستعلام الاول) ، مع هذا الاستعلام ذو الاكثر من حقل واحد.

 

جعفر

 

 

  • Like 1
رابط هذا التعليق
شارك

شكرا استاذ جعفر على الاهتمام

تم الحل 

PARAMETERS StartMonth DateTime = DateSerial(Year(Now),Month(Now),1), EndMonth DateTime = DateSerial(Year(Now),Month(Now)+1,0), Mois Long = Month(Now), Annee Long = Year(Now);
SELECT dm(DLookup("[Numéro de compte]","tbl2"),DLookup("[Clé]","tbl2"),Sum(TV),Count(*),Mois,Annee) AS LIGNECD
FROM
(SELECT EmployeeID, Sum(TheValue) AS TV
FROM
(
SELECT CompanyID As EmployeeID, [BILL_Value] AS TheValue  FROM Bill  WHERE Bill_Date BETWEEN StartMonth AND EndMonth 
UNION ALL
 SELECT EmployeeID,[Cridi_Value] AS TheValue FROM Cridi  WHERE Cridi_Date BETWEEN StartMonth AND EndMonth 
UNION ALL
 SELECT EmployeeID,[Menha_Value] AS TheValue FROM Mena7  WHERE Menha_Date BETWEEN StartMonth AND EndMonth 
UNION ALL 
SELECT EmployeeID,[NesbaValue] AS TheValue FROM Sanitaire  WHERE Sanitaire_Date BETWEEN StartMonth AND EndMonth 
UNION ALL 
SELECT EmployeeID,[Moss_Value] AS TheValue FROM Mossada  WHERE Moss_Date BETWEEN StartMonth AND EndMonth 
UNION ALL
 SELECT EmployeeID,[Scolaire_Value] AS TheValue FROM Scolaire  WHERE Scolaire_Date BETWEEN StartMonth AND EndMonth 
 )  
GROUP BY EmployeeID);

UNION ALL SELECT LIGNECD FROM
(

SELECT cd([N° compt CCP],[Cle CCP],[TheValue],[Nom &Prénom &fr]) AS LIGNECD
FROM
(

SELECT EmployeeID, [N° compt CCP], [Cle CCP], [Nom &Prénom &fr], Sum(TheValueT) AS TheValue
FROM
(

SELECT Company.CompanyID AS EmployeeID, Company.[N° compt CCP], Company.[Cle CCP],Company.[Nom &Prénom &fr],  -1 AS TheType, Bill.Bill_Value AS TheValueT,  -1 AS M,Bill.Bill_Date
FROM Company INNER JOIN Bill ON Company.CompanyID = Bill.CompanyID
WHERE  Bill.Bill_Date  Between [StartMonth] And [EndMonth] 

UNION ALL


SELECT Employee.EmployeeID, Employee.[N° compt CCP], Employee.[Cle CCP], Employee.[Nom &Prénom &fr], +1 AS TheType, Cridi.Cridi_Value AS TheValueT, -1 AS M, Cridi.Cridi_Date
FROM Employee INNER JOIN Cridi ON Employee.EmployeeID = Cridi.EmployeeID
WHERE  Cridi.Cridi_Date  Between [StartMonth] And [EndMonth] 

UNION ALL


SELECT  Employee.EmployeeID,Employee.[N° compt CCP],Employee.[Cle CCP], Employee.[Nom &Prénom &fr], +1 AS TheType, Mena7.Menha_Value  AS TheValueT, -1 AS M , Mena7.Menha_Date
FROM Employee INNER JOIN Mena7 ON Employee.EmployeeID = Mena7.EmployeeID
WHERE  Mena7.Menha_Date  Between [StartMonth] And [EndMonth] 

UNION ALL


SELECT Employee.EmployeeID, Employee.[N° compt CCP],Employee.[Cle CCP], Employee.[Nom &Prénom &fr], +1 AS TheType, Sanitaire.NesbaValue  AS TheValueT, -1 AS M , Sanitaire.Sanitaire_Date
FROM Employee INNER JOIN Sanitaire ON Employee.EmployeeID = Sanitaire.EmployeeID
WHERE  Sanitaire.Sanitaire_Date  Between [StartMonth] And [EndMonth] 

UNION ALL


SELECT  Employee.EmployeeID,Employee.[N° compt CCP],Employee.[Cle CCP], Employee.[Nom &Prénom &fr], +1 AS TheType, Scolaire.Scolaire_Value  AS TheValueT, -1 AS M , Scolaire.Scolaire_Date
FROM Employee INNER JOIN Scolaire ON Employee.EmployeeID = Scolaire.EmployeeID
WHERE  Scolaire.Scolaire_Date  Between [StartMonth] And [EndMonth] 

UNION ALL


SELECT  Employee.EmployeeID,Employee.[N° compt CCP],Employee.[Cle CCP], Employee.[Nom &Prénom &fr], +1 AS TheType, Mossada.Moss_Value  AS TheValueT, -1 AS M , Mossada.Moss_Date
FROM Employee INNER JOIN Mossada ON Employee.EmployeeID = Mossada.EmployeeID
WHERE  Mossada.Moss_Date  Between [StartMonth] And [EndMonth]
)  
GROUP BY EmployeeID, [N° compt CCP], [Cle CCP], [Nom &Prénom &fr]
ORDER BY Val (EmployeeID)
))WHERE  LIGNECD <> "";

 

ولكن بقيت مشكلة ترتيب العمال حسب  EmployeeID  ولكن لقيت صعوبة كبيرة في الترتيب

فهل من فكرة ؟

رابط هذا التعليق
شارك

12 ساعات مضت, كريمو2 said:

تم الحل 

الحمدلله 🙂

ولكني لا انصح ابدا بوضع Dlookup في استعلام ، لأن Dlookup هو استعلام بحد ذاته ، فما بالك اذا وضعت 2 Dlookup ، فسيكون استعلامك بطيء اذا زادت البيانات !!

 

12 ساعات مضت, كريمو2 said:

ترتيب العمال حسب  EmployeeID

في استعلام التوحيد ، اضف Order By في الاستعلام الاخير فقط (ولا داعي ان تضعه في كل استعلام داخلي ، فتضيف وقت فرز كل استعلام ، على الاستعلام العام) 🙂

جملة ORDER BY Val (EmployeeID) التي كتبتها انت ، لم تضعها في آخر استعلام  ، وانما في احد الاستعلامات الاخيرة في الـ union الاخير :

image.png.658c5c8f207d1eeccebf1ae30de93916.png

.

بينما يجب وضعها بعد امر Where الاخير :

image.png.c0d68729c169ea2603b21604ed2a412f.png

.

هكذا :

image.png.8f2e7f8745b5117a7511ea3fe7dd3f5e.png

.

 

وملاحظ ان عندك مجموعة من GROUP BY ، وهي تجعل الاستلام بطيء ايضا ، فيجب النظر في فائدتها ايضا 🙂

 

جعفر

رابط هذا التعليق
شارك

حاولت التقيد بما اشرت ولكن لم افلح

 

انظر الترتيب في الاستعلام QryCD

والاستعلام QryDM

اما في الاستعلام UNION DM & CD بدون ترتيب

اما السطر الاخير *000000000022222222980000000040000BBBB       

 لاتبالي بها فهي تكون دائما في اخر الترتيب 

والترتيب يكون في الاستعلام UNION DM & CD 

KRIMO7 الى KRIMO157

هذا من جهة

ومن جهة اخري

في ٩‏/١٢‏/٢٠٢٠ at 09:02, jjafferr said:

ولكني لا انصح ابدا بوضع Dlookup في استعلام ، لأن Dlookup هو استعلام بحد ذاته ، فما بالك اذا وضعت 2 Dlookup ، فسيكون استعلامك بطيء اذا زادت البيانات !!

 

كيف ترى البديل

اليك المرفق استاذ

Trans CD.rar

 

 

رابط هذا التعليق
شارك

لعمل الفرز بالحقل ، EmployeeID ، انت استعملت:

val (EmployeeID)

 

والامر VAL يغير قيمة الرقم من نص الى رقم ، مثلا :

VAL("84") = 84

ولكن
VAL("F2") = 0

.

بينما قيمة الحقل عندك هكذا:

image.png.4ae6b544fb38b447834c2565ebc08ed5.png

.

فلا يمكن فرزها بطريقتك ، وانما استعمل الفرز العادي بدون الامر val ،

وبسبب ان استعلامك مهول بمعنى الكلمة ، فلم اعرف بدايته من نهايته ، والعمل عليه 🤢

 

جعفر

 

 

رابط هذا التعليق
شارك

بالنسبة للإستعلام تم تبسيطه لعدة إستعلامات مقارنة بالإستعلام الموحد QueryCD

الإستعلام QryCD  هو لجلب بيانات الموظفين  والممونين ورواتبهم في شهر ما وذلك لإستعمالهم في الدالة المعرفة CD عن طريق الإستعلام CD

الإستعلام QryDM هو لجلب رواتب الموظفين والممونين في شهر ما وذلك لإستعمالهم في الدالة المعرفة DM عن طريق الإستعلام DM

بالنسبة للإستعلام الموحد Union Dm & CD تم دمج إستعلام CD+DM للحصول على النتائج المطلوبة

النتائج تأتي سليمة لكن بقيت مشكلة الترتيب حسب رقم الموظف

بالنسبة للدالة DLookup المستعملة في كويري DM دورها جلب رقم الحساب البريدي ومفتاح الحساب البريدي للمؤسسة فقط 

ملاحظة: 

هذه الإستعلامات تم دمجها في إستعلام واحد والذي يحمل إسم QueryCD

رابط هذا التعليق
شارك

أهلا @كريمو2

في ١٣‏/١٢‏/٢٠٢٠ at 19:11, كريمو2 said:

بالنسبة للإستعلام الموحد Union Dm & CD تم دمج إستعلام CD+DM للحصول على النتائج المطلوبة

النتائج تأتي سليمة لكن بقيت مشكلة الترتيب حسب رقم الموظف

كان بإمكانك تكوين علاقات بين الجداول ضمن الاستعلام واستخدام الحقول مباشرة دون اللجوء إلى استخدام دوال التجميع! 

لدي تحفظ على هذا المقطع من الاستعلام QryCD

...FROM (SELECT Company.CompanyID AS EmployeeID...

راجع المرفق رجاءً..

Trans CD.mdb

  • Like 1
رابط هذا التعليق
شارك

شكرا لك استاذ أبو إبراهيم الغامدي

قلت لديك  تحفظ على هذا المقطع من الاستعلام QryCD

15 ساعات مضت, أبو إبراهيم الغامدي said:


...FROM (SELECT Company.CompanyID AS EmployeeID...

 

1- ماهو هذا التحفظ ؟ او كيف تراه مناسبا بطريقتك

2- من جهة التعديل على المرفق لاحظت ظهور EmployeeID في الاستعلام 

المطلوب عدم ظهوره واذا شاءت الضرورة ان يظهر في الاستعلام لا يجب ان يظهر في التقرير

 

2020-12-17_14-02-43.png.664ba85caa587b440c707cda0d903b57.png

تم تعديل بواسطه كريمو2
رابط هذا التعليق
شارك

8 دقائق مضت, كريمو2 said:

شكرا لك استاذ أبو إبراهيم الغامدي

قلت لديك  تحفظ على هذا المقطع من الاستعلام QryCD

1- ماهو هذا التحفظ ؟ او كيف تراه مناسبا بطريقتك

2- من جهة التعديل على المرفق لاحظت ظهور EmployeeID في الاستعلام 

المطلوب عدم ظهوره واذا شاءت الضرورة ان يظهر في الاستعلام لا يجب ان يظهر في التقرير

 

2020-12-17_14-02-43.png.664ba85caa587b440c707cda0d903b57.png

تعقيب بعد إذن الاستاذ أبو إبراهيم الغامدي

ظهور حقل في الاستعلام ليس بالضرورة ظهورة في التقرير هدف ظهور الحقل في الاستعلام الترتيب ليس إلا

في التقرير انت من يحدد الحقول المراد ظهورها

 

  • Like 2
رابط هذا التعليق
شارك

17 ساعات مضت, كريمو2 said:

2- من جهة التعديل على المرفق لاحظت ظهور EmployeeID في الاستعلام 

هذا الذي اشرت اليه لما قلت:

في ١٣‏/١٢‏/٢٠٢٠ at 00:11, jjafferr said:

فلا يمكن فرزها بطريقتك ، وانما استعمل الفرز العادي بدون الامر val

 

جعفر

  • Like 1
رابط هذا التعليق
شارك

8 ساعات مضت, jjafferr said:
في ١٢‏/١٢‏/٢٠٢٠ at 21:11, jjafferr said:

فلا يمكن فرزها بطريقتك ، وانما استعمل الفرز العادي بدون الامر val

 

صحيح استاذ جعفر 

ولو انك عدلت على الاستعلام لكانت الفكرة اوضح لي

عموما بارك الله فيكم جمبعا

دمتم في خدمة الصالح العام

رابط هذا التعليق
شارك

والله حاولت ، وحذفت VAL من جملة SQL ، واذا بالاستعلام يطلب مني ادخال تاريخين ، ولا يعطي اي نتيجة ،

فأخذت اول جملة SQL ، وعملت منها استعلام عادي ، وحذفت حقل فرز val(Employee_ID) ، وعملت الفرز على حقل Employee_ID مباشرة ، وكذلك طلب مني التاريخين !!

 

ولم اعرف اين اجد هذين التاريخين ، لهذا السبب استسلمت ، وكتبت :

في ١٣‏/١٢‏/٢٠٢٠ at 00:11, jjafferr said:

وبسبب ان استعلامك مهول بمعنى الكلمة ، فلم اعرف بدايته من نهايته ، والعمل عليه 🤢

 

جعفر

  • Like 1
رابط هذا التعليق
شارك

في ١٧‏/١٢‏/٢٠٢٠ at 17:43, كريمو2 said:

ماهو هذا التحفظ ؟ او كيف تراه مناسبا بطريقتك

تجميع البيانات بالطريقة الرأسية أوقعك في مشكلة إعادة تسمية رمز الشركة إلى رمز الموظف! وهذا ما صعّب فرز البيانات! لأن رمز الشركة؛ بيانات نصيه، ورمز الموظف؛ بيانات رقمية.

وكان من الأفضل تجميع البيانات بطريقة أفقية! هذا هو الأفضل، لأنه يمكنك من قراءت وتجميع البيانات بطريقة سليمة وصحيحة..

دقق في الصورة لترى  مدى تطابق البيانات المتتعلقة بمجموع المبلغ..

1426362502_Screenshot2020-12-19032411.png.f97fc8b8fd79a81140db41c4a4969df9.png

في الواقع رصف البيانات بهذه الطريقة يبدو مألوفاً بالنسبة لي!

فإن كان الغرض هو تبادل البيانات عن طريق ملفات نصية ذات بيانات ثابتة الطول كما هي توقعاتي! فهناك طرق لعمل ذلك دون الحاجة إلى التقرير!

أرجو أن تكون هذه المعلومات مفيدة لك..

Trans CD.mdb

رابط هذا التعليق
شارك

17 ساعات مضت, أبو إبراهيم الغامدي said:

تجميع البيانات بالطريقة الرأسية أوقعك في مشكلة إعادة تسمية رمز الشركة إلى رمز الموظف! وهذا ما صعّب فرز البيانات! لأن رمز الشركة؛ بيانات نصيه، ورمز الموظف؛ بيانات رقمية.

وكان من الأفضل تجميع البيانات بطريقة أفقية! هذا هو الأفضل، لأنه يمكنك من قراءت وتجميع البيانات بطريقة سليمة وصحيحة..

دقق في الصورة لترى  مدى تطابق البيانات المتتعلقة بمجموع المبلغ..

1426362502_Screenshot2020-12-19032411.png.f97fc8b8fd79a81140db41c4a4969df9.png

في الواقع رصف البيانات بهذه الطريقة يبدو مألوفاً بالنسبة لي!

فإن كان الغرض هو تبادل البيانات عن طريق ملفات نصية ذات بيانات ثابتة الطول كما هي توقعاتي! فهناك طرق لعمل ذلك دون الحاجة إلى التقرير!

أرجو أن تكون هذه المعلومات مفيدة لك..

Trans CD.mdb 584 kB · 11 downloads

لدي تحفظ استاءنا الكبير ابو إبراهيم الغامدي على تجميع البيانات بطريقة أفقية 

لنفترض أنا منحة إضافية لموظف ما أعطيت في نفس الشهر وبسجل جديد في هذه الحالة لا تصلح طريقة التجميع الأفقي لأنه سيتم حساب سجلين للموظف في الاستعلام  وهنا التجميع يتم ويكون خاطئ اي يتم تجميع كل سطر لوحده

رابط هذا التعليق
شارك

12 ساعات مضت, الجموعي said:

لدي تحفظ استاءنا الكبير ابو إبراهيم الغامدي على تجميع البيانات بطريقة أفقية 

من حقك أن تتحفظ أو تعترض متى وكيف شئت، على الرحب والسعة..

كان الحديث منصب على حالة معينة لأعمدة متنوعة في استعلام التوحيد..

ولعلك لاحظت أن القيم قد جمعت في استعلامات منفردة ضمن استعلام التوحيد!

وهذا ما جعل مراجعة البيانات وتصحيحها غاية في الصعوبة..

نعم البيانات ذات العمود الواحد يمكن تجميعها رأسياً؛ بل لا يمكن إلا ذلك!

لكن الأعمدة المتعددة لا يمكن تجميعها رأسياً! إنما هو رصها فوق بعضها باستخدام استعلام التوحيد! بعد تجميعها في استعلامات منفصلة، إما ضمناً أو خارجاً عن استعلام التوحيد.

أما يتعلق بالسجلات المتعدد فلا يلزمك سوى استخدام خاصية التجميع فقط!

رابط هذا التعليق
شارك

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information