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

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

قام بنشر

السلام عليكم ورحمة الله وبركاته

هذه دعوة كريمة لتجربة الأداة الجديدة والفريدة من نوعها :
 دكتور ال VBA

وضائف الأداة

1- تحويل الكود إلى صيغة متوافقة مع النواتين 32 و 64 بت.
2-
تصحيح الأخطاء البرمجية في الكود.
3-
تنسيق وترتيب الكود شكليا.
4-
كتابة التعليقات وشرح للكود باللغتين العربية والإنجليزية.
5-
إضافة صائد الأخطاء للكود وذلك لتعقب الأخطاء البرمجية.
6-
إضافة ترقيم لأسطر الكود.

يمكنك اختيار واحد من هذه الوظائف أو تختار من بينها ما تريده.

الأداة مخصصة لأكواد ال VBA وتعتمد على قدرات الذكاء الاصطناعي لإعطاء نتائج دقيقة ومبهرة .. 😁🏻
اختصر على نفسك الوقت والجهد واعمل بذكاء 😉👌🏻

رابط الأداة :
https://vba-code-doctor-471932697586.us-west1.run.app/

يمكنك فتحها في الهاتف أو الحاسوب على راحتك 😎🌷

جربوها وعطوني رأيكم 😇🏻

image.png.1e0a094580b5d3a21cdb0e01ce10fc56.png 

::  إضافة جديدة  ::

لتحقيق مرونة أكبر للمستخدم ، أضفت حقل خاص بكتابة تعليمات مخصصة توجهها للذكاء الاصطناعي بحيث يراعيها عند معالجة الطلب ، مثال : ( قم بتغيير أسماء المتغيرات لأسماء مقروءة ، أو قم بتقسيم جملة SQL لعدة أسطر هكذا ....... ، أو ، أو ) أكتب ما شئت 🙂image.png.2d9202f1b874d8e610a78435b431b975.png 

image.png.02664e93e699868fc9542632e7cc823f.png

  • Like 4
قام بنشر

جزاك الله خيرا

جربتها على كود اعمل عليه فعلا الآن

النتيجة ممتازة .. خاصة الترتيب والتعليق

ايضا التصحيح فقد اضاف لي اغلاق وانهاء مجموعة السجلات

ولكني حين نقلته الى الفورم .. ظهر لي خطأ في سطر DlookUp  لم احقق في السبب

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

وضعت الموقع في شريط المفضلة لتكون هذه التحفة قريبا مني .. 

  • Like 1
قام بنشر
46 دقائق مضت, ابوخليل said:

ظهر لي خطأ في سطر DlookUp  لم احقق في السبب

أسعدك الله عمي أبوخليل 🙂 ..
مرورك دائما له أثر .. 🌹
فأنت تشجع .. تتفاعل .. تنصح .. وتترك فينا الأثر 😊


ياريت بعد ما يتبين لك السبب تنبهنا .. وهل يتم تعديل الخطأ لو أعدت المحاولة مرة أخرى ؟ ..
هذا لأجل تطوير الأداة ..

وهل هناك أفكار أخرى (احتياجات) يمكن إضافتها ؟

قام بنشر

عجيب .. عجيب

يبدو انك عدلت على شيء ما

اعدت التجربة .. والنتيجة كانت مذهلة

التعديلات التي اجراها :

تنظيم الكود .. بحيث جعل جميع الاعلانات عن المتغيرات في الأعلى

بدل شرط الحقل النصي في الدوال بالمتغير وكذلك في جملة sql استبدل الدالة بالمتغير  .. عفريت برمجي

اضاف لي متغير اسم الموظف غفلت عن نقله من العمل السابق ... هذه الاضافة لا تخطر على بال المحترفين الا بعد عناء

اغلاق السجلات عند نهاية كل شرط .. الحقيقة هذه الحركة تحفة

هذه صورة من الخيارات التي استخدمتها :

image.jpeg.a8ebb069182f3e8d60dd51f4dbd7d388.jpeg

 

