السلام عليكم ورحمة الله وبركاته
أخواتي الأعزاء
ارجو المساعدة في كود يفتح ملف في الذاكرة
بحيث نستطيع أن نبحث عن قيمة معينة في حقل ونعدلها إلى قيمة أخرى
هذا والسلام عليكم ورحمة الله وبركاته
بارك الله فيكم
السلام عليكم ورحمة الله وبركاته
أخواتي الأعزاء
ارجو المساعدة في كود يفتح ملف في الذاكرة
بحيث نستطيع أن نبحث عن قيمة معينة في حقل ونعدلها إلى قيمة أخرى
هذا والسلام عليكم ورحمة الله وبركاته
بارك الله فيكم
السلام عليكم اخي الكريم
يفضل ارفاق ملف كمثال للفكرة حتي يتمكن الاخوة بالمنتدي من تقديم كل المساعدة
وللبدئ فى البحث قبل ارفاق ملف ممكن تبحث فى التالي :
الدالة العبقرية DlookUp
حيث تقوم بفتح جدول او استعلام وفقا لشروط معينة وترجع بقيمة حقل بسجل معين
الكود OpenRecordset
يقوم بنفس ما تقوم DlookUp ولكن الناتج ممكن يكون مجموعو سجلات كما هناك اساليب للتحرك بين هذه السجلات بالذاكرة وذلك اجراء اختبارات IF او اي اجراءات وايضا يمكنك التعديل عليها
ممكن تكتب RecordSet بمحرر الفيجوال بيسك ثم تحدد الكلمة واضغط F1 للحصول علي امثلة حول هذا الموضوع
اخوك فى الله
Microsoft Certified DataBase Administrator MCDBA
السلام عليكم ورحمة الله وبركاته
أخواتي الأعزاء شكراً على هذه النصحية الغالية التي ساعدتني كثيراً في حل المشكلة وسوف أقوم بعرض الحل كما في الكود التالي
Dim DBC As Database
Dim cs As Recordset
Dim SQL As String
Dim SQL1 As String
Dim SQL2 As String
Dim DBPH As String
Dim DBPH2 As String
DBPH = CurrentProject.FullName
DBPH2 = ""
DBPH2 = Left(DBPH, InStrRev(DBPH, "\")) & "data.mdb"
Set DBC = OpenDatabase(DBPH2)
Set cs = DBC.OpenRecordset("cs141000", DB_OPEN_TABLE)
SQL = "UPDATE cs141000 SET cs141000.per_ind=0 " & _
"WHERE (((cs141000.per_ind)is null));"
SQL1 = "UPDATE cs141000 SET cs141000.res_ind=0 " & _
"WHERE (((cs141000.res_ind)is null));"
SQL2 = "UPDATE cs141000 SET cs141000.ser_ind=0 " & _
"WHERE (((cs141000.ser_ind)is null));"
If MsgBox("åá ÊÑíÏ ÊÕáíÍ ÈíÇäÇÊ ãßÊÈ ÇáÕÍÉ", _
vbCritical + vbYesNo, _
"ÊÍÐíÑ") = vbYes Then
DoCmd.SetWarnings False
DoCmd.RunSQL SQL
DoCmd.RunSQL SQL1
DoCmd.RunSQL SQL2
End If
End Sub
هذا ولو كان أحد المبدعين عنده طريق أسهل فليتفضل بالتعقيب وشكرا لكم ولكل المنتديات صاحبة الفكر والإبداع
أخوكم أبو حسين
هوا بصراحة أنا لدي فكرة بسيطة جداً وهو إستخدام ADODB.Recordset دون الإتصال مع أي مصدر للبيانات كذاكرة مؤقتة ، وعند إغلاق البرنامج ينتهي كافة المعلومات الموجودة بالـ Rs التابعة لمكتبة ADO .
أنظر المثال التالي :
Option Explicit ''Import from references --> Microsoft ActiveX Data Object 2.X Library Dim Rs As New ADODB.Recordset Private Sub Command1_Click() Dim I As Long ''3- عرض محتويات الذاكرة. For I = 1 To Rs.RecordCount - 1 MsgBox Rs!fld1 & ": " & Rs!fld2 Rs.MoveNext Next Rs.MoveFirst End Sub Private Sub Form_Load() ''1- بدلاًمن إرتباطة بقاعدة بيانات Recordset بناء أمر الـ. Rs.Fields.Append "fld1", adBigInt Rs.Fields.Append "fld2", adVarChar, 50 Rs.Open ''2- Reordset إدراج مجموعة من السجلات في ذاكرة الـ. Rs.AddNew: Rs!fld1 = 1: Rs!fld2 = "Ahmed" Rs.AddNew: Rs!fld1 = 2: Rs!fld2 = "Usif" Rs.AddNew: Rs!fld1 = 3: Rs!fld2 = "Sara" Rs.AddNew: Rs!fld1 = 4: Rs!fld2 = "Mahmod" Rs.AddNew: Rs!fld1 = 5: Rs!fld2 = "Farag" Rs.AddNew: Rs!fld1 = 6: Rs!fld2 = "Ashraf" Rs.Update Rs.MoveFirst End Sub
لاحظ في المثال السابق إستخدمت ذاكرة الـ Rs كذاكرة مؤقتة مما تسبب في إضافة مجموعة من البيانات أثناء تحميل النافذة Form_Load !!!
كما أنه يمكنك إجراء حفظ لمحتويات الـ Rs في مسار معين كما لي :
Rs.Sava App.Path & "\Data.rs"
ويمكنك أيضاً اللجوء الي البيانات المحفوظة بالملف Data.rs أثناء فتح النافذة بدلاً من بناء السجل أثناء عملية التحميل ، أنظر المثال التالي :
قم بتغيير هذا الكود من Form_Load :
''1- بدلاًمن إرتباطة بقاعدة بيانات Recordset بناء أمر الـ. Rs.Fields.Append "fld1", adBigInt Rs.Fields.Append "fld2", adVarChar, 50 Rs.Open
الي الشكل التالي :
On Error Resume Next ''1- بدلاًمن إرتباطة بقاعدة بيانات Recordset بناء أمر الـ. If (Dir(App.Path & "\Data.rs") <> "") Then ''في حالة وجود بيانات قديمة مخزنة علي مشغل السواقة يتم فتحها. Rs.Open App.Path & "\Data.rs" ''في حالة أن هذا الملف ملف وهمي أو حدوث أي خطأ أثناء التحميل يتم. ''الذهاب الي عملية الإنشاء اليدوي. If (Err.Number <> 0) Then Err.Number = 0: GoTo OpenRs Else OpenRs: ''في حالة عدم وجود بيانات مسجلة علي مشغل السواقة يتم إنشاء السجل من جديد. Rs.Fields.Append "fld1", adBigInt Rs.Fields.Append "fld2", adVarChar, 50 Rs.Open End If
أما بالنسبة للـ Recordset التابع لمكتبة DAO فبصراحة أنا لديا معلومات أساسية عنها وليست كما بهذه الإمكانيات !!
أتمني أن يكون هذا ما تطلبة
بالتوفيق
لا تخلط ما بين شخصيتي وأسلوبي .. فشخصيتي هي
ما أنا عليه وتحت تصرفي .. وأسلـوبي يعتمد عليـك
أنت وتصرفاتك
ولحظاتي صمت... وصمـت لحظاتي كلام ... كلامه
اشد آلام ... فصمتي أنا عنوان
هذا الموضوع مغلق.