بعد التحية و السلام
لدي مشكلة و أرجوا أن أجد ظالتي هنا معكم و جزاكم الله كل خيرا وفتح أبواب الخير عليكم
في المرفق ستجدون سؤالي قمت بتقسيمه إلى 4 أجزاء لأنني لم أستطيع تحميل كاملا Doc1,d1,d2,d3
هذا الجزء الأخير من سؤالي
أرجو الإجابة جزاكم الله خيرا
بعد التحية و السلام
لدي مشكلة و أرجوا أن أجد ظالتي هنا معكم و جزاكم الله كل خيرا وفتح أبواب الخير عليكم
في المرفق ستجدون سؤالي قمت بتقسيمه إلى 4 أجزاء لأنني لم أستطيع تحميل كاملا Doc1,d1,d2,d3
هذا الجزء الأخير من سؤالي
أرجو الإجابة جزاكم الله خيرا
تم تعديل هذه المشاركة بواسطة lمنى نور هدى في 19 يناير 2012 في 21:53
ساعدوني ساعدكم الله لم يبقي لي وقت لدي شهر واحد في يدي و أن مازلت متوقفة بسبب هذا المشكل
السلام عليكم...لعدم تكرار معلومة مثلا رقم الكتاب ..هناك عدة طرق كل حسب تفكيره فالخوارز%
السلام عليكم...لعدم تكرار معلومة مثلا رقم الكتاب ..هناك عدة طرق كل حسب تفكيره فالخوارزميات لها علاقة وطيدة بدلفي,كما ان لكل منا طريقته الخاصة في التحليل , فالبنسبة للسؤال المطروح بعدم تكرار مثلا رقم كتاب. لإدخال سجل جديد في الجدول يستوجب وضع شروط مسبقة قبل فتح append و insert وغيرها من التعليمات او الأوامر الخاصة بالتغيير في محتويات الجداول .
بالنسبة للشرط مثلا استخدمت edit1 لعرض الرقم و edit2 لعرض الإسم هنا استخدم الحدث المتعلق ب edit1 والذي هو onexit اي عند ادخال الرقم والإنتقال الى edit2 لإدخال الإسم, يقوم الخوارزمي الذي انشاته في هذا الحدث بفحص الجدول والبحث عن القيمة للرقم فان وجد يطبع رسالة بان الرقم موجود ضمن سجلات الجدول ........طبعا هذا حسب مااعرف.
بعد التحية و السلام
لقد فكرة بنفس الطريقة لكن الخورزمية التي إستعملتها تجعل كل ما أدخل زبون جديد تظهر الرسالة التي تقول أن الزبون موجود رغم أنه أول مرة أدخله و أيضا تقوم بتسجيله رغم أنها أضهرت الرسالة التي تقول أنه موجود
أرجوا أن تقترح عليا خورزمية المناسبة و جزاك الله خيرا
السلام عليكم طبعا:يطبع لكي رسالة بأن الرقم موجود ويسجلها ايضا لانكي استخدمتي في البداية التعليمة:if ADOtable1.state in [dsedit,dsinsert] thenADOtable1.insertوعندما تكون طريقة البحث عن الرقم من اول الجدول: اي اين يوجد الرقم طبعا سيجدها ويطبع رسالة بان الرقم موجود....اما بالنسبة للسجل الجديد تقومين بحدفه ايضا عند وجود الرقم ليعود الجدول الى حالته الأولى,هذه طريقة لم اجربها لكنني سارفق برنامج صغير يعكس هذه المشكلة..............كما ارجو اخواننا هنا ان يدلونا على حلول لنستفيد جميعا وشكرا...........
hakimraho كتب:السلام عليكم طبعا:يطبع لكي رسالة بأن الرقم موجود ويسجلها ايضا لانكي استخدمتي في البداية التعليمة:if ADOtable1.state in [dsedit,dsinsert] thenADOtable1.insertوعندما تكون طريقة البحث عن الرقم من اول الجدول: اي اين يوجد الرقم طبعا سيجدها ويطبع رسالة بان الرقم موجود....اما بالنسبة للسجل الجديد تقومين بحدفه ايضا عند وجود الرقم ليعود الجدول الى حالته الأولى,هذه طريقة لم اجربها لكنني سارفق برنامج صغير يعكس هذه المشكلة..............كما ارجو اخواننا هنا ان يدلونا على حلول لنستفيد جميعا وشكرا...........
بارك الله فيك أنا في إنتظار إقتراحك
السلام عليكم...بالنسبة لحل مشكل: عند فتح التعليمةinsert و append وتعطيل تنفيدها قد وجدت هذا المرجع ربما قد يفيد ويوصل الى الحلول , اي عدم السماح لادخال معطيات جديدة في الجدول الا اذا كان Num_client غير موجود ضمن سجلات الجدول لمنع التكرار ...تحياتي للجميع.
عدرا للجميع ..المرجع باللغة الفرنسية........
السلام عليكم
اطلعت على المستندات على عجل .. فكرة عمل البرنامج ليست واضحة بالنسبة لكن اقول على ما فهمت
لديك ID للزبون يجب ان لا يتكرر - بالنسبة لي - اعمل باحدى طريقتين
1- جعل الحقل الــ AutoNo --> ID من قاعدة البانات وتريح عقلك من شغل برمجي كثير.
2- استخدام اي من طرق البحث للبحث عن الرقم كـالتعليمة Locate Or Find or .......
أو استخدام TAdoquery
xboolean:=True;
with dm.QMultiI do begin
Close;
SQL.Clear;
SQL.Add('select FieldName from Table Name');
SQL.Add('Where FieldName = '+Edit1.Text);
Open;
if (DM.QMultiI.RecordCount>0)And (not DM.QMultiI.FieldByName('FieldName').IsNull) then
XBoolean:=False;
Close;
end;
if not XBoolean then
begin
end else
begin
end;في الكود xboolean متغير من النوع Boolean
DM.QMulti هي TADOQuery
أرجو ان اكون قد أفدت
وأي ملاحظة أنا ان شاء حاضر
..... تحياتي
تم تعديل هذه المشاركة بواسطة c_vita في 23 يناير 2012 في 10:06
c_vita كتب:السلام عليكم
اطلعت على المستندات على عجل .. فكرة عمل البرنامج ليست واضحة بالنسبة لكن اقول على ما فهمت
لديك ID للزبون يجب ان لا يتكرر - بالنسبة لي - اعمل باحدى طريقتين
1- جعل الحقل الــ AutoNo --> ID من قاعدة البانات وتريح عقلك من شغل برمجي كثير.
2- استخدام اي من طرق البحث للبحث عن الرقم كـالتعليمة Locate Or Find or .......
أو استخدام TAdoquery
xboolean:=True; with dm.QMultiI do begin Close; SQL.Clear; SQL.Add('select FieldName from Table Name'); SQL.Add('Where FieldName = '+Edit1.Text); Open; if (DM.QMultiI.RecordCount>0)And (not DM.QMultiI.FieldByName('FieldName').IsNull) then XBoolean:=False; Close; end; if not XBoolean then begin end else begin end;في الكود xboolean متغير من النوع Boolean
DM.QMulti هي TADOQuery
أرجو ان اكون قد أفدت
وأي ملاحظة أنا ان شاء حاضر
..... تحياتي
بعد التحية و السلام
أنا مبتدئة في هذا المجال لم أفهم التعليمة التي كتبتها كيف أستعملها
لقد قمت بوع تعليمة تخبرني إذا الزبون موجود و إن لم يكن موجود لكن في كلا حالتين تقوم بتسجيله في جدول رغم أني إستعملت else
لقد وضعت 2 ADOtable و ADOtable1 كليهما نفس TableName
ADOtable1 هي التي إضيف فيها البيانات dbedit1تابع لها و ADOtable2 يتم البحث فيها عن الزبون إن وجد و dbedit4 تابع له
المشكل رغم أنه يقول أن الزبون موجود إلا أنه يقوم بتسجيله في الجدول
أرجوا مساعدتي في إيجاد الخطأ
و بارك الله فيكم
تم تعديل هذه المشاركة بواسطة lمنى نور هدى في 23 يناير 2012 في 14:32
السلام عليكم
أولا : أعيدي كتابة المشاركة السابقة ولكن اختاري من محرر النص <> ثم ضعي الكود بين العلامتين الناتجتين لأستطيع فهم الكود
وعلى أي حال يجب أن تكون الخاصية Filter في البداية = False وليس True
هذه هي التعليمة التي إستعملتها
[/
if (dbedit1.Text <>'') then
begin
adoTable2.Filtered: = true;
if dbedit4.text ADOtable2.fieldvalues = ['num_clients'] then showmessge ('الزبون موجود')
else
if ADOtable1.state in [dsedit, dsinsert] then
begin
ADOtable1.post;
ADOtable2.Requery ([]);
end;
end
تم تعديل هذه المشاركة بواسطة lمنى نور هدى في 23 يناير 2012 في 14:40
أتعرف إكتشفت أن المشكل ليس فيهذه التعليمة بل في تعليمة أخرى الذي وظعتها في زر آخر
[/ADOtable1.Insert ]
عندما أضغط عليها وأكتب تقوم بتسجيل رغم أنها ليست لتسجيل في الجدول بل لإظافة سطر
كيف يمكنني إقاف ذلك
تم تعديل هذه المشاركة بواسطة lمنى نور هدى في 23 يناير 2012 في 14:53
الق نظرة على الكود التالي .. انا لم ازيد عليه غير ان عدلت شيئا
Begin
if (dbedit1.Text <>'') then
begin
adoTable2.Filtered: = False;
adoTable2.Filter: = 'num_clients =' + QuotedStr (dbedit1.Text + '');
adoTable2.Filtered: = True;
end;
if dbedit4.text = ADOtable2.fieldvalues['num_clients'] then showmessge ('الزبون موجود')
else
if ADOtable1.state in [dsedit, dsinsert] then
begin
ADOtable1.post;
ADOtable2.Requery ([]);
end;
endوما علاقة dbedit1 و dbedit4
تم تعديل هذه المشاركة بواسطة c_vita في 23 يناير 2012 في 14:51
c_vita كتب:الق نظرة على الكود التالي .. انا لم ازيد عليه غير ان عدلت شيئا
Begin if (dbedit1.Text <>'') then begin adoTable2.Filtered: = False; adoTable2.Filter: = 'num_clients =' + QuotedStr (dbedit1.Text + ''); adoTable2.Filtered: = True; end; if dbedit4.text = ADOtable2.fieldvalues['num_clients'] then showmessge ('الزبون موجود') else if ADOtable1.state in [dsedit, dsinsert] then begin ADOtable1.post; ADOtable2.Requery ([]); end; endوما علاقة dbedit1 و dbedit4
dbedit1 هي التي أكتب فيها رقم الزبون الذي أريد أن أسجله بعد أن أظغط على زر الذي يحمل تعليمة ADOtable1.insert وهذا الزر الذي يعمل المشكل لأنه يقوم بالتسجيل بنفسه قبل أن أظغط على زر التسجيل المعلومات
أما dbedit4 فهو الذي يظهر رقم الزبون إن كان موجد من قبل تلك التعليمة صحية هي تعمل جيدا
لكن المشكل هو عند زر الذي يحمل تعليمة ADOtable1.insert
السلام عليكم ربما الإجابة في الصور المرفقة..! لتعطيل او ايقاف تسجيل المعلومات.بالتعديل في خصائصdbgrid1 في option ...اضافة الى adotable1.cancel..............................
لاستخدام التعليمة:if debedit1.text<>' ' then ربما يجب التغيير في الخاصية autoedit ل datasouce .....فقط للتوضيح....
بارك الله فيكم إنتهى المشكل عن طريق هذه التعليمة
Begin
if (edit1.Text <>'') then
begin
adoTable2.Filtered: = true;
adoTable2.Filter: = 'num_clients =' + QuotedStr (edit1.Text + '');
end;
if dbedit4.text ADOtable2.fieldvalues = ['num_clients'] then showmessge ('الزبون موجود')
else
adotable2.insert;
ADOtble2.fieldvalues['Num_client] :=edit1.text;
if ADOtable1.state in [dsedit, dsinsert] then ADOtable1.post;
endتم تعديل هذه المشاركة بواسطة lمنى نور هدى في 25 يناير 2012 في 18:27
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…