وهذا الكود الاصلي :

Private Sub id_AfterUpdate()
EmpUserid = id
Dim mylevl As Boolean
mylevl = Nz(DLookup("Emp_user", "tblEmpNames", "Emp_user='" & Me.id & "'"), 0)
EmpFatrah = Nz(DLookup("fatrah", "tblEmpNames", "Emp_user='" & Me.id & "'"), 0)
If mylevl = False Then
Beep
Me.LabelH.Caption = "خطأ!! .. الادخال غير صحيح"
Me.TimerInterval = 3000
id = ""
id.SetFocus
Exit Sub
End If

Dim rs As Recordset
Dim strSql As String
strSql = "SELECT TOP 1 tblCheckINOut.id, tblCheckINOut.EmpUser, tblCheckINOut.chekInOut, tblCheckINOut.chkio, tblCheckINOut.ftra_id " & vbCrLf & _
"FROM tblCheckINOut " & vbCrLf & _
"WHERE (((tblCheckINOut.EmpUser)=funEmpUserid())) " & vbCrLf & _
"ORDER BY tblCheckINOut.id DESC;"
Set rs = CurrentDb.OpenRecordset(strSql)

If rs.RecordCount = 0 Then
rs.AddNew
rs!EmpUser = id
rs!chekInOut = Now()
rs!chkio = "I"
rs!ftra_id = EmpFatrah
Me.txtnm = empName
LabelH.Caption = "حضور"
Me.Requery
Me.TimerInterval = 3000
Me.id = ""
Me.id.SetFocus
rs.Update
Exit Sub
End If

Dim waitTime As Integer
Dim AdTim As Date
waitTime = Nz(DLookup("waitBtween", "tblTimeCtrl"), 0)
AdTim = DateAdd("n", waitTime, rs!chekInOut)
If Now() < AdTim Then
Me.id.SetFocus
Beep
Me.LabelH.Caption = "توقيع مكرر !! انتظر قليلا ..."
id = ""
Me.TimerInterval = 3000
id.SetFocus
Exit Sub
Else

If rs!chkio = "I" Then
rs.AddNew
rs!EmpUser = EmpUserid
rs!chekInOut = Now()
rs!chkio = "O"
rs!ftra_id = EmpFatrah
Me.txtnm = empName
LabelH.Caption = "انصراف"
Me.Requery
Me.id = ""
Me.TimerInterval = 3000
Me.id.SetFocus
rs.Update
Exit Sub

ElseIf rs!chkio = "O" Then
rs.AddNew
rs!EmpUser = EmpUserid
rs!chekInOut = Now()
rs!chkio = "I"
rs!ftra_id = EmpFatrah
Me.txtnm = empName
LabelH.Caption = "حضور"
Me.Requery
Me.TimerInterval = 3000
Me.id = ""
Me.id.SetFocus
rs.Update
Exit Sub
End If
End If
End Sub

وهذه هي النتيجة الرائعة :


