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

ما الخطأ في جملة SQL هذه ؟

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

السلام عليكم

ارغب في حذف سجل من قاعدة البيانات عند تحديد سطر في ال filxgrid

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

هذا هو الكود

Private Sub fgrid_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
'delno = fgrid.TextMatrix(fgrid.MouseRow, 0)

SQL = "SELECT FROM [invst] WHERE [id] = fgrid.TextMatrix(fgrid.MouseRow, 0)"

rs.Open SQL, MyDb, adOpenDynamic, adLockOptimistic

rs.Delete adAffectCurrent
rs.MoveFirst

End Sub
#2

مع العلم اني جربت جملة ال SQL بكذا طريقة مره بدون اقواس واخرى مع التنصيص وغيرها ..

#3

السلام عليكم

أولا ان حضرتك لم تقم بتحديد الحقول المطلوب اختيارها فحضرتك كتبت

"SELECT FROM [invst] WHERE [id] = fgrid.TextMatrix(fgrid.MouseRow, 0)"

بينما المفروض أن تكت الجملة بهذه الطريقة

"SELECT * FROM [invst] WHERE [id] = fgrid.TextMatrix(fgrid.MouseRow, 0)"

ثانيا قم بتنفيذ الجملة بهذه الطريقة

rs.Open "SELECT * FROM [invst] WHERE [id] = fgrid.TextMatrix(fgrid.MouseRow, 0)", MyDb, adOpenDynamic, adLockOptimistic

جرب كده واخبرني بالنتيجة

بالتوفيق

سلام

JusT LeT YouR MinD WorK

#4

السلام عليكم

جزاك الله كل خير اخي الكريم

صحيح ماذكرته فقد نسيت ان اكتب النجمة *

الكود الذي تفضلت بذكره لم يعمل حيث يعطي خطأ في جملة fgrid.TextMatrix(fgrid.MouseRow, 0)

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

delno = fgrid.TextMatrix(fgrid.MouseRow, 0)

If rs.State = adStateOpen Then rs.Close
rs.Open "SELECT * FROM [invst] WHERE [id] = " & delno, MyDb, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
rs.Delete adAffectCurrent
MsgBox "تم حذف السجل بنجاح"

وهو يعمل بنجاح

لدي سؤال لو تكرمت كيف يمكنني حذف السجل الأخير حيث اني ارغب في ان يكون لدى المستخدم إمكانية حذف كل السجلات بما فيها السجل الأخير ؟

#5

السلام عليكم

لدي مشكلة في الكود السابق فهو يحذف السجلات من الاسفل رغم اني تأكدت ان المتغير delno يحمل فعلا رقم السطر المحدد ؟؟

#6

السلام عليكم

بالنسبة لحذف الجل الاخير فكل المطلوب ان حضرتك تحذف السطر التالي من الكود

If Not rs.EOF Then

وبذلك يمكن الحذف

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

On Error Resume Next

حتى يتم تجاهل الخطأ الذي سيحدث عند الربط مرة اخرى

===========

بالنسبة للسؤال التاني

اولا لو كنت وضعت الكود السابق تحت زر الحذف فطبعا ده شئ غير منطقي ولن يعمل بشكل سليم والسبب هو

ان حضرتك لو واقف على السجل الرابع مثلا وعاوز تحذفه وجيت تنفذ الكود ده هيقوم يقفل الـ RS وبعدين يفتحه تاني علشان ينفذ جملة الـ Select وبكده يبقى ضاع السجل اللي انت كنت واقف عليه واتنقلت لسجل تاني وطبعا ده مش هيظهر قدامك على الفورم

والحل :

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

Dim Del As String
Del = MsgBox("هل تريد حذف السجل الحالي ؟", vbYesNo + vbMsgBoxRight, "حذف")
If Del = vbYes Then
rs.Delete
On Error Resume Next
rs.MoveNext
On Error Resume Next
con ' اسم الصب الخاص بربط السجلات بالحقول
MsgBox "تم حذف السجل"
End If

جرب واخبرني بالنتيجة

سلام

JusT LeT YouR MinD WorK

#7

مشكور اخوي ماقصرت الله يعطيك العافيه

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

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

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

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

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

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