اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

خطأ في الكود _ رصيد و ترحيل


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

السلام عليكم

عملت تكست بوكس بإسم ts  تظهر اخر رصيد في حركة الصندوق

ولدي تكست بوكس  مبلغ القرض  tmaden   ووضعت كود في زر الترحيل

اذا كان مبلغ القرض اكبر من  الرصيد  لايمكن  ترحيل  ... ولكن يظهر لي  خطأ  عند   x=me.ts

كود.PNG

فورم.PNG

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

من خلال الكود الواضح انه سيقوم بالترحيل في كل الحالات ، لانك في الجملة الشرطية جعلت الشرط فقط التراجع وبعدها تم انهاء الجملة الشرطية ، واستكمل الكود وظيفته بجملة التحديث .

جرب بعد Undo اكتب Else وانقل السطر End If لما بعد استعلام التحديث .

بحيث اذا كان مبلغ القرض اكبر من  الرصيد  لايمكن  ترحيل  .. وإلا (Else) قم بترحيل البيانات .

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

في 2‏/12‏/2023 at 14:12, عمر ضاحى said:

LRmxl3P.png

انا شايف ان الكود يعمل عندك عادي


ممكن توضح ايه الخطأ ؟

 

13 دقائق مضت, Foksh said:

من خلال الكود الواضح انه سيقوم بالترحيل في كل الحالات ، لانك في الجملة الشرطية جعلت الشرط فقط التراجع وبعدها تم انهاء الجملة الشرطية ، واستكمل الكود وظيفته بجملة التحديث .

جرب بعد Undo اكتب Else وانقل السطر End If لما بعد استعلام التحديث .

بحيث اذا كان مبلغ القرض اكبر من  الرصيد  لايمكن  ترحيل  .. وإلا (Else) قم بترحيل البيانات .

شكرا  جزيلا  استاذ

عملت المطلوب  وبقي الامر نفسه

جواب كود.PNG

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

اعتذر منك أخي

الخطأ في المتغير الذي حجزته

 

Private Sub Command14_Click()
    Dim i As Integer
    Dim x As Integer
    i = Me.Tmaden
    x = Me.ts
    If i < x Then
        MsgBox "لا يمكنك الحفظ !! فرصيد الصندوق غير كاف", vbExclamation
        Me.Undo
    Else
        Dim mySQL As String
        mySQL = "SELECT * FROM karz"
        Dim rst As DAO.Recordset
        Set rst = CurrentDb.OpenRecordset(mySQL)
        
        rst.AddNew
        rst!no = tid
        rst!nam = Comn
        rst!datee = tdate
        rst!maden = Tmaden
        rst!gehat = comg
        rst!harkt = th
        rst!kfl = Tkl
        rst!fonl = Tfl
        rst!worl = Comkl
        rst!kf2 = Tk2
        rst!fon2 = Tf2
        rst!wor2 = Comk2
        rst!notesm = notm
        rst!noteskl = notkl
        rst!notesk2 = notk2
        rst.Update
        
        rst.Close
        Set rst = Nothing
    End If
End Sub

 

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

ماهو الحل  إذن  ؟
ارفق لكم  البرنامج   المعمول ب  اكسس 2010   والمطلوب  في  فورم   sarf

قروض التجربة الحالية.rar

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

5 دقائق مضت, Foksh said:

وضعت لك الحل أخي الكريم ، في المشاركة القبل الأخيرة لي :wavetowel:

غيرت  استاذي الفاضل  ولم  تنجح  لهذا ارفقت  البرنامج

والف شكر لكم

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

من الواضح أنه لا يعتمد القيمة الفارغة للحقل TS و الحقل Tmaden ، جرب هذا التعديل

 

Private Sub Command14_Click()
    Dim i As Variant
    Dim x As Variant
    
    If IsNull(Me.Tmaden) Then
        MsgBox "قيمة فارغة!", vbExclamation
        Exit Sub
    End If
    
    If IsNull(Me.ts) Then
        MsgBox "قيمة فارغة!", vbExclamation
        Exit Sub
    End If
    
    i = Me.Tmaden
    x = Me.ts
    
    If i < x Then
        MsgBox "لا يمكنك الحفظ !! فرصيد الصندوق غير كاف", vbExclamation
        Me.Undo
    Else
        Dim mySQL As String
        mySQL = "SELECT * FROM karz"
        Dim rst As DAO.Recordset
        Set rst = CurrentDb.OpenRecordset(mySQL)
        
        rst.AddNew
        rst!no = tid
        rst!nam = Comn
        rst!datee = tdate
        rst!maden = Tmaden
        rst!gehat = comg
        rst!harkt = th
        rst!kfl = Tkl
        rst!fonl = Tfl
        rst!worl = Comkl
        rst!kf2 = Tk2
        rst!fon2 = Tf2
        rst!wor2 = Comk2
        rst!notesm = notm
        rst!noteskl = notkl
        rst!notesk2 = notk2
        rst.Update
        
        rst.Close
        Set rst = Nothing
    End If
