السلام عليكم ورحمة الله وبراكته وصحا رمضانكم
لديا استعلام sql للحصول على تاريخ الاول من كل شهر أثناء سنة
من خلال جدول الكمية Quantité والدي يتكون من الحقل N_intrQua مفتاح أساسي للجدول
و الحقل رقم الشاحنة N_Camion و حقل الكمية Quant و حقل التاريخ Dateq
أرغب القيام باستعلام لمعرفة الشاحنات التي استهلكت كمية من الوقود خلال الاول من كل شهر
أثناء السنة أي التاريخ محصور بين 01/01/2011 إلى غاي 31/12/2011
وكدلك خلال شهر معين
ملاحظة بالنسبة لشهر لا أرغب حصر الشهر بين تاريخين أول الشهر وأخره وأنما من خلال تحديد رقم الشهر فقظ
هده محاولتي لكن لا أحصل على نتائج ويطهر ميساج يخبرني باختلاف في الأنواع
المحاولة
كود :
Query1.active.=True
Query1.close;
Query1.clear;
Query1.Sql.Add('Select *');
Query1.Sql.Add('Where (Dateq Between :D1 and :D2)');
Query1.Sql.Add(' (Dateq Like :D3)');
Query1.Params.Paramby.('D1').asDate:=DateTimePiker1.Date;
Query1.Params.Paramby.('D2').asDate:=DateTimePiker.Date2;
Query1.Params.Paramby.('D3').asDate:=('01--------');
Query1.Active:=true;
وبارك الله فيكم ورعاكم وتقبل صلاتكم وقيامكم.
السلام عليكم ورحمة الله
عذرا عن تأخر ردي .
لقد استخدمت الكود الذي أرفقته لكن يعطيني نفس النتيجة.
رسالة مفادها أختلاف في المتغيرات.
لذلك أرفقت مثال يمكنك التعديل عليه ومعرفة مكان الخطأ
ملاحظة الاستعلام في المثال يعمل دون أخطاءعندما يكون محصور بين
بداية التاريخ ونهاية التاريخ لكن عند مسح الشرطتين // عن التعليمتين.
كود :
//Query1.SQL.Add('and DateQ like :D3');
//Query1.Params.ParamByName('D3').AsString:='-1--------';
تظهر رسالة الخطأ
ملاحظة أود الحصول عن تواريخ الاول من كل شهر من خلال المدة المحصور بين
بداية التاريخ ونهاية التاريخ.
المثال المرفق.
[
attachment=1854]
أخي الوظيفة Like لا تشتغل مع الأعمدة ذات الخاصية Date جرب بالخاصية String
أرفق لك إ ستعلام مجرب ويتماشى مع تطلعك حاول فقط إدراجه في Query
كود :
Select TO_CHAR (COLONNE1,'DD') T From
BROADCAST.STATISTICS
WHERE
COLONNE1 BETWEEN
TO_DATE('12/05/2011','dd/mm/yyyy')
AND TO_DATE('08/09/2011','dd/mm/yyyy') AND
TO_CHAR (COLONNE1,'DD')='01'
عي حالة استخدام آكسيس أو مايكروسفت اس كيو ال سيرفر
كود :
Select * from Quantity
where Day(Dateq)=1
الكود السابق يقوم باسترجاع السجلات التي تاريخها يساوي اليوم الاول للشهر لكل شهر بدون تحدي اي فترة
اما في حالة استخدامك لانظمة قواد بيانات اخرى فيجب عليك البحث عن الدالة المناسبة وفي حالة عدم وجود دالة تؤدي نفس الغرض يتوجب حلها بالحيلة اي استخدام الطرق البدائية مثل تفكيك التاريخ الى قطع واستخراج اليوم منه
louay كتب :كود :
Select TO_CHAR (COLONNE1,'DD') T From
BROADCAST.STATISTICS
WHERE
COLONNE1 BETWEEN
TO_DATE('12/05/2011','dd/mm/yyyy')
AND TO_DATE('08/09/2011','dd/mm/yyyy') AND
TO_CHAR (COLONNE1,'DD')='01'
هذا الكود خاص بما أراده الأخ الحصول عليه وهو اليوم الأول من كل شهر بما أنه الخاصية LIKE لا تشتغل مع النوع DATE إستعملت TO_CHAR وهي في أوراكل تقوم بتحويل الرقم أو اليوم إلى نص و الخاصية DD أخذ رقم من شهر (من 1 إلى 31)
Select TO_CHAR (COLONNE1,'DD') تحديد رقم من شهر بحيث COLONNE1 من نوع يوم
T يوضع الناتج في حقل إسمه T
TO_DATE('12/05/2011','dd/mm/yyyy')
AND TO_DATE('08/09/2011','dd/mm/yyyy') الخاصية TO_DATE تقوم بتحويل النص إلى يوم
TO_CHAR (COLONNE1,'DD')='01' هنا أخذ من الحقل COLONNE1 يوم من الشهر يساوي 01
لمزيد حول TO_CHAR وTO_DATE إليك الروابط التالية:
TO_CHARو
TO_DATE
شكرا أخي لؤى على التوضيح ولكن هل يشتغل هذا الكود في بيئة delphi7 أم في أوراكل فقط
إعذرني فأنا لم أستطيع إستعمال هذا الكود في sql الموجودة في delphi7
بسط لي الفكرة إذا كان يمكن إستعمال هذا الكود مع delphi7
وألف شكرا لك ولكل المبدعين مثلك
salem كتب :هل يشتغل هذا الكود في بيئة delphi7 أم في أوراكل فقط
نعم يشتغل حاول تعلم كيفية ربط دلفي بأوراكل ثم إدراج إستعلامات أوراكل من بيئة دلفي
هذا ما طلبت لكن لم أجربه عندي مشكلة إتصال

:
كود :
with adoquery1 do
begin
Close;
SQL.Clear;
SQL.Add('Select TO_CHAR (COLONNE1,'DD')');
SQL.Add(' BROADCAST.STATISTICS');
SQL.Add('where COLONNE1 BETWEEN ');
SQL.Add(TO_DATE('d1','dd/mm/yyyy') AND TO_DATE('d2','dd/mm/yyyy') AND TO_CHAR(COLONNE1,'DD')='25'');
Parameters.ParamByName('d1').DataType:=ftDate;
Parameters.ParamByName('d1').Value:=DateTimePicker1.Date;
Parameters.ParamByName('d2').DataType:=ftDate;
Parameters.ParamByName('d2').Value:=DateTimePicker2.Date;
open;
اذا مازلت هنا وتريد الحل وعلى فرض ان الحقل Dateq من نوع تاريخ
كود :
SELECT *
FROM Quantite
WHERE (Dateq between :D1 and :D2) and Day(Dateq)=1
الاستعلام السابق يعيد لك كل السجلات لليوم الاول من كل شهر خلال الفترةبين تاريخين تحددهما انت