Private Sub id_AfterUpdate()
    Dim EmpUserid As Variant
    Dim mylevl As Boolean
    Dim EmpFatrah As Variant
    Dim rs As DAO.Recordset
    Dim strSql As String
    Dim waitTime As Integer
    Dim AdTim As Date
    Dim empName As String ' Declare empName

    EmpUserid = Me.id

    ' Corrected logic for mylevl to check for user existence
    mylevl = Not IsNull(DLookup("Emp_user", "tblEmpNames", "Emp_user='" & EmpUserid & "'"))
    EmpFatrah = Nz(DLookup("fatrah", "tblEmpNames", "Emp_user='" & EmpUserid & "'"), 0)

    If mylevl = False Then
        Beep
        Me.LabelH.Caption = "خطأ!! .. الادخال غير صحيح"
        Me.TimerInterval = 3000
        Me.id = ""
        Me.id.SetFocus
        Exit Sub
    End If

    ' Lookup empName once after confirming user existence
    empName = Nz(DLookup("Emp_Name", "tblEmpNames", "Emp_user='" & EmpUserid & "'"), "")

    strSql = "SELECT TOP 1 tblCheckINOut.id, tblCheckINOut.EmpUser, tblCheckINOut.chekInOut, tblCheckINOut.chkio, tblCheckINOut.ftra_id " & vbCrLf & _
             "FROM tblCheckINOut " & vbCrLf & _
             "WHERE (((tblCheckINOut.EmpUser)='" & EmpUserid & "')) " & vbCrLf & _
             "ORDER BY tblCheckINOut.id DESC;"
    Set rs = CurrentDb.OpenRecordset(strSql)

    If rs.RecordCount = 0 Then
        rs.AddNew
        rs!EmpUser = EmpUserid
        rs!chekInOut = Now()
        rs!chkio = "I"
        rs!ftra_id = EmpFatrah
        Me.txtnm = empName
        Me.LabelH.Caption = "حضور"
        Me.Requery
        Me.TimerInterval = 3000
        Me.id = ""
        Me.id.SetFocus
        rs.Update
        rs.Close
        Set rs = Nothing
        Exit Sub
    End If

    waitTime = Nz(DLookup("waitBtween", "tblTimeCtrl"), 0)
    AdTim = DateAdd("n", waitTime, rs!chekInOut)

    If Now() < AdTim Then
        Me.id.SetFocus
        Beep
        Me.LabelH.Caption = "توقيع مكرر !! انتظر قليلا ..."
        Me.id = ""
        Me.TimerInterval = 3000
        Me.id.SetFocus
        rs.Close
        Set rs = Nothing
        Exit Sub
    Else
        If rs!chkio = "I" Then
            rs.AddNew
            rs!EmpUser = EmpUserid
            rs!chekInOut = Now()
            rs!chkio = "O"
            rs!ftra_id = EmpFatrah
            Me.txtnm = empName
            Me.LabelH.Caption = "انصراف"
            Me.Requery
            Me.id = ""
            Me.TimerInterval = 3000
            Me.id.SetFocus
            rs.Update
            rs.Close
            Set rs = Nothing
            Exit Sub
        ElseIf rs!chkio = "O" Then
            rs.AddNew
            rs!EmpUser = EmpUserid
            rs!chekInOut = Now()
            rs!chkio = "I"
            rs!ftra_id = EmpFatrah
            Me.txtnm = empName
            Me.LabelH.Caption = "حضور"
            Me.Requery
            Me.TimerInterval = 3000
            Me.id = ""
            Me.id.SetFocus
            rs.Update
            rs.Close
            Set rs = Nothing
            Exit Sub
        End If
    End If
End Sub

 

صحيح هو اضاف لي هذا المتغير :

 

 Dim EmpUserid As Variant

ولكن هذا المتغير تم الاعلان عنه في الوحدة النمطية كمتغير عام

وانا لا الومه لانه لا يعلم وليس له الا الظاهر  ☺️

  • Like 1
قام بنشر (معدل)

الأداة رائعة

 

ولكن اشتغلت معي مرة واحدة وبعدها يظهر لي الخطأ: حدث خطأ أثناء الاتصال بخدمة الذكاء الاصطناعي

تم تعديل بواسطه Lamyaa
  • Like 1
قام بنشر
13 ساعات مضت, Lamyaa said:

ولكن اشتغلت معي مرة واحدة وبعدها يظهر لي الخطأ: حدث خطأ أثناء الاتصال بخدمة الذكاء الاصطناعي

لا تزال تعمل .. حاول مرة أخرى 👍🙂 .

 

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

يبدو انك عدلت على شيء ما

اعدت التجربة .. والنتيجة كانت مذهلة

الحمدلله على النعمة ... 🙂 
طبيعة الذكاء الاصطناعي تكمن في أنه مع كل عملية معالجة، يتم تحليل البيانات بناءً على خوارزميات متقدمة تأخذ في الاعتبار سياقات متنوعة، مما يضمن تقديم ردود مميزة ومختلفة في كل مرة بحيث تتناسب مع احتياجات المستخدم.

