المشاركات : 501
المواضيع 136
:
: 11
الإنتساب : Feb 2008
بارك الله فيك وفي اخي عبدالعزيز على التنبيه
وبعد المشكلة لازالت باقية يا اخي باسم
عندما يبدأ بالمقارنة وتكون الارقام كلها صحيحة
الرسالة الاولى تخبرك بان الرقم الاول اي رقم السجل الاول صحيح وباقي ارقام السجلات غير صحيحة
رغم انها كلها صحيحة
المشاركات : 543
المواضيع 34
:
: 463
الإنتساب : Apr 2013
بارك الله فيك استاد عبد العزيز معك حق
جرب هدا اخي medreg
حاول اظافة edit.text تضع فيها قيم حقول جدولك لكي تقارنها مثال
PHP كود :
try
//**********************************//
ADOTable1.First;
while not ADOTable1.Eof do
begin
edit6.text:=ADOTable1.FieldByName('compte').AsString;
edit7.text:=ADOTable1.FieldByName('clé').AsString ;
edit9.text:= ADOTable1.FieldByName('numero').AsString ;
edit10.text:= ADOTable1.FieldByName('nom').AsString;
edit11.text:= ADOTable1.FieldByName('net_a_payer').AsString;
som:=0;
for i:=1 to Length(edit6.Text) do
begin
som:=som+strtoint(edit6.text[i])*( (4+ Length(edit6.Text))-i);
edit8.Text:=IntToStr(som);
edit8.Text:= edit8.Text[Length(edit8.Text)-1]+edit8.Text[Length(edit8.Text)];
end;
edit13.Text:= Format('%.2d',[strtoint(edit8.text)]);
//edit13.text يحتوي الان على cle المحسوب و edit7.text يحتوي على cle المدخل الى الجدول نقوم بالمقارنة
//adotable3 هو جدول نضع فيها الحسابات الخاطئة لطباعتها فيما بعد و تصحيحها
if edit7.text <> edit13.text then
Begin
// هده الحلقة من اجل عدم تكرار ادخال الحسابات الى جدول الحسابات الخاطئة
adotable3.Open ;
If (adotable3.Locate ('Nom et Prénom' , edit10.text , [Locaseinsensitive] ) )and(adotable3.Locate ('Compte CCP',edit6.text , [Locaseinsensitive] ) ) Then
begin
// Showmessage ( ' Ce person existe déjà, SVP introduire un autre person ' ) ;
Label11.Visible:=False ;
// Abort
// End
end
//***********************************// // في حالة كان الحساب خاطئ وغير موجود في جدول الحسابات الخاطئة نقوم باظافته
else
begin
ADOTable3.close;
ADOTable3.open;
ADOTable3.edit ;
ADOTable3.append;
ADOTable3.FieldByName('numero').AsString:=edit9.text ;
ADOTable3.FieldByName('Nom et Prénom').AsString:= edit10.text;
ADOTable3.FieldByName('Compte CCP').AsString:= edit6.text;
ADOTable3.FieldByName('net_a_payer').AsString:=edit11.text ;
ADOTable3.FieldByName('Clé').AsString:= edit7.text;
adotable3.post;
end;
end;
ADOTable1.Next;
end;
except
showmessage('error');
end;
بالتوفيق
و من طلب العلوم بغير كد _________ سيدركها إذا شاب الغراب
المشاركات : 501
المواضيع 136
:
: 11
الإنتساب : Feb 2008
(26-02-2016, 10:07 AM)bassem_43اعتذر للغياب المفاجئابن الخطأ في هذا الكودالكود يعمل بشكل جيد الا انه اذا تجاوذ المبلغ 9 ارقام يعطيني خطأبمعنىإذا كان المبلغ يساوي 9.250.300,21 يعمل بشكل جيدوادا كان المبلغ يساوي 92.503.002,12 لايعمل بشكل جيدهذا هو الكود كتب : كود :
tMnt1 := ExtractNumberInString(formatfloat('0.00',TB1.fieldvalues['MT_NET']));
tMtn1 := format('%.13d',[strtoint(tMnt1)]);
Memo1.Add('*00000000'+format('%.10d',[strtoint(TB1.FieldValues['Cpte_Tr'])])+
TB1.FieldValues['Cle']+tMtn1+
format('%.7d',[strtoint(TB1.FieldValues['Effectif'])])+
TB1.FieldValues['MOIS']+TB1.FieldValues['ANNEE']+' '+'0');
المشاركات : 543
المواضيع 34
:
: 463
الإنتساب : Apr 2013
لا عليك يا صديقي
ما هي الرسالة التي ظهرت لديك ؟؟
وايضا اعمل
showmessage(tMnt1 ) بعد السطر الاول و انظر ما هي النتيجة التي يرجعها
كدلك showmessage(tMnt1 ) بعد السطر الثاني وما هي النتيجة التي ظهرت
و من طلب العلوم بغير كد _________ سيدركها إذا شاب الغراب
المشاركات : 501
المواضيع 136
:
: 11
الإنتساب : Feb 2008
(21-03-2016, 09:43 PM)bassem_43 كتب : لا عليك يا صديقي
ما هي الرسالة التي ظهرت لديك ؟؟
وايضا اعمل
showmessage(tMnt1 ) بعد السطر الاول و انظر ما هي النتيجة التي يرجعها
كدلك showmessage(tMnt1 ) بعد السطر الثاني وما هي النتيجة التي ظهرت
بارك الله فيك
في الرسالة الاولى التي وضعتها بعد السطر الاول تشير الى ان المبلغ تحول عالى ما اظن لآنه هذا هو المبلغ
'2524164701'
الرسالة الثانية التي وضعتها بعد السطر الثاني تعطيني خطأ المتمثل فيما يلي
Le Projet Paye_Pers.exe a provoqué une classe d'exception EConvertError avec le message "2524164701'
n'est pas une valeur entière correcte'. Processus stoppé. Utilisez Pas-à-pas ou Exécuter pour continuer.
المشاركات : 501
المواضيع 136
:
: 11
الإنتساب : Feb 2008
السلام عليكم ورحمة الله
لقد استعملت عدة محاولات في التعديل على الكود
الا انني قد يبدو لي قد وصلت الى الحل من خلال هذا التعديل والمطلوب المطالعة على التعديل وابداء رأيكم
التعديل هو بدلا من استعمال strtoint استعملت strtoint64 كما اطلب منكم توضيح الفرق بين strtoint و strtoint64 واين تستعمل
وهل استعمالها بدلا من strtoint عادي حتى في التحويلات الصغيرة ام لا؟
كود :
tMtn1 := format('%.13d',[strtoInt64(ExtractNumberInString(formatfloat('0.00',TBS2.fieldvalues['MT_NET'])))]);
showmessage(tMtn1 );
Memo1.Add('*00000000'+format('%.10d',[strtoint(TBS2.FieldValues['Cpte_Tr'])])+
TBS2.FieldValues['Cle']+tMtn1+
format('%.7d',[strtoint(TBS2.FieldValues['Effectif'])])+
TBS2.FieldValues['MOIS']+concatblanch(TBS2.FieldValues['ANNEE'])+'0');
المشاركات : 543
المواضيع 34
:
: 463
الإنتساب : Apr 2013
و عليكم السلام
بالنسبة ل strtoint فهو معروف اما strtoint64 تابع مع هدا الشرح
كود :
http://www.delphibasics.co.uk/RTL.asp?Name=StrToInt64
و هدا
كود :
http://www.freepascal.org/docs-html/rtl/sysutils/strtoint64.html
بالتوفيق اخي
و من طلب العلوم بغير كد _________ سيدركها إذا شاب الغراب
المشاركات : 501
المواضيع 136
:
: 11
الإنتساب : Feb 2008
(22-03-2016, 01:43 PM)bassem_43 كتب : و عليكم السلام
بالنسبة ل strtoint فهو معروف اما strtoint64 تابع مع هدا الشرح
كود :
http://www.delphibasics.co.uk/RTL.asp?Name=StrToInt64
و هدا
كود :
http://www.freepascal.org/docs-html/rtl/sysutils/strtoint64.html
بالتوفيق اخي
بارك الله فيكم وزادكم من الأجر والحسنات ويرحم الله والديكم آمـــــــــــــين
المشاركات : 543
المواضيع 34
:
: 463
الإنتساب : Apr 2013
آمين و فيك بركة اخي
و من طلب العلوم بغير كد _________ سيدركها إذا شاب الغراب
المشاركات : 501
المواضيع 136
:
: 11
الإنتساب : Feb 2008
السلام عليكم
ماذا عن قراءة الملف النصي وحفظه في قاعدة البانات على شكله الاصلي قبل ان يجول الى ملف نصي
وبارك الله فيكم