كيف نجعل البرنامج عن الضغط على رز الإضافة يبحث اولا في قاعده البايات .. فإذا وجد ان ما اريد اضافته موجود مسبقا يعطي رسالة خطا
بس بدون استخدام الـ Adod .. يعني بالـ Data1 العادية
كيف نجعل البرنامج عن الضغط على رز الإضافة يبحث اولا في قاعده البايات .. فإذا وجد ان ما اريد اضافته موجود مسبقا يعطي رسالة خطا
بس بدون استخدام الـ Adod .. يعني بالـ Data1 العادية
شباااااااااااااااب
وين الحل
أخي الحبيب:
لكي تتأكد من عدم وجود هذا السجل في قاعدة البيانات , يمكنك أن تقوم بعمل بحث عن سجل مطابق لما تحاول إضافته قبل أن تقوم بعملية الإضافة , فإن وجد يتم إنهاء عملية الإضافة بدون أن يضيف السجل مع عرض رسالة للمستخدم تفيد بأن السجل الذي يحاول إضافته موجود فعلا.
و لك مني جزيل الشكر,,, (h)
____________________________________________________________________________
{ اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ } سورة الأنبياء (1)
____________________________________________________________________________
In a world without walls and fences, who needs Windows and Gates
أخ smsm3650:
هل قاعدة البيانات نوعها أكسيس 97 أم أحدث (2000 ....إلخ)
أنا أسأل لأن Data تدعم DAO وليس ADO - أي أن Data تصلح فقط لقواعد بيانات من نوع 97 أو أقدم (على ما أظن)
إن كان كلامي ليس صحيحاً بشكل دقيق أرجو من الأعضاء أن يخبرنا وشكراً.
تم تعديل هذه المشاركة بواسطة aroma_kt في 14 سبتمبر 2005 في 10:44
شكراً لإهتمامكم
الأخ Alaa Awaad ممكن تكتب الكود
لإن كل الاكواد الموجوة تستخدم الـ ADODC
.. الDATABASE مصممه بالـ Visual Data Manager
يعني اعتقد انها مثل اللتي بالـ ACCESS 97
code:
########
private sub command1_click()
data1.recordset.findfirst "id="&val(text1.text)
if data1.recordset.nomatch then
data1.recordset.addnew
else
msgbox "This record is found!!"
end if
end sub
أخي الحبيب :
إليك الطريقة بإستخدام كلا من ADODB وكذلك الأداة Data
هذا الكود بالنسبة لنظام الـ ADODB
dim doble as string Set rs = New ADODB.Recordset rs.Open "select * from [tablename] where [fieldname] like'" & text1.Text & "'", cn, adOpenDynamic, adLockOptimistic rs.MoveFirst While Not rs.EOF doble = rs![fieldname] rs.MoveNext Wend rs.Close If doble <> "" Then MsgBox "the name you tried to enter is already exist" Exit Sub Else Set rs = New ADODB.Recordset rs.Open "select * from [tablename]", cn, adOpenDynamic, adLockOptimistic rs.MoveFirst rs.AddNew rs![field1] = text1.Text rs![field2] = text2.Text rs.Update rs.Close
و تفسير هذا الكود كما يلي:
في السطر الأول قمنا بتعريف متغير doble على أنه متغير حرفي و ذلك لكي نضع في القيم التي ستعود لنا من بحثنا قي قاعدة البيانات.
السطر الثاني و الثالث قمنا من خلالهما بإنشاء إتصال بالجدول المطلوب البحث فيه عن قيمة معينة و قد إستخدمنا الأمر where لفترة النتائج حيث [teblename] هو إسم الجدول , [fieldname] هو إسم الحقل المراد مقارنه المدخلات بمحتوياته , text1.text هو صندوق النص الذي تريد أن ترى إن كانت قيمته موجودة فعلا في قاعدة البيانات أم لا.
السطر الرابع إلى التاسع نطلب فيهم من البرنامج أن يبدأ البحث من أول سجل في القاعدة طالما لم يصل لآخر سجل و يضع القيمة التي ترجع من البحث في المتغير الذي قمنا بتعريفه في أول سطر, و بعد أن يصل إلى نهاية السجلات يقوم بإغلاق الإتصال بالجدول .
الجزء لثاني من الكود يبدأ من السطر العاشر حيث نقوم بالتحقق من المتغير فإذا كان غير فارغ فسيقوم البرنامج بعرض رسالة على المستخدم تخبره أن السجل الذي يريد أن يضيفه موجود فعلا في قاعدة البيانات ثم يخرج البرنامج من هذا الحدث, أما إذا وجدنا أن المتغير فارغ فهذا يعني أنه لا يوجد سجل مطابق للسجل المراد إدخاله فتتم عملية التسجيل.
بالنسبة لأداة Data فالكود التالي يقوم بنفس الوظيفة:
mystore = InputBox("type the name you want to find", "Search")
Var = mystore
Var = "'" & Var & "'"
Data1.Recordset.FindFirst "[fieldname] like" & Var
Text1.Text = Data1.Recordset![field1]
Text2.Text = Data1.Recordset![field2]
If Data1.Recordset.NoMatch Then
Data1.Recordset.AddNew
Data1.Recordset![field1] = Text1.Text
Data1.Recordset![field2] = Text2.Text
Data1.Recordset.Update
Else
MsgBox "the name you tried to enter is already exist"
Exit Sub
End Ifأتمنى أن أكون قد وفقت في الإجابة على تساؤلاتك أخي الحبيب.
و لك مني جزيل الشكر,,, (h)
تم تعديل هذه المشاركة بواسطة Alaa Awaad في 14 سبتمبر 2005 في 21:20
____________________________________________________________________________
{ اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ } سورة الأنبياء (1)
____________________________________________________________________________
In a world without walls and fences, who needs Windows and Gates
شكراااااااااااااا جزيلاً لك أخي
لا يسعني الا ان اقول لكم ... زادكم الله من علمه
أخي
شكراً جزلا لك لإهتمامك ولكن للأسف عن تغيير المتغيير mystore= inputbox ..... بـ Mystore = Text1.text فانه يعني الـ MsgBox دائما .. انظر لهذا الكود
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
اريد المستخدم عند الضغط على انتر يقوم البرنامج بالبحث .. فإذا وجد ان المستخدم يقوم بادخال بيان موجود مسبقا .. يعطي رسالة
End If
End Sub
هذا الكود بعد ان قمت بتعديله ولم يعمل
Dim mystore As String
mystore= Text1.Text
Var = mystore
Var = "'" & Var & "'"
Data1.Recordset.FindFirst "[Cash_No] like" & Var
Text1.Text = Data1.Recordset![Cash_No]
If Data1.Recordset.NoMatch Then
Data1.Recordset.AddNew
Data1.Recordset![Cash_No] = Text1.Text
Data1.Recordset.Update
Else
MsgBox "the name you tried to enter is already exist"
Exit Sub
End If
وهذا كود آخر وجدته ولكن عند تشغيله يعطي رسالة الخطا الاتية Data Type mismatch in criteria expression
هذا الكود
Data1.Recordset.FindFirst "Cash_No=" & Val(Text1.Text) 'Cash_No
Do While Not Data1.Recordset.EOF = True
If Data1.Recordset.NoMatch Then
Data1.Recordset.AddNew
Else
MsgBox "This record is found!!"
End If
Loop
أخي الحبيب:
عفوا فلقد نسيت أن أضيف movefirst و هو نفس الخطأ في الكود الثاني أيضا , جرب الكود بعد التعديل و إن شاء الله لن تحدث مشاكل أخرى, و أنا في خدمتك في أي وقت.
Dim mystore As String mystore= Text1.Text Var = mystore Var = "'" & Var & "'" Data1.Recordset..movefirst Data1.Recordset.FindFirst "[Cash_No] like" & Var Text1.Text = Data1.Recordset![Cash_No] If Data1.Recordset.NoMatch Then Data1.Recordset.AddNew Data1.Recordset![Cash_No] = Text1.Text Data1.Recordset.Update Else MsgBox "the name you tried to enter is already exist" Exit Sub End If
و لك مني جزيل الشكر,,, (h)
____________________________________________________________________________
{ اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ } سورة الأنبياء (1)
____________________________________________________________________________
In a world without walls and fences, who needs Windows and Gates
أحي العزيز .. آآآآآسف جدا لانني اثقلت عليك .. ولكن نفس المشكلة مازالت قائمة وهي ان الرسالة تظهر دائما سواء كان البيان موجود او غير موجود
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
اريد وضع الكود هنا
End Sub
اظن ان المشكلة بسبب انه عند كتابة اي كلمة في الـ Text1.Text وعند الضغط على انتر فإنه يجد ان الكلمة الموجوده في الـ Text1.Text وبالتالي فإنه يعطي الرسالة
حاولت ان اضع الكود في Text2 وان ينفذ الكود عن الضغط على Command Button ونجحت .. ولكن عند ربط الـ Text2 بالـDataBase فإن المشكله تظهر مرة اخرى
فما الحل ..؟؟ ارجوا منك المساعدة وآآسف مرة اخرى للإثقال عليك
أخي شكرا لك جدا جدا جدا جدا جدا جدا جدا جدا جدا جدا ..................................... إلى ما لا نهاية
فعلا المشكلة كانت كمان توقعت
بسبب انه عند كتابة اي كلمة في الـ Text1.Text وعند الضغط على انتر فإنه يجد ان الكلمة الموجوده في الـ Text1.Text وبالتالي فإنه يعطي الرسالة
والحمد لله الذي هداني للحل وهو بسيييط جدا
وهو إفراغ حقل النص
mystore = Text1.Text
Text1.Text = ""
شكرا لك اخي وزادك الله علما على علم
ولو اني مبحبش الادوات ، وبحب اني اعتمد علي الكود اكثر ،، عموما هذا الكود كامل .
يلزمك تعرف متغيرين واحد من نوع Database واسمه DB
والثاني من نوع RcordSet واسمه Rec
SQL = "Select * from Table Where Field = '" & Trim(text1.Text) & "'"
Set Rec = DB.OpenRecordset(SQL)
With Rec
If .EOF Then '999
'Record Not Found
.AddNew
Else '999
'Record Found And Ask You If You Want To Edit
If MsgBox("Are you sure you want to edit ?", vbQuestion + vbYesNo) = vbYes Then '***
.Edit
Else '***
Exit Sub
End If '**
End If '999
!Field2 = Text2.Text
!Field3 = Text3.Text
!Field4 = Text4.Text
'...
.Update
.Close
End With
End Withالإنسان الذي يقول بأنه لا يمكن عمل شيء يجب ألا يعيق مطلقاً الإنسان الذي يقوم بعمل ذلك الشيء.
إن تخطئ فأنت إنسان ... أما أن تلوم جهازك الكمبيوتر على خطأك فهذا أكثر إنسانية.
انا محتاج كود بالسي شارب ADODC1 + DATAGRID
موقوف من المشاركة لقلة الأدب
============================
هذا الموضوع مغلق.
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…