End Sub

 

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

12 دقائق مضت, Foksh said:
Dim i As Variant
    Dim x As Variant
    
    If IsNull(Me.Tmaden) Then
        MsgBox "قيمة فارغة!", vbExclamation
        Exit Sub
    End If
    
    If IsNull(Me.ts) Then
        MsgBox "قيمة فارغة!", vbExclamation
        Exit Sub
    End If
    
    i = Me.Tmaden
    x = Me.ts
    
    If i < x Then
        MsgBox "لا يمكنك الحفظ !! فرصيد الصندوق غير كاف", vbExclamation
        Me.Undo
    Else
        Dim mySQL As String
        mySQL = "SELECT * FROM karz"
        Dim rst As DAO.Recordset
        Set rst = CurrentDb.OpenRecordset(mySQL)
        
        rst.AddNew
        rst!no = tid
        rst!nam = Comn
        rst!datee = tdate
        rst!maden = Tmaden
        rst!gehat = comg
        rst!harkt = th
        rst!kfl = Tkl
        rst!fonl = Tfl
        rst!worl = Comkl
        rst!kf2 = Tk2
        rst!fon2 = Tf2
        rst!wor2 = Comk2
        rst!notesm = notm
        rst!noteskl = notkl
        rst!notesk2 = notk2
        rst.Update
        
        rst.Close
        Set rst = Nothing
    End If

شكرا جزيلا  استاذي الفاضل 
تعبتك معي  هذا اولا

وثانيا  في حال  ادخال  اي قيمة  حتى اذا كانت اقل  تظهر  رسالة لايمكنك الحفظ   كما في الصورة المرفقة

انا  جربت    as long  

رد.PNG

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

يبدو أن المشكلة كانت في تنسيق الحقول التي ترغب في اجراء المقارنة عليها ، قمت ببعض التغييرات ، وتفضل الكود

 

Private Sub Command14_Click()
    Dim i As Double
    Dim x As Double
    
    If IsNull(Me.Tmaden) Then
        MsgBox "قيمة Me.Tmaden فارغة!", vbExclamation
        Exit Sub
    End If
    
    If IsNull(Me.ts) Then
        MsgBox "قيمة Me.ts فارغة!", vbExclamation
        Exit Sub
    End If
    
    i = CDbl(Replace(Me.Tmaden, ",", ""))
    x = CDbl(Replace(Me.ts, ",", ""))
    
    If i < x Then
        MsgBox "لا يمكنك الحفظ !! فرصيد الصندوق غير كاف", vbExclamation
        Me.Undo
    Else
        Dim mySQL As String
        mySQL = "SELECT * FROM karz"
        Dim rst As DAO.Recordset
        Set rst = CurrentDb.OpenRecordset(mySQL)
        
        rst.AddNew
        rst!no = tid
        rst!nam = Comn
        rst!datee = tdate
        rst!maden = Tmaden
        rst!gehat = comg
        rst!harkt = th
        rst!kfl = Tkl
        rst!fonl = Tfl
        rst!worl = Comkl
        rst!kf2 = Tk2
        rst!fon2 = Tf2
        rst!wor2 = Comk2
        rst!notesm = notm
        rst!noteskl = notkl
        rst!notesk2 = notk2
        rst.Update
        
        rst.Close
        Set rst = Nothing
    End If
End Sub

 

الملف المرفق

قروض التجربة الحالية.accdb

 

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

  • ابوخليل changed the title to خطأ في الكود _ رصيد و ترحيل
19 ساعات مضت, Foksh said:
Dim i As Double
    Dim x As Double
    
    If IsNull(Me.Tmaden) Then
        MsgBox "قيمة Me.Tmaden فارغة!", vbExclamation
        Exit Sub
    End If
    
    If IsNull(Me.ts) Then
        MsgBox "قيمة Me.ts فارغة!", vbExclamation
        Exit Sub
    End If
    
    i = CDbl(Replace(Me.Tmaden, ",", ""))
    x = CDbl(Replace(Me.ts, ",", ""))
    
    If i < x Then
        MsgBox "لا يمكنك الحفظ !! فرصيد الصندوق غير كاف", vbExclamation
        Me.Undo
    Else
        Dim mySQL As String
        mySQL = "SELECT * FROM karz"
        Dim rst As DAO.Recordset
        Set rst = CurrentDb.OpenRecordset(mySQL)
        
        rst.AddNew
        rst!no = tid
        rst!nam = Comn
        rst!datee = tdate
        rst!maden = Tmaden
        rst!gehat = comg
        rst!harkt = th
        rst!kfl = Tkl
        rst!fonl = Tfl
        rst!worl = Comkl
        rst!kf2 = Tk2
        rst!fon2 = Tf2
        rst!wor2 = Comk2
        rst!notesm = notm
        rst!noteskl = notkl
        rst!notesk2 = notk2
        rst.Update
        
        rst.Close
        Set rst = Nothing
    End If