قام بنشر
6 ساعات مضت, Moosak said:

لا تزال تعمل .. حاول مرة أخرى 👍🙂 .

 

الحمدلله على النعمة ... 🙂 
طبيعة الذكاء الاصطناعي تكمن في أنه مع كل عملية معالجة، يتم تحليل البيانات بناءً على خوارزميات متقدمة تأخذ في الاعتبار سياقات متنوعة، مما يضمن تقديم ردود مميزة ومختلفة في كل مرة بحيث تتناسب مع احتياجات المستخدم.

image.png.b7298bf2979ad58a4e633c31213063a3.png

قام بنشر

يا سلااااااااااام عليك ..

خطوة جميلة ومفيدة جداً .. :clapping:

أحسن الله إليك مهندسنا الغالي ..

يبقى الأمر مرهون بالاتصال بالانترنت ( حتى لو بدون أخطاء عند الإتصال بسيرفر الموقع الذي يغذي النتيجة ) ..

 

جزاكم الله كل الخير ، وأحسن إليك و لوالديك :wub:

  • Like 1
قام بنشر
3 ساعات مضت, Lamyaa said:

image.png.b7298bf2979ad58a4e633c31213063a3.png

لا أعلم ما السبب حقيقة .. لكن هل عندما تجرب من أجهزة مختلفة تحصل على نفس النتيجة ؟

1 ساعه مضت, Foksh said:

بقى الأمر مرهون بالاتصال بالانترنت ( حتى لو بدون أخطاء عند الإتصال بسيرفر الموقع الذي يغذي النتيجة ) ..

خطوة عزيزة حبيبنا الغالي 😊🌹
الأداة سرها العجيب هو كود الـ API والمربوط بال Gemini لذلك مثلما لايمكنك فتح الأيميل بدون إنترنت فهذه كذلك 😅
أستخدمها أول الشهر (لما ينزل الراتب وتسدد فاتورة النت) وصبر نفسك آخر الشهر 😂🖐
 

  • Like 1
قام بنشر
في 29‏/11‏/2025 at 10:16, Moosak said:

السلام عليكم ورحمة الله وبركاته

هذه دعوة كريمة لتجربة الأداة الجديدة والفريدة من نوعها :
 دكتور ال VBA

وضائف الأداة

1- تحويل الكود إلى صيغة متوافقة مع النواتين 32 و 64 بت.
2-
تصحيح الأخطاء البرمجية في الكود.
3-
تنسيق وترتيب الكود شكليا.
4-
كتابة التعليقات وشرح للكود باللغتين العربية والإنجليزية.
5-
إضافة صائد الأخطاء للكود وذلك لتعقب الأخطاء البرمجية.
6-
إضافة ترقيم لأسطر الكود.

يمكنك اختيار واحد من هذه الوظائف أو تختار من بينها ما تريده.

الأداة مخصصة لأكواد ال VBA وتعتمد على قدرات الذكاء الاصطناعي لإعطاء نتائج دقيقة ومبهرة .. 😁🏻
اختصر على نفسك الوقت والجهد واعمل بذكاء 😉👌🏻

رابط الأداة :
https://vba-code-doctor-471932697586.us-west1.run.app/

يمكنك فتحها في الهاتف أو الحاسوب على راحتك 😎🌷

جربوها وعطوني رأيكم 😇🏻

image.png.1e0a094580b5d3a21cdb0e01ce10fc56.png 



ما شاء الله مبدع كما تعودنا منك 

  • Like 1
قام بنشر

بارك الله فيك استاذنا الكريم Moosak وبالتأكيد خطوة ممتازة ستفيد الجميع .. ولكن فى حالة اذا كان نظام التشغيل عندى 64 بت والملف مصمم على 32 بت , أصلا لا يمكننى الملف عند الفتح الوصول الى الأكواد لكى أستفيد بهذه الميزة

1- تحويل الكود إلى صيغة متوافقة مع النواتين 32 و 64 بت

