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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    404

كل منشورات العضو jjafferr

  1. وعليكم السلام الاكسس لما يفتح الاستعلام ، فانه لا يعطيك بيانات كل السجلات دفعة واحدة ، وانما لتسريع العمل ، فانه يحسب قيم البيانات التي تظهر على الشاشة ، ولما تنزل للاسفل لترى اي سجل ، فيقوم الاكسس بحساب السجلات الجديدة التي على الشاشة مرة اخرى ، طيب والسجلات اللي شفناها سابقا ، ورجعنا نشوفها مرة ثانية ، فكذلك يقوم الاكسس بحساب قيمها ، لأن الاستعلام لا يملك طريقة لحفظ البيانات المحسوبة ، ولأن الاستعلام يستخدم وحدة نمطية تتغير فيها القيم ، فالارقام ستتغير كذلك بس للعلم ، نحن نواجه هذه المشكلة مع الوحدة النمطية ، وذلك بسبب طبيعة عمل الاستعلام في تغيير البيانات على اساس كل سجل ، وإلا ، فلا مشكلة باستخدام الوحدات النمطية للإستعلام لهذا السبب عندك طريقتين لحل هذا الموضوع: 1. عمل جدول مؤقت ، وارسال بيانات الاستعلام مباشرة الى الجدول ، ثم قراءة البيانات من الجدول ، وعمل الخطوة التالية ، 2. ارسال البيانات مباشرة الى التقرير ، جعفر
  2. تفضل لما تختار الملفات ، تستطيع تستخدم زر Ctrl او Shift او الضغط بالماوس والسحب على اسماء الملفات لإختيار الملفات المطلوبة ، وبعدما تختار ملفات من مجلد معين ، تستطيع مرة ثانية/ثالثة ان تختار ملفات اخرى من مجلدات مختلفة (لا تقول ما ادلعكم ) وبعدين في شغلة اريد اقولها ، انا لما قلت: مو تصدقون كل شئ اقوله جعفر 275.4.ImportDegrees.accdb.zip
  3. الله يرحمها ان شاء الله ويسكنها فسيح جنانه ، ويُلهمكم الصبر على فراقها ان شاء الله أحسن الله عزاءكم ، ولا اراكم الله مكروه في من تحبون انا لله وانا اليه راجعون
  4. خلينا نبدأ بالطريقة اللي تريدها انا وضعت الكثير من الامثلة ، فما اعرف ايهم تريدني اشتغل عليه ياريت ترفع البرنامج الصحيح علشان اشتغل عليه ان شاء الله جعفر
  5. الحمدلله ان الامور مشت تمام الرجاء فت ح موضوع جديد ووضع سؤالك هناك ، فشروط المنتدى لا تسمح بأكثر من سؤال في كل موضوع هذا الموضوغ يُغلق
  6. هذا من الاساسيات اللي لازم تعملها لما برنامجك يبدأ يشتغل ، من اول يوم لأن الجداول نادرا يصير لها Corruption ، بينما الطامة تصير في جزء النماذج / التقارير ... ، فلا تضيّع الشغل الكبير (البيانات) بسبب عدم تقسيم برنامجك جعفر
  7. تفضل هذا الرابط فيه حل لمشكلتك: http://www.officena.net/ib/topic/64955-مشكلة-عند-فتح-البرنامج-على-ويندوز-8/ جعفر
  8. لا ، لأن حجم برنامجك بيصير مثل الديناصور ، وبتضطر ان تستخدم الضغط والاصلاح دائما ، لإرجاعه الى حجمه الاصلي وبعدين اذا ما انتبهت ، حجم البرنامج المؤقت يوصل الى 85MB جعفر
  9. وعليكم السلام تفضل ياسيدي واضفت لك حركة ، فلما تريد تحذف بيانات بحث احد الحقلين ، انقر عليه مرتين ، وراح يتصفى Option Compare Database Private Sub cbogender_AfterUpdate() Call searchcriteria End Sub Private Sub cbogender_DblClick(Cancel As Integer) Me.cbogender = "" Call searchcriteria End Sub Private Sub cbotype_AfterUpdate() Call searchcriteria End Sub Function searchcriteria() Dim strtype, strgender As String Dim task, strcriteria As String If Len(Me.cbotype & "") = 0 Then strtype = "[type] like '*'" Else strtype = "[type]= '" & Me.cbotype & "'" End If 'Debug.Print strtype If Len(Me.cbogender & "") = 0 Then strgender = "[gender] like '*'" Else strgender = "[gender]= '" & Me.cbogender & "'" End If 'Debug.Print strgender strcriteria = strtype & " and " & strgender task = "select * from tbl_customers where " & strcriteria Me.customers_subform.Form.RecordSource = task Me.customers_subform.Form.Requery End Function Private Sub cbotype_DblClick(Cancel As Integer) Me.cbotype = "" Call searchcriteria End Sub Private Sub Form_Load() Me.cbotype = "" Me.cbogender = "" End Sub جعفر 263.المحاولة الرابعة.accdb.zip
  10. اعتقد هذا معناه ان نسخة الاكسس اللي انصبتها هي انجليزي فقط ، ولم تقم بنصب الاكسس باللغة العربية كذلك !! جعفر
  11. هذه نفس المشكلة التي اخبرتك عنها عن برنامجك ، انظر ملاحظتي اعلاه !! أفضل طريقة تعملها: اعمل ملف اكسس جديد ، ثم استورد جميع الكائنات (جداول ، نماذج ، ...) من برنامجك القديم الذي فيه المشكلة ، وجرب البرنامج الجديد من هنا تستورد: جعفر
  12. أختي هذه المعلومة لا تساعدنا في معرفة المشكلة ، فرجاء الايضاح ، وارفاق برنامجك ، والذي به التجربة التي قمتي بها ، حتى نُخبرك مكان الخطأ جعفر
  13. السلام عليكم أخي ابو وليد في الواقع برنامجك كان تحدي البارحة لما انزلت البرنامج ، وشغّلت استعلام المجاميع ، بدأت احسب مثل الاطفال ، وعديت العدد 600 (بس جزاك الله خير ، ارجعت الثقة في نفسي اني اقدر احسب لهذا العدد ) ، والاستعلام ما خلص وسيطر على الكمبيوتر ، وما رضى يتسكر ، فاضطررت ان اغلق البرنامج من Windows Task Manager احد الافكار اللي جائتني ، وهي عمل جدول مؤقت ، نخزن فيها البيانات من الاستعلام العادي ، وثم من هذا الجدول نعمل استعلام المجاميع ، وبدأت احسب مثل الاطفال ، وعديت العدد 600 ، والاستعلام ما خلص وسيطر على الكمبيوتر ، وما رضى يتسكر ، فاضطررت ان اغلق البرنامج من Windows Task Manager دخلت في الاستعلام وفككت الكود ، واتضح لي ان المشكلة هي هذا السطر: volume: [close]-Nz(DLookUp("close","Saudistock","ID = " & Nz(DMax("ID","Saudistock","tickerr = '" & [tickerr] & "' And ID < " & [ID]),0))) . يعني احنا ننادي الاوامر DLookup و DMax بعدد السجلات 541906 مرة (ومثل ما المثل العماني يقول: وابويا انا عليك) ، لأن هذه الاوامر اصلا ثقيلة في الاستعمال ، وللعلم ، كل امر من هذه الاوامر (DMax , DLookup, Dcount, Dlast, DMin, DFirst) عبارة عن استعلام ولكنه بصيغة امر تسهيلا للمستخدم ، ولاحظت ان المعادلة عبارة عن أمرين مستقلين ، ففككتهم عن بعض ، وفهمت اللي يعملونه ، ولكني كنت محتاج اشوف نتائج كل امر بطريقة مستقلة ، فشغلت الاستعلام ، وهذه النتيجة: . وبعد عدت تجارب ، استطعت ان اتخلص من هذا الكود ، بوحدة نمطية: ' Public old_i As Long Public old_c As Double Public old_t As Long ' Function Get_Previous(i, t, c) As Double 'i = ID 't = ticherr 'c = close If Val(t) <> Nz(old_t, 0) Then old_i = 0 old_c = 0 End If old_t = Val(t) Get_Previous = Format(c - Nz(old_c, 0), "#.000") 'DM = Nz(DMax("ID", "Saudistock", "tickerr = '" & [tickerr] & "' And ID < " & [ID]), 0) 'volume = [Close] - Nz(DLookup("close", "Saudistock", "ID = " & DM old_i = i old_c = c End Function . وعلشان تشغل الاستعلام (ليس استعلام المجاميع) ، لازم تستخدم النموذج علشان يعطي البيانات نتيجة صفر الاولية المطلوبة ولاحظت كذلك انك عامل فهرسة لجميع الحقول في الجدول ، وهذا يكبر حجم البرنامج وبدون مردود ، فحذفت فهرست هذه الحقول النتيجة: في المرفق برنامجين: برنامجك بدون بيانات ، وبرنامج للجدول المؤقت ، استخدم فهرست الحقول كما في البرنامج المرفق ، واربط الجدول اللي في البرنامج المؤقت ، ببرنامجك ، وعندها عندك طريقتين للعمل (النموذج فيه زرين): 1. سيقوم البرنامج بتفريغ بيانات الجدول المؤقت ، ثم الاستعلام العادي سيُلحق البيانات جديدة بالجدول المؤقت ، وعند الانتهاء ، سيعمل استعلام المجاميع ، 2. وبدون استعمال الجدول المؤقت ، يأخذ استعلام المجاميع بياناته من الاستعلام العادي ، وانا أفضل استخدام الطريقة الاولى ، وخصوصا ان الجدول المؤقت لن يضر برنامجك وافضل شئ في هذه العملية هي نتائج السرعة: 1. والذي فيه استعلام الحاق بيانات في الجدول المؤقت ، ثم عمل استعلام المجاميع = 120 ثانية 2. استعلام المجاميع والذي يأخذ بياناته من الاستعلام العادي = 73 ثانية 3. واذا كانت البيانات موجودة في الجدول المؤقت ، واجرينا استعلام المجاميع = 3 ثوان جعفر 261.1.SaudiSatck2.zip
  14. وعليكم السلام ما فهمت قصدك ممكن تفصيل أكثر ، و مثال لوسمحت جعفر
  15. في الحدث ، عند التنسيق ولا علاقة له بنسخة الاكسس جعفر
  16. رجاء عمل سؤال جديد لهذا الموضوع ، لأن قوانين المنتدى لا تسمح بأكثر من سؤال في كل موضوع جعفر
  17. وعليكم السلام أخي عمرو الامر isNumeric سيساعدك في الفصل بين اذا كانت المعلومة رقم (وستكون نعم) ، او نص (وستكون لا) ، يعني (وبدون انزال مرفقك): if isnumeric(X) = true then هذا رقم A=val(x) else هذا نص A=Trim(x) او A=Replace(X," ","") endif جعفر
  18. السلام عليكم اسمح لي أخي الاستاذ علي ان اطرح هذه المعلومة في التقرير ، عادةً لا نستخدم الحدث "عند التحميل" OnLoad ، وانما نستخدم الحدث "عند التنسيق" OnFormat او "عند الطباعة" OnPrint للقسم الذي به حقل النص الذي تريده (يعني في قسم راس التقرير ، او قسم التفصيل ، او ...) ، لاحظ هذه الفيديو: . وهناك شئ في غاية الاهمية ، والذي للأسف يعمل الكثير من المشاكل ، والتعرف عليها صعب بعض الاحيان ، وهي مسمى اسم القسم!! مسميات أقسام النماذج / التقارير يعتمد على لغة نسخة الاكسس التي تم تنصيبها على جهازك ، واليك بعض الامثلة في مسميات الاقسام بين العربية والانجليزية: راس_التقرير ReportHeader ، التفصيل Detail ، ... وهذا الاسم يجب ان يتماشى مع الاسم الموجود في الكود ، مثلا: في برنامجك ، في التقرير ، اسم قسم التفصيل هو: تفصيل ، فعليه الكود اصبح: Private Sub تفصيل_Format(Cancel As Integer, FormatCount As Integer) بينما في برنامجي اسمه Detail ، فالكود يصبح: Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer) لذلك ، لما تنقل الكود بين الكمبيوترات ، تأكد من هذه المسميات جعفر
  19. وعليكم السلام أخي مؤمن لكل برنامج طريقة في العمل ، وطريقة أكسس هي كما شرحتها لك سابقا وما ممكن عملها مثل ما يعمل برنامج المحاسبة الذي تتكلم عنه. ثم ما المشكلة ، كل اللي راح يصير ، ان المستخدم لما يشغل برنامجه ، تلقائيا راح تيجي له رسالة: "هناك نسخة جديدة من البرنامج ، رجاء الانتظار حتى اجلب لك البرنامج" ، والمسألة راح تأخذ ثواني بالمناسبة ، ماهو برنامج المحاسبة الذي تتكلم عنه ، والذي يسمح لك بتغيير التصميم؟ جعفر
  20. السلام عليكم أضفت فقرة جديدة (رقم 1 في الكود) ، وهي الجزء الجديد فقط ، وتعمل كالتالي: اذا bad_akd لم يكن آخر يوم في الشهر ، فسيعطيك سجل راتب لذلك الشهر ، اما بقية الاشهر ، فالوضع كما هو: Private Sub cmd_Go_Click() On Error GoTo err_cmd_Go_Click Dim rstF As DAO.Recordset Dim rstT As DAO.Recordset 'empty tbl_Temp CurrentDb.Execute ("Delete * From tbl_Temp") 'table To Set rstT = CurrentDb.OpenRecordset("Select * From tbl_Temp") 'table From Set rstF = CurrentDb.OpenRecordset("Select * From akad_amel") rstF.MoveLast: rstF.MoveFirst RC = rstF.RecordCount 'Loop from table From, 'and get the w-code, and his starting date For i = 1 To RC Date_From = rstF!bad_akd 'Starting date Date_To = DateSerial(Year(Date), Month(Date), 0) 'Last month How_Many_Months = DateDiff("m", Date_From, Date_To) 'How many months in-between 'Last_Day_Of_Last_Month = DateSerial(Year(Date_From), Month(Date_From), 30) 'Last_Day_Of_Last_Month Last_Day_Of_Last_Month = DateSerial(Year(Date_From), Month(Date_From) + 1, 0) 'Last_Day_Of_Last_Month '1 'for the first month ONLY First_Day_First_Month = Day(Date_From) Last_Day_First_Month = Day(DateSerial(Year(Date_From), Month(Date_From) + 1, 0)) How_Many_Days = DateDiff("d", First_Day_First_Month, Last_Day_First_Month) If How_Many_Days <> 0 Then rstT.AddNew rstT!w_code = rstF!w_code 'w_code rstT!iDate = DateSerial(Year(Date_From), Month(Date_From) + 1, 0) rstT.Update End If '2 'we will generate All the months for each Employee, from his start date to Last month For j = 1 To How_Many_Months 'start adding rstT.AddNew rstT!w_code = rstF!w_code 'w_code rstT!iDate = DateAdd("m", j, Last_Day_Of_Last_Month) 'the month rstT.Update Next j rstF.MoveNext Next i rstF.Close: Set rstF = Nothing rstT.Close: Set rstT = Nothing MsgBox "Done" Exit Sub err_cmd_Go_Click: If Err.Number = 3021 Then 'No Records Exit Sub Else MsgBox Err.Number & vbCrLf & Err.Description End If End Sub جعفر 240.2.الشهر الغير موجود.mdb.zip
  21. خلي الماوس على اسمي او صورتي ، بتطلع لك نافذة ، في اسفلها زر الرسائل الخاصه ، اضغط عليها ، واكمل الباقي
  22. يعني حتى لو كان تاريخ مباشرته اي يوم من الشهر ، فهو يستحق راتبه؟
×
×
  • اضف...

Important Information