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

السيد عبد العال

الخبراء
  • Posts

    125
  • تاريخ الانضمام

  • تاريخ اخر زياره

كل منشورات العضو السيد عبد العال

  1. It was Created and Tested in Axess XP Please tell us the Error Messege..
  2. مثال الأخ مصلح الحريصى فى هذا الموضوع تشغيل ملف صوتي من خلل اكسس مع خالص التحية والاحترام
  3. عذرا على المداخلة ........ فى الحقيقة لا أدرى مدى صحةالكود السابق If Opt1.Visible = True Then Form_MM.Visible = True فهو لم يعمل معى ويولد رسالة خطأ Object Required وهذا خاص بالجزء الثانى من الجملة أما الجزء الأول فهو ينفذ الجزء الثانى فى حالة أن Opt1.Visable=true واعتقد ان المطلوب هو تنفيذ الجزء عندما يكون قد تم اختيار opt1 والتى يعبر عنها هكذا opt1.value=true واعتقد ان الجملة التى تؤدى الغرض هى كما يلى Private Sub COM1_Click() If Opt1.Value = True Then DoCmd.OpenForm "MM" End Sub
  4. السلام عليكم قمت بتغير اسماء الحقول للأنجليزية لسهولة بناء المعادلات الان لدينا جدول دخول Material text QntyIn Number DateIn Date/Time جدول خروجية Material text QntyOut Number DateOut Date/Time استعلام توحيد اسمه AllQnty عبارة عن جملة SQL SELECT خروجية.Material, 0 AS Qntyin, خروجية.QntyOut AS QntyOut, خروجية.DateOut AS [date], "خروجية" AS Act FROM خروجية UNION SELECT دخول.Material, دخول.QntyIn AS Qntyin, 0 AS QntyOut, دخول.DateIn AS [date], "دخولية" AS Actv FROM دخول; نصمم تقرير جديد مبنى على الاستعلام AllQnty نعمل تجميع بحقل Material وترتيب بحقل date ونضيف الحقول التالية فى مقطع Datil Material وQntyin و QntyOut وdate و Act نضيف مربع نص ونسميه InStoke وفى خاصية Running Sum نختار Over Group نضع به المعادلة التالية =[Qntyin]-[QntyOut] وهذا هو المطلوب فى حقل بلانص وهناك طريقة معقدة بعض الشئ وهو احتساب الرصيد فى استعلام عن طريق الدالة DSum مع وضع شروط التجميع بالمادة والتاريخ بفرض ان هذا الستعلام اسمه Remaining فهذه جملة Sql الخاصة به ويمكن أيضا عمله عن طريق اتلصميم SELECT AllQnty.Material, AllQnty.Qntyin, AllQnty.QntyOut, AllQnty.date, AllQnty.Act, DSum("[qntyin]-[qntyout]","AllQnty","Material='" & [Material] & "' And Date <= DateSerial(" & Year([date]) & "," & Month([date]) & "," & Day([date]) & ")") AS InStroke FROM AllQnty ORDER BY AllQnty.Material, AllQnty.date; Store.zip
  5. قمت فى السطر الثانى بتغيير الصنف الى صنف_1 مثل السابق له وقيمة المشتريات إلى 50 فأعطى الرصيد 250 ؟؟
  6. مرحبا بك اخانا الكريم اعتقد ان انسب حل هو ما يدعى Union Query وهواستعلام ينتج عنه دمج الجدولين فى استعلام جديد من query اختار New من قائمة Query اختار Sql -Spesfic ثم ->union قم بكتابة جملة SQL الاتية SELECT خروجية.اسم, خروجية.[عدد خروجية] AS qnty, خروجية.[تأريخ خروجية] AS [date], "خروجية" AS Act FROM خروجية union SELECT دخول.اسم, دخول.[عدد دخول] AS qnty, دخول.[تأريخ دخول] AS [date], "دخولية" AS Actv FROM دخول; أو يمكن كتابة الجملة مباشرة فى record Source فى التقرير يمكن مراجعة هذا المثال لاستاذنا أبو هادى وكذلك الموضوع الاتي شرح استعلامات التوحيد الدرس رقم 11مع خالص الحب كما توجد عدة أمثلة أخري فى قسم الاستعلامات بالارشيف
  7. أستاذنا الكبير أبو هادى... جزاكم الله خير على هذه الإبداعة الرائعة والحقيقة لم يخطر ببالى مثل هذا الاستخدام لدالة SumIf الأخ الفاضل fut ارجو مراجعة طريقة استخدامك للملف المرفق فالموضوع ببساطة ..هذا معنى معادلة حساب الرصيد: للصنف الحالى قم بتجميع كل المشتريات من البداية حتى السطر الحالى واطرح منه تجميع كل المبيعات من البداية حتى السطر الحالى وهذه متابعة صنف1 صف2: اشترينا 200 وبعنا 0 الرصيد 200 صف6: اشترينا 0 وبعنا 100 الرصيد 100 صف7: اشترينا 150 وبعنا 0 الرصيد 250 ولا توجد مشكلة؟
  8. [BB].Form![CC].Form![44] = [BB].Form![22] [BB].Form![CC].Form![2] = [BB].Form![1] [Text2A] = [BB].Form![CC].Form![2]
  9. لا أدرى أذا كان هذا المقترح يناسبك أم لا ........ installment.zip
  10. السلام عليكم ورحمة وبركاته وبعد ....... 1- لزيادة عدد الحسابات: قم بإدراج 5 أعمدة فارغة بعد أخر حساب _حساب 4 - وقم بتعديل العنوان فى الصف الاول ....وسيقوم النمموذج بالعرف عليهم عند استدعائه 2- أمكانية تغيير قيمة القسط: الخلية بها معادلة ولذلك لا يعطى النموذج امكانية التعديل بها: يمكنك الغاء المعادلة وفى هذه الحالة سيتاح تعديلها من النموذج أو اضافة عمود وتغيير العنوان فى الصف الاول وبذلك يمكن ادخال قيمة القسط من النموذج وتخزينها فى الجدول مع مقارنتها بالمجموع الموجود ملحوظة : الح الاقصى لعدد الحقول التى يمكن التعامل معها من خلال النموذج هو 32 حقل 3- مسألة معرفة من لم يسدد القسط فيجب تجهيز مكان لتسجل فيه بيانات السداد ثم عمل التحليل المناسب لمعرفة من لم يسدد وقد سبق ان تعرضنا لعمل غير كامل فى موضوع مشابه فى الاكسس يمكن مراجعته وممكن ايضا تطويره اذا كان مناسبا طلب المساعدة لعمل برنامج تقسيط السيارات
  11. Sub GotoMax() Dim MaxValue As Single Dim MaxRef As String Dim Ccell As Range MaxValue = -3.402823E+38 For Each Ccell In Selection If Ccell.Value > MaxValue Then MaxValue = Ccell.Value MaxRef = Ccell.AddressLocal End If Next If MaxValue = -3.402823E+38 Then MsgBox " No Max!!": Exit Sub Range(MaxRef).Select MsgBox "The Max Ni is " & MaxValue & " at Cell " & MaxRef End Sub يتم اختيار الخلايا المطلوبة ثم استدعاء الماكرو فى حالة وجود اكثر من قيمة سيتم اختيار الاولى
  12. بفرض أن D3=20 E3=26 F3=11 والمطلوب وضع قيمة اكبر قيمة فى الخلية C3 وضع عنوان الخلية التى تحتوى أكبر قيمة فى الخلية B2 أولا : عن طريق المعادلات: نكتب هذه المعادلة فى C3 =MAX(D3:F3) النتيجة 26 نكتب هذه المعادلة فى B2 =ADDRESS(ROW(D3),COLUMN(D3)+MATCH(C3,D3:F3,0)-1) النتيجة $E$3
  13. طبعا أذا كان الموضوع ضرورى ممكن تعديل الكود او حتى كتابة كود جديد وعموما هذه بعض المقترحات : 1- يمكن الستعاضة عن الدائرة الحمراء بمستطيل عن طريق التنسيق الشرطى 2-يمكن كتابة معادلة تكتب جملة مثل : ناجح ومنقول للصف .. له دور ثانى فى .. 3- يمكن استخدام Check Boxes بجوار الاختيارات ويتم عمل علامة صح بجوار الحالة الصحيحة .......
  14. تعدل Sub Report_Open كالتلى Private Sub Report_Open(Cancel As Integer) On Error GoTo Report_Open_Err NumPerPage = InputBox("أدخل العدد فى كل صفحة", "برنامج التنسيق", "46") If NumPerPage = 0 Or NumPerPage > 46 Then NumPerPage = 46 Exit Sub Report_Open_Err: If Err.Number = 13 Then Rem Cancel = True Err.Clear Rem MsgBox "The Report will stop .." Rem Exit Sub Else MsgBox Err.Number & " : " & Error Err.Clear End If Resume Next End Sub هذا بفرض انه فى حالة ضغط Cancel سنستمر فى استكمال فتح التقرير بالقيمة الافتراضية 46 أما أذا كان ضغط Cancel يعنى أيقاف التقرير فيتم أزالة 3 كلمات Rem فى الكود السابق فتخرج رسالة للمستخدم انه سيتم أيقاف التقرير ..
  15. Assume that The name of Combo Box is SelectCombo and you Filled its list by 2 Text "NEmber 1" and "Number 2" and you have tow Battons the First has Name= Command1 and Caption =Number 1 the Second has Name= Command2 and Caption =Number 2 Add this Code in Even AfterUpdate For SelectCombo Private Sub SelectCombo_AfterUpdate() Select Case SelectCombo Case "Number 1" [Command1].Enabled = True [Command2].Enabled = False Case "Number 2" [Command1].Enabled = False [Command2].Enabled = True End Select End Sub
  16. الاستاذ/ أحمد العيسى مرفق الملف وبه التعديلات المطلوبة ويفضل أن لا يتم الاعتماد على الترقيم فى التقرير والأفضل أن يضاف حقل يسجل فيه الفصل ثم فى التقرير يتم التجميع بحقل الفصل MultiColRep.rar
  17. أخى الكريم أعتقد اننا أجبنا على السؤال http://www.officena.net/ib/index.php?showtopic=3640&st=0& وأرى انك صنعت التقرير بالفعل فى المشاركة التالية http://www.officena.net/ib/index.php?showtopic=3710
  18. وهناك حل افضل قليلا وهو ربط غلق البرنامج بحدوث Screen Saver فعليا وربما كان ذللك معبرا فعليا عن المستخدم كف عن استخدام البرنامج وكذلك ان ضبط screen Saver معبر عن رغبة المستخدم بدلا من تضايقه من غلق البرنامج قصرا عنه الخطوات: 1-ندخل Module ونكتب فيه ننقل فيه الأكود الاتية 'http://www.littleguru.com '================================= Public Declare Function EnumWindows& Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) Public Declare Function GetWindowText& Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) Private strAppTitle As String Private lngHwnd As Long Public Function IsRunning&(strTitle As String) lngHwnd = 0 strAppTitle = strTitle EnumWindows AddressOf EnumWinProc, 0 If lngHwnd <> 0 Then IsRunning = lngHwnd Else IsRunning = 0 End If End Function Private Function EnumWinProc&(ByVal lhWnd As Long, ByVal lParam As Long) Dim WinTitleBuf As String * 255 Dim WinTitle As String GetWindowText lhWnd, WinTitleBuf, 255 WinTitle = StripNulls(WinTitleBuf) If InStr(WinTitle, strAppTitle) <> 0 Then lngHwnd = lhWnd EnumWinProc = False Exit Function End If EnumWinProc = True End Function Private Function StripNulls(OriginalStr As String) As String If (InStr(OriginalStr, Chr(0)) > 0) Then OriginalStr = Left(OriginalStr, InStr(OriginalStr, Chr(0)) - 1) End If StripNulls = OriginalStr End Function 2- فى النموذج نضع الفاصل الزمنى المناسب بالمللى ثانية وهذا الفاصل لا يستخدم لغلق البرنامج بل كل فاصل زمنى يتم اختبار ما إذا كان الscreen Saver يعمل فإذا كان يعمل يقوم بغلق البرنامج ويتم نسخ هذا الكود فى حدث OnTimer للنموذج : Private Sub Form_Timer() Dim strApp As String strApp = "Screen Saver" If IsRunning(strApp) > 0 Then Application.Quit End If End Sub وما زال يعيبها أن تتم من خلال نموذج ولا يوجد حدث فى Application لكى يتم ربط الدالة به ..... مع تحياتى وخالص الشكر للاستاذ أبى أفنان على هديته أكواد خاصة بالكسس
  19. فى الحقيقة الطريقة السابقة تغلق قاعدة البينات اتوماتيكيا بعد 10000 مللى ثانية ولكن ليس هذا هو المطلوب تماما وذلك لأن قاعدة البيانات ستغلق حتى لو كان المستخدم يستخدم الفأرة ولوحة المفاتيح أى الغلق يتم دونما شرط او قيد يكون تعديلها بالطريقة الاتية 1-ندخل Module ونكتب فيه الجملة الاتية Global SumofEvents1 As Integer, SumofEvents2 As Integer 2- فى النموذج يتم عمل الاتى خاصية Timer Interavels =180000 (milli-Second) تكتب هذه الدوال فى كود النموذج Private Sub Form_KeyPress(KeyAscii As Integer) If SumofEvents1 > 32000 Then SumofEvents1 = -32000 SumofEvents1 = SumofEvents1 + 1 End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If SumofEvents1 > 32000 Then SumofEvents1 = -32000 SumofEvents1 = SumofEvents1 + 1 End Sub Private Sub Form_Timer() If SumofEvents1 = SumofEvents2 Then Application.Quit Else SumofEvents2 = SumofEvents1 End If End Sub والفكرة أنه يتم تعريف متغيريين ونقوم بيادة 1على المتغير الأول عند حدوث أى حدث - يمكن تكرار S Sub Form_MouseMove فى كل الأحداث المطلوب ان تعبر عن ان المستخدم متواجد أمام الكمبيوتر كل فاصل زمنى تقوم Sub Form_Timer بتخزين القيمة عند هذا الفاصل غى المتغير وكل فاصل زمنى تقوم باختبار المتغييرن ومعنى تساويهما أنه لم يتم أى حدث بين الفاصلين وهنا نغلق قاعدة البينات العيوب: 1-يجب تكرار الدوال لكل مقاطع النموذج حيث أن تحرك الماوس على مقطع Detail بسسب الحدث Detail_MouseMove وهكذا 2- فى حالة عمل Minemize للنموذج لن يسجل أى أحداث للماوس والكيبورد مما قد يؤدى ألى غلق قاعدة البيانات بينما المستعمل يقوم بأحداث على مكان أخر 3-أيضا فى حالة فتح نموذج الى هذا النموذج بمساحة أكبر يستقبل النموذج الثانى كل الأحداث وتؤدى إلى النتيجة السابقة
  20. اثناء محاولة عمل كود الدائرة الحمراء فى الوورد -بناء على طلب الاستاذ محمد البدرى وكمحاولة للالتفاف حول بعض المشاكل فى الورد ةوصلت لطريقة أسهل فى الاستخدام ولكن أقل اتوماتيكية يتم العمل على خطوتين 1- أدخال الحد الادنى وفيها نختار مجموعة معينة من الخلايا وننفذ ماكرو SetMinDegree فتسأل عن الحد الأدنى وتقوم بتخزينه فى مكان غير ظاهر بالخلية 2- بعد ادخال الدرجات يتم استدعاء ماكرو أخرى لرسم الدوائر وعيب هذه الطريقة انه يجب استدعاءها بعد التعديلات وميزتها انه يمكن تلافى جميع المشاكل السابقة إذا شاء ربنا وقدر اكتبها وأعرضها عليكم - كحل أضافى وتقبلوا تحياتى
  21. كمعادلات =iif([Frame1]=1,1,0) +iif([Frame2]=1,1,0) +iif([Frame3]=1,1,0) t1=(iif[OP1]=true;1,0) ككود If opt1=true Then T1=1 Else t1=0 وأن كان مسالة تثبيت الاجابة الصحيحة فى الخانة الاولى تعتبر نقطة ضعف فى البرنامج
  22. السلام عليكم ورحمة الله وبركاته - بالنسبة للطباعة فى اعمدة فهى كما صممتها فى تقريريك بالفعل وللكتابة بعرض الصفحات برجاء تجربة التى - File -> Page SetUp -> columns ستجد 3 كما وضعته آ فى Number of Columns 2- فى مقطع Column Size يتم إلغاء خاصية As Detail .وبذلك يتم تثبيت عرض الجزء المطبوع من التقرير ليصبح 6.33 مهما زاد عرض التقرير بعد ذلك فى التصميم 3- فى صفحة تصميم التقرير بعد ذللك يتم زيادة عرض التقرير ألى 21 سم مثلا 3- يتم عمل التعديلات بحيث أن مقطع ال Detail و راس وذيل المجموعات يكون فى حدود العرض المحدد سابق فى عرض العمود وهو 6.33 التعديل فى رأس وذيل التقرير ورأس وذيل الصفحة يكون فى حدود 21 سم اعتقد ان هذه القاعدة التى تحكم ذلك الموضوع مع الصبر والمحاولة فى حالة حدوث نتائج غير متوقعة نتيجة اتجاه الشيت من اليمين إلى الشمال أما من الناحية الاحترافية فقد تمنيت أن يكون العمل محتويا على كود يقوم بعملية التنسيق نفسها .. ونيابة عن الأخ الحبيب المهندس محمد طاهر فإليك هذه الهدية: http://www.officena.net/ib/index.php?showtopic=685 وبعد .. هذه محاولة لتنسيق الجهود: هل يمكن انتاج عمل عبارة عن قاعدة بيانات شاملة للمدارس يتم تأسيسها بحيث يتم توحيد اسماء االجداوال والحقول الخاصة بها تستطيع بعدها االجزئيات الشبيهة بهذا العمل وجدول الحصص والاختابارات والشهادات واى نقاط بحث جديدة قادرة على الاندماج مع هذا العمل ويتم التسيق بحيث إذا استلزم الامر يتم تعديل منظم للجداول الرئيسية قبل بدا العمل بحيث تكون البرمجية الجديدة أضافة لعمل متكامل وليست مجرد جزئية جميلة
×
×
  • اضف...

Important Information