فما هو الحل فى هذه الحالة ؟!!!

 

Screenshot 2025-12-02 092920.png

قام بنشر
7 ساعات مضت, مهند محسن said:

فى حالة اذا كان نظام التشغيل عندى 64 بت والملف مصمم على 32 بت , أصلا لا يمكننى الملف عند الفتح الوصول الى الأكواد لكى أستفيد بهذه الميزة

أفتح البرنامج عن طريق الضغط على زر الشفت Shift  لكي تصل إلى الأكواد .. وبعدها قم بتحويل الأكواد وأعد تشغيل البرنامج 🙂 

  • Like 1
قام بنشر

بعد إذن مهندسنا الغالي ..

إذا كان ملفك بصيغة Accde فلن تصل للأكواد أبداً .

  • Like 1
  • Thanks 1
  • 3 weeks later...
قام بنشر

مـــــبدع مهندســـنا  الطيب , جزاك الله خير الجزاء

  • Thanks 1
قام بنشر

السلام عليكم

انجاز عظيم بارك الله بجهودك استاذي الفاضل فعلا اداة رهيبة استعملت كل الخيارات فيها ولتهت بنتائج مبهرة بامتياز

جعله الله في ميزان حسناتك استاذي الكريم :fff::fff::fff:

  • Like 1
  • 3 weeks later...
قام بنشر
في 29‏/11‏/2025 at 19:42, ابوخليل said:
    strSql = "SELECT TOP 1 tblCheckINOut.id, tblCheckINOut.EmpUser, tblCheckINOut.chekInOut, tblCheckINOut.chkio, tblCheckINOut.ftra_id " & vbCrLf & _
             "FROM tblCheckINOut " & vbCrLf & _
             "WHERE (((tblCheckINOut.EmpUser)='" & EmpUserid & "')) " & vbCrLf & _
             "ORDER BY tblCheckINOut.id DESC;"

السلام عليكم

اخوي موسى
بارك الله في جهودك، خطوة جبارة في الاتجاه الصحيح🙂

من بعض تجاربي مع الذكاء الاصطناعي، فتجربته مع لغة VBA ليست كما نتمناها، وبما انك دكتور هذه الاداة، فاليك بعض ملاحظاتي والتي يمكنك تلقينها له:
1. عند كتابة جملة SQL طويلة، فيجب مراعاة طول الجملة، وقد اعطاني مرارا جمل اطول من تلك التي يدعمها VBA، فكنت احصل على خطأ برمجي واضطر الى تعديلها يدويا.

كما نرى من جملة SQL التي عملها اخوي ابوخليل اعلاه، بأنه تم تقطيع السطر الى 4 اسطر، حتى يكون الكود واضحا للمستخدم، واتضح لي ان العدد الاكبر لهذه الاسطر هي 24 سطر، بينما كان عندي استعلام موحد يدمج 3 استعلامات في الكود بطول 73 سطر. فالطريقة الصحيحة لعمله هو:

    strSql = "SELECT TOP 1 tblCheckINOut.id, tblCheckINOut.EmpUser, tblCheckINOut.chekInOut, tblCheckINOut.chkio, tblCheckINOut.ftra_id "
    strSql = strSql & "FROM tblCheckINOut "
    strSql = strSql & "WHERE (((tblCheckINOut.EmpUser)='" & EmpUserid & "')) "
    strSql = strSql & "ORDER BY tblCheckINOut.id DESC;"

.

2. يجب اخبار ai انه عند طلب عمل دالة، فيجب عليه استعمال Function بدلا عن Sub.

 

جعفر

 

قام بنشر

وعليكم السلام ورحمة الله وبركاته عمي جعفر 🙂 

سعدت بمرورك 😊🌹

 

تمام إن شاء الله .. بإذن الله أصلحه ما أمكن .. وآتيك بالخبر اليقين .. 👍

 

  • Thanks 1
قام بنشر
1 ساعه مضت, jjafferr said:

السلام عليكم