شكرا جزيلا  لكن لايقبل الترحيل لما مؤشر عليه  والذي بعده  كذلك  عندما اعطي مبلغ اقل  يقول لايوجد رصيد 
مع انه  الرصيد اعلى من مبلغ القرض

لايرحل.PNG

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

اخي الكريم اسعدك الله ،،

في مثالك كتبت الرقم 400 وهو فعلاً أصغر من الرقم 4920000

التنسيق الرقمي للخانة هو مشكلتك 😊

جرب تكون قيمة القرض 4920001 😅

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

السلام عليكم

مشاركة معكم احبتي

الأخطاء طفيفة فقط بحاجة الى تأني كالتالي :

1- اعلن عن المتغيرات integr والواجب تكون Dbl

2- في المقارنة اخطأ ووضع اصغر من بدلا من اكبر من ... وهذه هي مشكلته الأساسية

ايضا داخل الكود تسميات الحقول تنتهي بحرف L   والصح تنتهي برقم واحد ... وطبعا صعب التفريق بينها عند المشاهدة

 

Ab.rar

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

52 دقائق مضت, ابوخليل said:

1- اعلن عن المتغيرات integr والواجب تكون Dbl

 

جزاك الله خيراً أستاذنا ومعلمنا @ابوخليل ، هو فعلاً تم التعديل للمتغير Dbl .

53 دقائق مضت, ابوخليل said:

2- في المقارنة اخطأ ووضع اصغر من بدلا من اكبر من ... وهذه هي مشكلته الأساسية

 

وأيضاً هذه النقطة أخذت في الحسبان .

54 دقائق مضت, ابوخليل said:

ايضا داخل الكود تسميات الحقول تنتهي بحرف L   والصح تنتهي برقم واحد ... وطبعا صعب التفريق بينها عند المشاهدة

 

:biggrin: هذه النقطة الصحيح انها فاتتني ولم انتبه لها :wavetowel:

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

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

لأني استوفيت كل المتطلبات وطبقت بصورة صحيحة

وبعد بذل الكثير من الجهد والوقت اتوقف ( استراحة محارب )  .. ثم اعيد المسألة من الصفر.. فأعثر على السبب

ودوما يكون سبب الخلل تافه جدا .. لا يخطر على البال

 

 

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

20 ساعات مضت, ابوخليل said:

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

لأني استوفيت كل المتطلبات وطبقت بصورة صحيحة

وبعد بذل الكثير من الجهد والوقت اتوقف ( استراحة محارب )  .. ثم اعيد المسألة من الصفر.. فأعثر على السبب

ودوما يكون سبب الخلل تافه جدا .. لا يخطر على البال

 

 

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

Dim i As Long, x As Long

    i = Me.Tmaden
    x = Me.ts
    If i > x Then
        MsgBox "لا يمكنك الحفظ !! فرصيد الصندوق غير كاف", vbExclamation
        Me.Undo
    Else


DoCmd.SetWarnings False
DoCmd.RunSQL "insert into karz (no,nam,datee,maden,gehat,harkt,kf1,fon1,wor1,kf2,fon2,wor2,notesm,notesk1,notesk2) values (tid,comn,tdate,tmaden,comg,th,tk1,tf1,comk1,tk2,tf2,comk2,notm,notk1,notk2)"
DoCmd.SetWarnings True
MsgBox ("تم ترحيل البيانات بنجاح")
tid = ""
tdate = ""
Tname = ""
Tmaden = ""
comg = ""
Comr = ""
tid.SetFocus


End If

 

21 ساعات مضت, ابوخليل said:

اعلن عن المتغيرات integr والواجب تكون Db

ماذا  تقصد  ممكن  التوضيح  اكثر   dbi   ماهو  ؟

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

2 ساعات مضت, العبيدي رعد said:

 

Dim i As Long, x As Long

 

المقصود في المتغيرات :

السطر اعلاه في اول مثال لك كان   Dim i As Integer, x As Integer

والصحيح ان يكون :

 Dim i As Double, x As Double

2 ساعات مضت, العبيدي رعد said:

ماذا  تقصد  ممكن  التوضيح  اكثر   dbi   ماهو  ؟

Dbl وليست Dbi  اختصار لـــ Double

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

ومشاركة في توضيح الفرق بين نوعي المتغيرات

المتغير من نوع Integer لتخزن الأرقام الصحيحة ( بدون أعشار ) ، بينما المتغير من نوع Double يستخدم لتخزين الأرقام العشرية ( بما في ذلك الأعشار ) .

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

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