الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[تنبيه - عنوان غير مناسب : ]إلي خبراء فيجوال بيسك

بدأه roshi_xp في 25 مايو 2008 · 6 رد · 875 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

أنشأت استعلام لجلب جميع الحقول من جدول invoices وايضا لجمع قيمة حقل p_total وكانت جملة الإستعلام كالتالي

Dim sql As String

sql = "SELECT inv_no, inv_date, p_no, p_name, p_q, p_price, p_total, emp_name, emp_job, sum(p_total) AS mount FROM [invoices] where inv_no"

sql = sql & "=" & frmreport.Text1.Text & " "

sql = sql & "AND p_no =" & frmreport.Text2.Text & ""

' sql = sql & "GROUP BY invoices.inv_no"""

If rs.State = adStateOpen Then rs.Close

rs.Open sql, conn

Set DataReport1.DataSource = rs

فيعطيني خطأ يقول أن بناء جملة الإستعلام غير صحيح

ولا أعرف الخطأ حقيقة

تم تعديل هذه المشاركة بواسطة roshi_xp في 25 مايو 2008 في 20:12

#2

السلام عليكم...

إذا تم استخدام إحدى دوال التجميع (aggregate functions) مثل الدالة Sum أو Max أو غيرها في جملة SELECT فإن كافة الحقول التي يتم ذكرها يجب أن تكون:

* إما بارامتر لإحدى دوال التجميع (أي بين قوسي إحدى الدوال كما هو الحال مع الحقل p_total في مثالك).

* أو مذكورة في عبارة GROUP BY.

إذا سنحت لي فرصة أخرى سأبين السبب مع التوضيح بالرسم!!!!

و عليه فإن جملة SQL ينبغي أن تكون كالتالي:

Dim SQL As String
SQL = "SELECT inv_no, inv_date, p_no, p_name, p_q, p_price, p_total, emp_name, emp_job, sum(p_total) AS mount FROM invoices WHERE (inv_no = "
SQL = SQL & frmreport.Text1.Text & ") AND (p_no = " & frmreport.Text2.Text
SQL = SQL & ") GROUP BY inv_no, inv_date, p_no, p_name, p_q, p_price, p_total, emp_name, emp_job"

If rs.State = adStateOpen Then rs.Close
rs.Open sql, conn

Set DataReport1.DataSource = rs

هذا مع اعتبار أن الحقلين inv_no و p_no هما من النوع العددي، لأنه إذا كانا من النوع النص (Text) فإنه يجب حصر قيمتيهما بين علامات اقتباس فردية (single quotation marks).

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#3

اخي najy

الف شكر علي سرعة ردك واهتمامك

كلامك صحيح 100% وانا مقتنع به تماما ولكن عندما جربته ظهر التقرير وكانت القيمة الإجمالية غير صحيحة .. ولا اعرف السبب

واليك أخي المثال .. إن أمكن التعديل فيه فأكون شاكرا جدا .. فانا امامي يوم واحد فقط لتقديم هذا التقرير

والف شكر مرة اخري

Test2.rar

#4

السلام عليكم...

السبب هو أنه عند استعمال عبارة GROUP BY للتجميع على أكثر من حقل واحد و تكون تلك الحقول محتوية على بيانات مختلفة فإنه سيكون لدينا عدة مجاميع حسب عدد السجلات الناتجة. و في مثالك فإن حقل التجميع amount إنما هو تكرار للحقل الأصلي p_total (ستلاحظ أنك لو استعملت rs.MoveNext قبل إعطاء قيمة للـ label15 فإن إجمالي الفاتورة سيتغير!!!).

الحل يكون كالتالي:

أولا: احذف الدالة Sum من جملة SELECT و بالتالي ستتخلص من عبارة GROUP BY و كافة الحقول المذكورة بعدها.

ثانياً: استعمل إحدى طريقتين للحصول على إجمالي الفاتورة (و كلاهما موجودة في المرفقات):

1. استعمل المكون RptFunction بإضافته إلى القسم ReportFooter و اضبط الخاصية FunctionType على rptFuncSun و اضبط الخاصية DataField على الحقل p_total.

2. أو استعمل مجموعة سجلات (Recordset) أخرى خاصة بالمجموع و ضع قيمة الحقل amount منها في label15.

Test3.rar

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#5

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

حتى يسهل البحث على من يريد الاجابة بعدك

وايضا قرائة قواعد المشاركة

موقع البرنامج

مبارك لشعب تونس photo-thumb-42837.png

#6

العنوان غير مناسب

الرجاء اختيار عنوان مناسب أكثر في مواضيعك القادمة، وهذا بمثابة إشعار للأهمية.

وفي حال التكرار سيتعرض موضوعك للإغلاق والحذف!!!

قواعد المشاركة

/index.php?showtopic=29343

سبحان الله وبحمده ... سبحان الله العظيم

#7

السلام عليكم

إخواني المبرمج أحمد , حريف برمجة .. أعتقد أن عنوان موضوعي كان بالفعل دال عليه بنسبة 100% .. حيث أنه كان هناك خطأ في جملة الإستعلام في الموضوع الأصلي ولكن أ/ najy بكرمه ورده شجعني أن أشرح له الموضوع بالكامل وان ارفق له المشروع للتعديل فيه , عامة ألف شكر علي التنبيه.

أما بالنسبة ل أ/ najy

انا مش عارف أشكرك إزاي .. فأنت بالفعل رائع .. والف شكر جداجدا علي مجهودك وتعبك .. أنقذتني من مشكلة كبيرة

لك مني كل التحية والتقدير

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…