اخوي موسى
بارك الله في جهودك، خطوة جبارة في الاتجاه الصحيح🙂

من بعض تجاربي مع الذكاء الاصطناعي، فتجربته مع لغة VBA ليست كما نتمناها، وبما انك دكتور هذه الاداة، فاليك بعض ملاحظاتي والتي يمكنك تلقينها له:
1. عند كتابة جملة SQL طويلة، فيجب مراعاة طول الجملة، وقد اعطاني مرارا جمل اطول من تلك التي يدعمها VBA، فكنت احصل على خطأ برمجي واضطر الى تعديلها يدويا.

كما نرى من جملة SQL التي عملها اخوي ابوخليل اعلاه، بأنه تم تقطيع السطر الى 4 اسطر، حتى يكون الكود واضحا للمستخدم، واتضح لي ان العدد الاكبر لهذه الاسطر هي 24 سطر، بينما كان عندي استعلام موحد يدمج 3 استعلامات في الكود بطول 73 سطر. فالطريقة الصحيحة لعمله هو:

    strSql = "SELECT TOP 1 tblCheckINOut.id, tblCheckINOut.EmpUser, tblCheckINOut.chekInOut, tblCheckINOut.chkio, tblCheckINOut.ftra_id "
    strSql = strSql & "FROM tblCheckINOut "
    strSql = strSql & "WHERE (((tblCheckINOut.EmpUser)='" & EmpUserid & "')) "
    strSql = strSql & "ORDER BY tblCheckINOut.id DESC;"

.

2. يجب اخبار ai انه عند طلب عمل دالة، فيجب عليه استعمال Function بدلا عن Sub.

 

جعفر

 

تم عمل بعض التعديلات عمي جعفر .. مع التنويه إلى أن هذه الأداة لاتقوم بكتابة الأكواد بناءً على الطلبات !

بل وظيفتها تعديل وتحسين الكود الذي تعطيها إياه وتصحيح الأخطاء الموجودة فيه بالإضافة للخدمات الأخرى :
image.png.004ea2a0db255f50446ac597cd9840a0.png

 

ولتحقيق مرونة أكبر للمستخدم ، أضفت حقل خاص بكتابة تعليمات مخصصة توجهها للذكاء الاصطناعي بحيث يراعيها عند معالجة الطلب ، مثال : ( قم بتغيير أسماء المتغيرات لأسماء مقروءة ، أو قم تقسيم جملة SQL لعدة أسطر هكذا ....... ، أو ، أو ) أكتب ما شئت 🙂 

image.png.02664e93e699868fc9542632e7cc823f.png

 

وبعد التجربة على الجملة التي أوردتها :

    strSql = "SELECT TOP 1 tblCheckINOut.id, tblCheckINOut.EmpUser, tblCheckINOut.chekInOut, tblCheckINOut.chkio, tblCheckINOut.ftra_id " & vbCrLf & _
             "FROM tblCheckINOut " & vbCrLf & _
             "WHERE (((tblCheckINOut.EmpUser)='" & EmpUserid & "')) " & vbCrLf & _
             "ORDER BY tblCheckINOut.id DESC;"

كانت النتيجة :

Option Explicit

Dim strSql As String

strSql = "SELECT TOP 1 tblCheckINOut.id, tblCheckINOut.EmpUser, tblCheckINOut.chekInOut, tblCheckINOut.chkio, tblCheckINOut.ftra_id "
strSql = strSql & "FROM tblCheckINOut "
strSql = strSql & "WHERE (((tblCheckINOut.EmpUser)='" & EmpUserid & "')) "
strSql = strSql & "ORDER BY tblCheckINOut.id DESC;"

وكانت هذه هي التعليمات الإضافية : 
قم بتقسيم جملة SQL لعدة أسطر  بهذا الأسلوب :    strSql = strSql & " "

  • Like 1

انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد

يجب ان تكون عضوا لدينا لتتمكن من التعليق

انشئ حساب جديد

سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .

سجل حساب جديد

تسجيل دخول

هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.

سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information