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

خطأ فى الحصول على عدد سجلات جدول أكسس

مغلق
بدأه s_ayed في 11 أكتوبر 2006 · 13 رد · 1,568 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الأخوة الأفاضل

كل عام وأنتم بخير

الرجاء من حضراتكم تفسير هذه الضاهرة وإيجاد حل لها إن أمكن وهى كالتالى

عند عمل Recordcount للسجلات الخاصة بجدول أكسس باستخدام فيجوال بيزيك 6 مثلاً يقرأها البرنامج مثلاً 10 سجلات وهى فى الواقع مثلاَ 6 سجلات وبذلك تظهر رسالة خطأ عند عمل loop على السجلات بعد تخطى السجل السادس يعطى No Current record

ولكم جذيل الشكر :D

#2

هل يمكنك أن ترفق العملية التي تقوم بها لكي يظهر عدد السجلات ... لكي نستطيع افادتك ..

سجل ايميلك هنا

googlejb5.gif ليصلك كل ما هو مفيد في عالم البرمجة
#3

ضع الكود كما قال اخي HnHn : حتى نفيدك .

أو جرب الحصول على عدد السجلا عبر الإستعلام التالي :

Sql = "SELECT COUNT(ID) FROM table"

بالتوفيق

جرب الكود التالي قبل ما تعمل while

If rs.RecordCount > 0 Then
....
....
end if
#4

السلام عليكم

انا برضوا عايز اعرف حاجة من هذا القبيل

وهي كيفية معرفة رقم السجل نفسه

يعني انا الأن عندي حوالي 100 سجل

لما يقوم بعملية بحث بأسم معين يأتي لي باليانات هذا الأسم ومافيش اي مشاكل

عاوز بقى رقم السجل ده من ضمن ال100 سجل

Mohamed Ali Salim

0.1..0...4....7.....6......2.......7........4.........8

#5

up

Mohamed Ali Salim

0.1..0...4....7.....6......2.......7........4.........8

#6

خطرت في بالي فكرة لكن لا أظن أن الجميع سيؤيدها..

نقوم بالبحث عن السجل المطلوب بأي طريقة

ثم عندما نحصل على النتيجة أي السجل

نأخذ رقم الحقل المفتاح الذي بالترقيم التلقائي..

و ليكن 23 مثلا..

ثم عبر جملة SQL نقوم بتحديد جميع السجلات التي قبله:

data1.recordsource = "select * from mytab where id < 23"

ثم نقوم بعمل استعلام RECORDCOUNT

و يكون رقم السجل هو نتيجة الاستعلام.. (h) -_-

lxcs.png

syria-flag_small.jpg

#7

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

Dim sum as integer

Do while rs .Rcordset .Eof= Fales

Sum=sum+1

Rs.recordset. Movenext

Loop

حيث المتغير sum هو الذي يحوي عدد السجلات التي في الجدول

وآسف على القصور.....

#8

فكرتك حلوه SalehRam

الله يعطيك العافية

#9

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

أؤيد فكرة الأخ فواز الشمري فهي الأسهل لمعرفة عدد السجلات

ولكن اذا كنت مهتم بهذا الامر كثيرا فما المشكلة في اضافة حقل اخر داخل الجدول يتم فيه تسجيل رقم كل سجل

وعند البحث مثلا لو أردت معرفة رقم السجل الذي بحث عنه تقوم فقط بوضع كود كالتالي

MsgBox rs("num")

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

   rs.MoveLast
	MsgBox rs("num")

---------------

اتمنى اكون اضفت شئ مفيد

بالتوفيق

============

الى اللقاء

JusT LeT YouR MinD WorK

#10

الظاهر ان انا هاعمل كدة وخلاص

مشكور جدا يا اخواني

Mohamed Ali Salim

0.1..0...4....7.....6......2.......7........4.........8

#11

انا جتلي فكرة صغيرة بس ما نفعتش علشان حاجة صغيرة دعوني اقولها لكم

انا دلوقتي عاوز اعرف السجل اللي مكتوب في حقل الأسم الأسم ده Hend

فعملت عملية لووب

يمسك السجل الأول ويشوفوه هل بيساوي Hend ولا لأ

لو بيساوي Hend اذن السجل هايبقى رقم 1

