اذهب الي المحتوي
أوفيسنا

استعمال خاصية SuggestAppend في مربع النص كما في متصفح google


sandanet

الردود الموصى بها

السلام عليكم اخواني واساتذتي الكرام

تحية طيبة وبعد ..

 

سؤالي هو كيف يمكنني استعمال هذا الامر في مربع النص

        text2.AutoCompleteMode = AutoCompleteMode.SuggestAppend

كما تجدوه عندما تبحثون في مربع نص google

 

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

https://www.youtube.com/watch?v=Jnye77emTbo

 

وشكراً 

تم تعديل بواسطه sandanet
  • Like 2
رابط هذا التعليق
شارك

وعليكم السلام:smile:

 

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

يعني السؤال كيف نعمله في مربع نص؟

 

جعفر

تم تعديل بواسطه jjafferr
  • Like 2
رابط هذا التعليق
شارك

نعم تقدر (لدرجة ما) ، ولكن بتعب :blink:

 

1. نعمل طريقة للبحث ، في حقل النص ، مثل الربط التالي:

2. نأخذ أول نتيجة من النموذج الفرعي ونضعه في حقل نص البحث ،

3. نغير شكل النموذج الفرعي الى ListBox ، يطول ويقصر على اساس عدد الكلمات اللي تأتي من البحث ،

 

وفي النهاية بيصير عندنا كما هو الحال في ComboBox ، فليش التعب:wink2:

 

جعفر

  • Like 2
رابط هذا التعليق
شارك

:blink:

طيب هذا الكود يحتاج الى تعديل ممكن تطلع عليه

1- كود الوحدة النمطية

Option Compare Database
Option Explicit
Public conn As New ADODB.Connection
Public rs As New Recordset
Dim bExit As Boolean

Public Sub Egy(sTextBox As TextBox, sTable As String, sField As String, Optional sDBPass As String)
On Error Resume Next
Dim lLen As Long, strSQL As String
If bExit = True Or sTextBox = "" Then Exit Sub
lLen = Len(sTextBox)
strSQL = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Data.mdb;Persist Security Info=False"
If conn.State <> 1 Then conn.Open strSQL
strSQL = "SELECT * FROM " & sTable & " WHERE " & sField & " LIKE '" & sTextBox & "%'"
If rs.State = 1 Then rs.Close
rs.Open strSQL, conn, adOpenKeyset, adLockReadOnly
If rs.EOF And rs.BOF Then Exit Sub
sTextBox.Text = rs(sField)
If sTextBox.SelText = "" Then
sTextBox.SelStart = lLen
Else
sTextBox.SelStart = InStr(sTextBox.Text, sTextBox.SelText)
End If
sTextBox.SelLength = Len(sTextBox.Text)
End Sub

ومن ثم هذا الكود في النموذج

Private Sub text76_Change()
Egy Text1, "IETEM_NEM", "ITEM_NEM"
End Sub

Egy اسم الوظيفية في الوحدة النمطية

Text1 هو اسم مربع النص

IETEM_NEM اسم الجدول

والاخيرة اسم الحقل

 

 

رابط هذا التعليق
شارك

عفوا أوس ، بس مافهمت اللي تريده:blink:

ايش دخل هذه الوحدة النمطية بالرابط اللي اعطيتك!!

كود البرنامج اللي في الرابط جدا بسيط ، وفيه شرح عن كل سطر:

Private Sub n2_Change()

    Dim fld As String
    Dim x() As String
    Dim A As String
    
'1
    'add the 1st field to search in
    fld = "[كلمات ارشادية]"
'** Add additional fields to search in as well,
    'so everytime you want to add additional fields, copy the FULL next line, and add the field name
    fld = fld & " & ' ' & " & "[موضوع الخطاب]"
    'fld = fld & " & ' ' & " & "[my other field]"
'1

