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

مشكلة تعديل البيانات في نتائج الاستعلام

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

السلام عليكم أخواني:

أرجو منكم مساعدتي في هذه المشكلة التي لن تصعب عليكم إن شاء الله

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

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

على زر تعديل للتعديل في البيانات المختارة يقوم البرنامج بتعديل سجل أخر؟؟

test.rar

#2

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

اقتباس
أقوم بتحديد السجل المطلوب والضغط عليه فتظهر البيانات في text

المشكلة أصلاً في نقل البيانات إلى الـ TextBoxes. لاحظ أنك عند النقر تنقل بيانات السجل الذي كنت متوقفاً عنده سابقاً. ببساطة انقل الكود من DataGrid1_Click إلى DataGrid1_RowColChange و سيكون كله تمام.

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

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

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

#3

شكراً أخي العزيز على الرد

ولكن ظهرت مشكلة أخرى وهي عند البحث باسم معين تظهر هذه الرسالة

Run-time error ‘9’:

Subscript out of range

ويتوقف عند الكود التالي:

Text3 = DataGrid1.Columns(2)

أرجو التكرم بالتوضيح

#4

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

معنى الرسالة أن رقم العمود خارج نطاق أرقام الأعمدة في الـ DataGrid، أي أن الـ DataGrid لا تحتوي على عمود (Column) رقمه 2.

حسب الملفات المرفقة في مشاركتك الأولى فإن الـ DataGrid تحتوي فعلاً على Column رقمه 2 و هو عمود address (ترقيم الأعمدة طبعاً يبدأ بالصفر) و قد اشتغل البرنامج عندي. ربما قد غيرت في عدد الأعمدة التي تعرضها الـ DataGrid أو تم ربطها بجدول أو استعلام فيه عدد أقل من الحقول.

و السلام.

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

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

#5

ألف شكر على المساعدة لكن لدي سؤال أخر

كود التعديل هو كالتالي:

If Text1.Text = "" Then

MsgBox "حدد البيانات المراد التعديل فيها أولاً", vbCritical + vbMsgBoxRight + vbMsgBoxRtlReading, "تعديل"

Else

Dim rs As New ADODB.Recordset

Dim sql As String

sql = "select * from [tab1] where [name] like '" & Text1.Text & "'"

rs.Open sql, db, adOpenDynamic, adLockOptimistic

'____________________________________________________________________________

_______

rs.Fields(0) = Text1.Text

rs.Fields(1) = Text2.Text

rs.Fields(2) = Text4.Text

'____________________________________________________________________________

_______

rs.Update

rs.Fields.Refresh

rs.Close

Set rs = Nothing

أريد تغيير الاستعلام بحيث يكون كالتالي:

sql = "select * from [tab1] where [id] like '" & Text1.Text & "'"

rs.Open sql, db, adOpenDynamic, adLockOptimistic

والحقل [id] هو ترقيم تلقائي (عن طريق قاعدة البيانات نفسها وليس بالكود)

ولكن تظهر لي رسالة خطأ. هل للترقيم التلقائي كود خاص؟

#6

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

لا ليس للترقيم التلقائي كود خاص، لكن الخطأ في جملة SQL نفسها، فحقل الترقيم التلقائي هو حقل عددي (Number) و أنت تعاملينه على أنه نص (Text) و ذلك بوجود علامات التنصيص (أو الاقتباس) الفردية و العامل LIKE، لأن كلاً من علامات التنصيص و العامل LIKE تستعمل مع الحقول النصية و ليس الحقول الرقمية. ببساطة أزيلي علامات التنصيص و استعملي العوامل الحسابية مثل = أو < أو > ، هكذا:

SQL = "select * from [tab1] where [id] = " & Text1.Text

طبعاً جملة SQL السابقة ستعطيك سجلاً واحداً إذا كان الرقم موجوداً، أما إذا كنت تريدين عرض مجموعة سجلات تتشابه في الرقم فإنه يمكن استعمال دوال VB داخل جملة SQL (إذا كنا نعمل مع قاعدة بيانات Access) لتحويل الرقم إلى نص:

SQL = "select * from [tab1] where CStr(id) LIKE '" & Text1.Text & "%'"

مع أنني جربت جملة SQL دون الدالة CStr و لم يحدث خطأ!!

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

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

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

#7

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

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

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

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

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

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