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

أريد كود اذا عدل المستخدم بنفسه فى ال txtFields

بدأه اسلام الكبابى في 26 يونيو 2013 · 14 رد · 954 مشاهدة · في قسم قواعد البيانات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أريد كود لاظهار الزرين cmdUpdate و cmdCancle اذا عدل المستخدم بنفسه فى ال txtFields

كتبت هذا الكود فوجدته يظهرهما فعلآ عند تعديل المستخدم فى ال txtFields
ولكنه :hmm: يظهرهما أيضآ عند التنقل بين السجلات (أى عند الضغط على ال Adodc1)

 
Private Sub txtFields_Change(Index As Integer)
  
cmdCancle.Visible = False
  cmdUpdate
.Visible = False
End Sub 

ولكم ألف شكر

#2

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

Dim movv As Boolean

Private Sub Adodc1_WillMove(ByVal adReason As ADODB.EventReasonEnum, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
movv = True
End Sub

Private Sub Adodc1_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.ERROR, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
movv = False
  Adodc1.Caption = "Record: " & CStr(Adodc1.Recordset.AbsolutePosition)
End Sub

Private Sub txtFields_Change(Index As Integer)
  If movv = True Then GoTo 100
  cmdCancle.Visible = False
  CMDUpdate.Visible = False
100 End Sub

كتبته ظنآ منى ان تسلسل الأحداث هوAdodc1_WillMove
ثم txtFields_Change
ثم Adodc1_MoveComplete
ولكن لم يفلح الكود لأن تسلسل الأحداث كان غير ذلك

#3

اخى من الطبيعى ان يظهر عند التنقل لن ال txtFields سوف يحمل قيمة ايضا عند عملية النقل وهنا وضع الحدث عليه لذا من الطبيعى ان يعمل معك ال cmdCancle & cmdUpdate والصحيح ان تقوم بوضع textbox جديد يكون هو المسئول عن عملية البحث ومنه يمكن اتحائة او تعطيل المفاتيح المطلوب وتكون ازرار التنقل غير مرتبطة به اثناء العرض هكذا يتم حل المشكلة

#4
اقتباس

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

 

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

ولكن ليتك توضح بكتابة الكود الصحيح

وشكرآ

#5

اخى الامر سهل انتبه معى

تخيل ان لديك فورم وعليه اربعة صناديق نصية اى textbox وايضا لديك اربعة ازرار تنقل ويقوم كود التنقل بعرض البيانات فى الصناديق الاربعة ايضا تريد ان تقوم بالتعديل على البيانات بستخدم زر تعديل ولكن لا ترغب فى ان يكون زر التعديل متاح اثناء التنقل

ادا سوف تقوم بوضع صندوق نصية جديد اى سوف يصبح العدد 5 وهدا الصندوق هو المسوال عن عملية البحث وتجعل كود البحث لديك يعمل فى الحدث textbox5_change وتضع فى شرط البحث انه ان تحقق الشرط تجعل زرد التعديل متاح وان لم يتحقق تجعل زر التعديل معطل وان كنت تحتاج مثال عملى سوف اضع لك دلك

تحياتى

تم تعديل هذه المشاركة بواسطة mohamad1977 في 29 يونيو 2013 في 15:09

#6
اقتباس
وهدا الصندوق هو المسوال عن عملية البحث

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

اقتباس
وان كنت تحتاج مثال عملى سوف اضع لك دلك

أتمنى دلك

ولك ألف شكر

#7

فى انتظار المثال العملى الموضح به الكود الصحيح

#8

اخى اسف ارغب بالمساعدة ولكن لا اعمل على فيجوال بيسك 6 ولكن ادا كنت ترغب فى ان ارفق لك تطبيق على الدوت نت فلا مانع لدى

تحياتى

#9
اقتباس
ادا كنت ترغب فى ان ارفق لك تطبيق على الدوت نت فلا مانع لدى

لامانع

 

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

#10

لك دلك اخى فى الصباح يكون التطبيق امامك باذن الله تعالى

#11

اخى اسف عن التاخير ودلك بسبب غايب خدمة الانترنت لدى

سوف اتحدث هنا عن امرين وهما طريقة الانتقال من سجل الى اخر وطريقة البحث وسوف استخدام 5 صناديق نصية اربعة منها للعرض وواحد فقط للبحث

 

كود السجل الاول

CountDataBaseIndex = 0
        Label25.RightToLeft = Windows.Forms.RightToLeft.Yes
        Label1.Text = "" & Me.BindingContext(Dsdata_prs, "data_prs").Position & "من" & Me.BindingContext(Dsdata_prs, "data_prs").Count - 1
        GetDate()

كود السجل السابق

If CountDataBaseIndex > 0 Then
            CountDataBaseIndex = CountDataBaseIndex - 1
            GetDate()
        Else
            CountDataBaseIndex = Dsdata_prs.Tables(0).Rows.Count - 1
        End If
        Label1.RightToLeft = Windows.Forms.RightToLeft.Yes
        Label1.Text = "" & Me.BindingContext(Dsdata_prs, "data_prs").Position & "من" & Me.BindingContext(Dsdata_prs, "data_prs").Count - 1

كود السجل التالى

If CountDataBaseIndex < Dsdata_prs.Tables(0).Rows.Count - 1 Then
            CountDataBaseIndex = CountDataBaseIndex + 1
            GetDate()
        Else
            CountDataBaseIndex = 0
        End If
        Label1.RightToLeft = Windows.Forms.RightToLeft.Yes
        Label1.Text = "" & Me.BindingContext(Dsdata_prs, "data_prs").Position & "من" & Me.BindingContext(Dsdata_prs, "data_prs").Count - 1

كود السجل الاخير

 CountDataBaseIndex = Dsdata_prs.Tables(0).Rows.Count - 1
        Label25.RightToLeft = Windows.Forms.RightToLeft.Yes
        Label1.Text = "" & Me.BindingContext(Dsdata_prs, "data_prs").Position & "من" & Me.BindingContext(Dsdata_prs, "data_prs").Count - 1
        GetDate()

كود استدعاء البيانات

TextBox1.DataBindings.Add("Text", Dsdata_prs, "data_prs.f1")
TextBox2.DataBindings.Add("Text", Dsdata_prs, "data_prs.f2")
TextBox3.DataBindings.Add("Text", Dsdata_prs, "data_prs.f3")
TextBox4.DataBindings.Add("Text", Dsdata_prs, "data_prs.f4")

كود البحث فى المربع النصي الدى يحمل الرقم 5

Con.Close()
        Dsdata_prs.Clear()
        Dsdata_prs.Dispose()
        Con.Open()
        Dim SqlStrGet As String = "SELECT * FROM data_prs "
        SqlStrGet &= "WHERE f1='" & TextBox5.Text & "'"
        Dim DataAdapterGet As New OleDbDataAdapter(SqlStrGet, Con)
        DataAdapterGet.Fill(Dsdata_prs, "data_prs")
        Con.Close()
        If Me.BindingContext(Dsdata_prs, "data_prs").Count = 0 Then
            Me.ErrorProvider1.SetError(Me.Label2, "الرجاء اعادة المحاولة")
        Else
            
            GetDate()
        End If

تحياتى

تم تعديل هذه المشاركة بواسطة mohamad1977 في 2 يوليو 2013 في 08:15

#12

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

ولك ألف شكر

 

وأتمنى من أى أحد من المائة المتابعين للموضوع ان كان يعرف اللغتين ان يحول كوده هذا بلغة ال فيجوال بيسك6

وياليته يرفق لى الفورم كاملة بلغة ال فيجوال بيسك6 :thumb_up:

ولكم ألف شكر

#13

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

#14

ليت ذلك

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

#15

عرفت الحل والحمد لله

أن أكتب نفس الكود الذى كتبته فى البداية

ولكن فى حدث الtxtFields_KeyPress وليس حدث الtxtFields_Change

Private Sub txtFields_KeyPress(Index As Integer, KeyAscii As Integer)
  CMdCancle.Visible = True
  CMdUpdate.Visible = True

End Sub


 

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

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

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

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

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