'2
    'do the initial subform Record Source
    mySQL1 = "Select * From [المستندات]"
    mySQL = mySQL1 & " Where "
    
    'now we want to split the search code into smaller bits,
    'if seperate by / \ * or space, then change this seperator to | (a unique letter),
    'this way we will have more than ONE word to search for
    
    Me.n2.SetFocus
    A = Me.n2.Text
    A = Replace(A, "/", "|")
    A = Replace(A, "\", "|")
    A = Replace(A, " ", "|")
    A = Replace(A, "*", "|")
    
    'the words are split and ready
    x = Split(A, "|")
        
    If UBound(x) = 0 Then
        'Still one word, search for it
        mySQL = mySQL & fld
        mySQL = mySQL & " Like '*" & x(i) & "*'"
    
    Else
        'it is ONE word and a seperate by / \ * or space,
        'so lets make a Where statement for each seperate word
        For i = LBound(x) To UBound(x)
        
            If i = 0 Then
                'its a word and a seperator, the NEXT word is NOT added yet
                mySQL = mySQL & fld
                mySQL = mySQL & " Like '*" & x(i) & "*'"
            Else
                'its multiple words, add the AND command between each word
                mySQL = mySQL & " AND " & fld
                mySQL = mySQL & " Like '*" & x(i) & "*'"
            End If
            
        Next i
    End If
    
    'if the Search field is Empty, use the initial mySQL1
    If Len(Me.n2.Text & "") = 0 Then
        mySQL = mySQL1
    End If
    
    'Debug.Print mySQL
    Me.sfrm_Search.Form.RecordSource = mySQL
'2
    
End Sub

 

جعفر

رابط هذا التعليق
شارك

@jjafferr

تم حل المشكلة اخي جعفر قمت بعمل المطلوب بشكل لابأس به انظر المرفق .. الربط الذي اعطيتنياه للأسف يختلف نوعا ما عما كنت اريده .. على العموم توصلت الى حل جيد نوعا ما ينقصني فيه امر بسيط وهو عند الضغط على سجل من النموذج الفرعي كيف انقل قيمته لمربع النص على النموذج الرئيسي؟ 

المرفق مثال للطريقة ..  طبعا بالتأكيد يحتاج الى لمسات جمالية وابداعات منك :biggrin:

 

test.zip

  • Like 1
رابط هذا التعليق
شارك

 

 

اجعل مصدر مربع النص 

= [subform].[taxt1]

subform اسم النموذج الفرعي

Taxt1 اسم مربع النص في النموذج الفرعي

3 ساعات مضت, sandanet said:

 

ينقصني فيه امر بسيط وهو عند الضغط على سجل من النموذج الفرعي كيف انقل قيمته لمربع النص على النموذج الرئيسي؟

 

تم تعديل بواسطه محمد سلامة
رابط هذا التعليق
شارك

4 ساعات مضت, محمد سلامة said:

 

 

اجعل مصدر مربع النص 

= [subform].[taxt1]

subform اسم النموذج الفرعي

Taxt1 اسم مربع النص في النموذج الفرعي

 

عزيزي استاذ محمد

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

لكن اذا جعلت مصدر مربع النص النموذج الفرعي فلن تستطيع اجراء البحث 

تم تعديل بواسطه sandanet
رابط هذا التعليق
شارك

8 ساعات مضت, sandanet said:

1. تم حل المشكلة اخي جعفر قمت بعمل المطلوب بشكل لابأس

2. توصلت الى حل جيد نوعا ما ينقصني فيه امر بسيط وهو عند الضغط على سجل من النموذج الفرعي كيف انقل قيمته لمربع النص على النموذج الرئيسي؟ 

3. المرفق مثال للطريقة ..  طبعا بالتأكيد يحتاج الى لمسات جمالية وابداعات منك :biggrin:

 

1. الحمدلله :smile:

2. هذه اعمل حدث على "نقر" الحقل الموجود في النموذج الفرعي ، ويكون الكود هكذا :

(مثلا ، اسم حقل نص النموذج الرئيسي TextBox_Name ، واسم الحقل الموجود في النموذج الفرعي SubForm_Field ):

me.parent.TextBox_Name = me.SubForm_Filed

3. ان شاء الله سأتطلع عليه لاحقا:smile:

 

جعفر

رابط هذا التعليق
شارك

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

متابع بشغف.. في انتظار المنتج النهائي.. قريباً إن شاء الله

الاستاذ جعفر أرجو أن تضع هنا نسخة قاعدة البيانات التي أشرت إليها متضمنةً للتعديلات الجديدة

 

رابط هذا التعليق
شارك

3 ساعات مضت, jjafferr said:

 

1. الحمدلله :smile:

2. هذه اعمل حدث على "نقر" الحقل الموجود في النموذج الفرعي ، ويكون الكود هكذا :

(مثلا ، اسم حقل نص النموذج الرئيسي TextBox_Name ، واسم الحقل الموجود في النموذج الفرعي SubForm_Field ):


me.parent.TextBox_Name = me.SubForm_Filed

3. ان شاء الله سأتطلع عليه لاحقا:smile:

 

جعفر

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

Forms!formS1!SubFrm.Form.FldText.Text

حيث ان fromS1 هو النموذج الرئيسي

و SubFrm هو النموذج الفرعي

و FldText هو اسم الحقل في النموذج الفرعي

 بالمناسبة قمت باستعمال طريقتك الموضحة في الرابط "هدية: البحث عن اي جزء من الكلمة ، في اي عدد من الحقول" مع بعض التعديلات الطفيفة والحمد لله الامور ماشية تمام :wavetowel: .. اشكرك جزيل الشكر على ماتقدمه :signthankspin:

 

تحياتي

 

هذه التعديلات في الملف المرفق

 

test.zip

تم تعديل بواسطه sandanet
  • Like 1
رابط هذا التعليق
شارك

السلام عليكم:smile:

 

سيدي الفاضل ، عاشت ايدك ، اكواد بسيطة ونتائج رائعة:smile:

 

التغييرات اللي انا عملتها:

1. اذا كتبت شيء ، وغيرت رأيك ، فتستطيع ان تضغط على الزر Esc (Escape) ، وسوف يختفي النموذج الفرعي ،

Private Sub text76_KeyDown(KeyCode As Integer, Shift As Integer)

    If KeyCode = vbKeyEscape Then
    
        SubFrm.Visible = False
    Else
    
        SubFrm.Visible = True
    End If
 
End Sub

 

2. اذا كتبت شيء ، فارتفاع النموذج الفرعي يطول ويقصر مع عدد السجلات الموجودة ، اكثر عدد هو 3 ،

Private Sub text76_Change()
On Error Resume Next

Dim x As String
SubFrm.Visible = True
x = Me.text76.Text

Me.Text11.Value = x
Me.SubFrm.Requery

    'تغيير ارتفاع النموذج الفرعي حسب عدد سجلاته
    Dim rst As DAO.Recordset
    Set rst = Me.SubFrm.Form.RecordsetClone
    rst.MoveLast
    RC = rst.RecordCount
    
    If RC > 3 Then
        
        Me.SubFrm.Height = Me.SubFrm!FldText.Height * 3
    Else
    
        Me.SubFrm.Height = Me.SubFrm!FldText.Height * RC
    End If
    
    rst.Close: Set rst = Nothing
    
End Sub

 

3. اذا كتبت شيء ، ونقرت على الاسم في النموذج الفرعي ، فسيتغير سجل النموذج الرئيسي حسب الاسم المختار ، وهنا فانت لست بحاجة الى زر البحث:smile:

Private Sub FldText_Click()
'Forms!formS1.ITEM_NEM = Me.FldText
Me.Parent.text76 = Forms!formS1!SubFrm.Form.FldText.Text

    'اظهر نتيجة البحث
    Me.Parent.Form.Requery

'Me.Parent.text76.SetFocus
Forms!formS1!SubFrm.Form.Visible = False

End Sub

 

جعفر

624.test.mdb.zip

  • Like 4
رابط هذا التعليق
شارك

السلام عليكم 

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

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

وهى استخدام الـ Combo Box  مع فلترة البيانات داخل الكمبوبكس حسب الحروف المدخلة مع التحكم بخاصية DrowpDown أثناء البحث

بهذا الموضوع توضيح للفكرة

www.officena.net/ib/topic/36947-البحث-في-مربع-تحرير-وسرد/

 

رابط هذا التعليق
شارك

2 ساعات مضت, jjafferr said:

السلام عليكم:smile:

 

سيدي الفاضل ، عاشت ايدك ، اكواد بسيطة ونتائج رائعة:smile:

 

التغييرات اللي انا عملتها:

1. اذا كتبت شيء ، وغيرت رأيك ، فتستطيع ان تضغط على الزر Esc (Escape) ، وسوف يختفي النموذج الفرعي ،


Private Sub text76_KeyDown(KeyCode As Integer, Shift As Integer)

    If KeyCode = vbKeyEscape Then
    
        SubFrm.Visible = False
    Else
    
        SubFrm.Visible = True
    End If
 
End Sub

 

2. اذا كتبت شيء ، فارتفاع النموذج الفرعي يطول ويقصر مع عدد السجلات الموجودة ، اكثر عدد هو 3 ،


Private Sub text76_Change()
On Error Resume Next

Dim x As String
SubFrm.Visible = True
x = Me.text76.Text

Me.Text11.Value = x
Me.SubFrm.Requery

    'تغيير ارتفاع النموذج الفرعي حسب عدد سجلاته
    Dim rst As DAO.Recordset
    Set rst = Me.SubFrm.Form.RecordsetClone
    rst.MoveLast
    RC = rst.RecordCount
    
    If RC > 3 Then
        
        Me.SubFrm.Height = Me.SubFrm!FldText.Height * 3
    Else
    
        Me.SubFrm.Height = Me.SubFrm!FldText.Height * RC
    End If
    
    rst.Close: Set rst = Nothing
    
End Sub

 

3. اذا كتبت شيء ، ونقرت على الاسم في النموذج الفرعي ، فسيتغير سجل النموذج الرئيسي حسب الاسم المختار ، وهنا فانت لست بحاجة الى زر البحث:smile:


Private Sub FldText_Click()
'Forms!formS1.ITEM_NEM = Me.FldText
Me.Parent.text76 = Forms!formS1!SubFrm.Form.FldText.Text

    'اظهر نتيجة البحث
    Me.Parent.Form.Requery

'Me.Parent.text76.SetFocus
Forms!formS1!SubFrm.Form.Visible = False

End Sub

 

جعفر

624.test.mdb.zip

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

34 دقائق مضت, أبو عبدالله الحلوانى said:

السلام عليكم 

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

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

وهى استخدام الـ Combo Box  مع فلترة البيانات داخل الكمبوبكس حسب الحروف المدخلة مع التحكم بخاصية DrowpDown أثناء البحث

بهذا الموضوع توضيح للفكرة

www.officena.net/ib/topic/36947-البحث-في-مربع-تحرير-وسرد/

 

استاذي الفاضل ممكن ترفق مثال بسيط يوضح الفكرة يكون افضل 

 

تحياتي

رابط هذا التعليق
شارك

7 ساعات مضت, sandanet said:

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

استاذي الفاضل ممكن ترفق مثال بسيط يوضح الفكرة يكون افضل 

 

تحياتي

هذا الرابط فيه مثال

 

كلا الموضوعين جيدين 
لكن انا برأيي  افضل المثال الاعلاه في هذا الموضوع على المثال في رابط الاعلاه

 

 

  • Like 1
رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information