ولو مش بيساوي Hend هايكون المتغير اللي حنا عرفناه وليكن Sum

هايبى Sum+1

وهاكذا اذا وجد Hend هايبى رقم السجل هو Sum

بس المشكلة انه مكتوب في قاعدة البيانات الإسم Hend عند البحث عنه لمعرفة رقم السجل اذا دخلت hend لم يتعرف عليها

مع اني اذا عملت بحث عادي اللي هو

Select * from TabelName where FiledName = '" & text1.text & "'

وكتبت في الــ Text1 الاسم عادي hend يجده بالفعل

وشكرا

Mohamed Ali Salim

0.1..0...4....7.....6......2.......7........4.........8

#12

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

اخي محمد الطريقة دي صعب جدا التعامل بها لأن تخيل ان عندك مثلا 1000 او 10000 سجل

لو كل مرة نجعل الـ rs يعمل Loop عليهم هيبقى البرنامج بطئ جدا

كما ان الفكرة التي ذكرتها انت يمكن عملها بالكود التالي

dim mysum as integer
mysum =0
do wile not lcase(rs("name")) = lcase(text1)
mysum = mysum + 1
loop
msgbox mysum

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

ولكن كما ذكرت انها ستكون بطيئة جدا

اما في رأيي الشخصي فان وجود حقل للترقيم هو أسرع طريقة لايجاد رقم السجل وياريت لو احد من الاعضاء عنده طريقة أفضل يضعها لنا حتى نستفيد

بالتوفيق

============

الى اللقاء

تم تعديل هذه المشاركة بواسطة MR^King في 15 أكتوبر 2006 في 19:29

JusT LeT YouR MinD WorK

#13

زي ماذكرتو يا اخوان

بحيث يكون هناك حقل مخصص بالترقيم

فمثلاً :

يكون لدينا حقل بإسم number هذا الحقل يرقم برمجيا بحيث اذا نقرت على زر رقم السجل

يقوم في هذا الأمر انه يعيد ترقيم الحقل من اول سجل الى آخر سجل ومن ثم يقارن رقم السجل من خلال هذا الحقل

وهذه الطريقة تستخدم تفاديا لمشاكل حذف السجلات

اتمنى اكون وفقت في الرد....

*ابوماجد*

#14

mob856 : ياواد يا خطير انت تحمل شعار الجامعة الخاصة بي : أكيد انك في أحلا جامعة سبأ في اليمن .

على العوم :

أود ان اعرف ما المشكلة الحاصلة لك : هل تريد الحصول على جميع السجلاات :

ذكرت لك من قبل الخاصية RecordCount لتعيد عدد السجلاات في الجدول .

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

ولكن هذا يعتمد عليك في كيفية عمل قاعدة البينات .

جرب الإستعلام التالي بدل السابقة . مع اني فرضت فيما سبق ان الحقل id هوعبارة عن pk

SELECT COUNT(*) FROM table

أما لو أردت ان تحصل على عدد السجلات الي الحقل الي انت واقف علية :

لنفرض انه لديك الحقل ID وهوا عبارة عن PK وبترقيم تلقائي .

سوف اعمل استعلام يجيب لك عدد الحقول إلا ما قبل الحقل الي انت واقف عليه الأن .

Dim SQL As String
SQL = "SELECT COUNT(*) FROM table WHERE id < " & $Rs1("id")

لدي ملاحضة مهمة جدا :

ياشباب حاولوا قدر الإمكان التخلص من اوامر اتخاذ القرار مثل while و for لأنها بتعمل لك بطئ شديد .

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

احبذ بتاتا الإكثار من حلقات التكرار في قواعد البيانات .

متفق مع MR^King في ما قال من حيث كبر البيانات . ولكن ما الحل .

الحل هوا استخدام الإستعلامات لتنفيذ مثل الأوامر هذه حتى لا يكون هناك بطئ في النضام . فهندسة قواعد البيانات قد اتاحت لها SQL العديد من المميزات . وبعصرها اصبحت سريعة جدا لذلك فالخوارزميات المتبعة في تنفيذ اوامر sql اسرع بكثير . من حلقات التكرار .

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

بالتوفيق

تم تعديل هذه المشاركة بواسطة فواز الشمري في 15 أكتوبر 2006 في 23:41

هذا الموضوع مغلق.

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