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

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

قام بنشر

السلام عليكم

عملت تكست بوكس بإسم 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
قام بنشر

 

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

Dim i As Integer, x As Integer

 

قام بنشر
7 دقائق مضت, العبيدي رعد said:

ماهو الحل  إذن  ؟

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

قام بنشر
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
قام بنشر

أخي @العبيدي رعد ، نود تذكيرك بإغلاق الموضوع ، اذا انتهت مشكلتك في هذا الموضوع ، فقط اختر الإجابة كأفضل إجابة Like.png.ca4dbd3b7b450d2b1a051a679142599e.png

  • 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