-
Posts
946 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
10
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو Amr Ashraf
-
مشكور اخى الكريم ولكن ليس هو المطلوب فى مرفقك اختفى الأكسيس أساسا من شريط المهام وبالتالى مش هقدر اصغره اساسا المطلوب انه يفضل فى شريط المهام وعند استعادته يظل النموذج فى وضع ملئ الشاشة
-
السلام عليكم اساتذتى الافاضل فى المرفق عندى نموذج "الرئيسية" فيه حدث عند الفتح Maximize لملئ الشاشة ولكن عند تصغير الأكسس فى شريط المهام واستعادته مرة اخرى يعود النموذج للوضع العادى وليس ملئ الشاشة المطلوب : عند تصغير قاعدة البيانات لشريط المهام واستعادتها يظل النموذج الرئيسية بوضع ملئ الشاشة وفى الخلفية حتى لا يغطى باقى النماذج المنبثقة ... دمتم بخير Maximize.rar
-
السلام عليكم اساتذتى الافاضل ارجو منكم سعة الصدر لهذه المشكلة وهى : المرفق به وظيفة تقوم بحساب الرصيد بعد حركة الصنف الوارد او المنصرف ثم تقوم بحساب متوسط السعر لهذا الصنف وهذه الوظيفة كودها كالتالى : Option Compare Database Option Explicit Dim Balance, bal, i, avg1, avg2, toval, Tovalue, zval, zvalue2 As Long Dim Cody As String Function qty_normalize() '''''''''''''''''''''''''''''''''' Declaring ''''''''''''''''''' Dim db, dbs As DAO.Database Dim rst As DAO.Recordset Dim qdf, QryLoop As DAO.QueryDef Dim item_a, item_b, strSQL As String Set dbs = CurrentDb: Set db = CurrentDb For Each QryLoop In CurrentDb.QueryDefs If QryLoop.name = "Q" Then DoCmd.DeleteObject acQuery, "Q" Next ''''''''''''''''''''''''''''''''' Building Query ''''''''''' strSQL = "SELECT Transactions.ID, Transactions.Item, Trans_top.zdate, Transactions.Out, Transactions.[In], Transactions.Zvalue FROM Trans_top INNER JOIN Transactions ON Trans_top.ID = Transactions.Doc " '''''''''' Choosing Item : Cody = Forms!Trans_Top!Cody strSQL = strSQL + "WHERE (((Transactions.Code)='" & Cody & "')) " strSQL = strSQL + "GROUP BY Transactions.ID, Transactions.Item, Trans_top.zdate, Transactions.Out, Transactions.[In], Transactions.Zvalue ORDER BY Transactions.Item, Trans_top.zdate;" Set qdf = CurrentDb.CreateQueryDef("Q", strSQL) DoCmd.OpenQuery qdf.name Set qdf = db.QueryDefs("Q") Set rst = qdf.OpenRecordset() Set rst = CurrentDb.OpenRecordset("Q", dbOpenDynaset) If Nz(rst.RecordCount, 0) = 0 Then GoTo en2: rst.MoveLast: rst.MoveFirst ''''''''''''''''''''''''''''''''' Setting to Zero ''''''''''' item_a = item_b = rst!Item Balance = avg1 = avg2 = Tovalue = toval = zval = 0 ''''''''''''''''''''''''''''''''' The first Row ''''''''''''' Balance = rst!In CurrentDb.Execute ("Update transactions Set BalanceAfter = " & Balance & " where [id] = " & rst!ID & "") 'CurrentDb.Execute ("Update transactions Set Zvalue = " & Zv & " where [id] = " & rst!ID & "") avg1 = Round((rst!zvalue) / (rst!In), 5) Tovalue = Round((Balance * avg1), 5) CurrentDb.Execute ("Update transactions Set AvgPrice = " & avg1 & " where [id] = " & rst!ID & "") bal = Balance zval = rst!zvalue toval = Tovalue rst.MoveNext '''''''''''''''''''''''''''''''''Starting of Row(s) Later ''''''''''''' With rst For i = 0 To rst.RecordCount - 1 If item_a = item_b Then Balance = Val(Balance) + rst!In - rst!out CurrentDb.Execute ("Update transactions Set BalanceAfter = " & Balance & " where [id] = " & rst!ID & "") item_b = rst!Item ''''''''''''''''''''''' In Or Out ''''''''''''' If rst!In <> 0 Then avg2 = Round(Round(toval + rst!zvalue, 5) / Round(bal + rst!In, 5), 5) Tovalue = Round(Balance * avg2, 5) CurrentDb.Execute ("Update transactions Set AvgPrice = " & avg2 & " where [id] = " & rst!ID & "") avg1 = avg2 Else avg2 = avg1 Tovalue = Round(Balance * avg2, 5) zvalue2 = Round(avg2 * rst!out, 5) CurrentDb.Execute ("Update transactions Set AvgPrice = " & avg2 & " where [id] = " & rst!ID & "") CurrentDb.Execute ("Update transactions Set zvalue = " & zvalue2 & " where [id] = " & rst!ID & "") End If ''''''''''''''''''''''' A new Item ''''''''''''' Else Balance = 0 item_b = rst!Item Balance = Val(Balance) + rst!In - rst!out CurrentDb.Execute ("Update transactions Set BalanceAfter = " & Balance & " where [id] = " & rst!ID & "") avg1 = Round(rst!zvalue, 5) / Round(rst!In, 5) Tovalue = Round(Balance * avg1, 5) CurrentDb.Execute ("Update transactions Set AvgPrice = " & avg1 & " where [id] = " & rst!ID & "") End If ''''''''''''''''''''''' Storing Values ''''''''''''' toval = Tovalue bal = Balance zval = rst!zvalue ''''''''''''''''''''''' Next Row or End '''''''''''''' .MoveNext If Not .EOF Then item_a = rst!Item Else GoTo en1: End If Next End With en1: rst.Close DoCmd.Close acQuery, "Q", acSaveYes DoCmd.DeleteObject acQuery, "Q" Set rst = Nothing Set qdf = Nothing Set db = Nothing Set dbs = Nothing en2: For Each QryLoop In CurrentDb.QueryDefs If QryLoop.name = "Q" Then DoCmd.Close acQuery, "Q", acSaveYes: DoCmd.DeleteObject acQuery, "Q" Next End Function ويعمل هذا الكود بعد تحديث الحقل Zvalue فى النموذج الفرعى الموجود بالنموذج Trans_Top ولكن المشكلة كالتالى : 1- اذا لم يكن هناك حركة سابقة من نفس الصنف لا يقوم البرنامج بحساب AvgPrice ويظهر رسالة "No Current Record" 2- اذا كان هناك حركة سابقة يقوم البرنامج بحساب AvgPrice الخاص بالحركة السابقة ويترك الحركة الحالية بدون حساب = 0 اما المفروض ان يحدث : اذا لم يكن هناك حركة سابقة على الصنف فأن متوسط السعر AvgPrice يساوى القيمة zvalue / كمية الاضافة اذا كان هناك حركة سابقة على الصنف يقوم بحساب AvgPrice لنفس الحركة الحالية وليست السابقة وذلك عن طريق معادلة موجودة فى الكود . توجيهات لاستخدام المرفق : ستجد معظم البيانات موجودة فى النموذج ولاختيار الصنف فى النموذج الفرعى اضغط مرتين فى حقل الكود ليظهر نموذج البحث اعتذر على الاطالة ولكن سامحونى الموضوع فى غاية الاهمية يتوقف عليه عملى ... دمتم بخير avg.rar
-
مكتبة الأكسيس حصاد السنين الاصدار الرابع
Amr Ashraf replied to sameh_awad's topic in قسم الأكسيس Access
جزاك الله خير فعلا استفدت منها -
طيب تمام بس الكلام اللى انتا بتقوله ده مينفعش يتعمل على جداول لذلك لازم تعمل نموذج للصرف والاضافة ومن خلاله هيتم تفعيل كافة المزايا اللى انتا طلبنها ... يعنى استكمل القاعدة اولا صمم نماذجك وتقاريرك والاخر نعملك المطلوب بالتوفيق
-
تمام ورصيد الصنف شغال كويس ... ايه المطلوب حاليا او المشكلة اللى قابلتك
-
سؤال في : التركيز SetFocus حال فتح البرنامج مع اقلاع وندوز
Amr Ashraf replied to ابوخليل's topic in قسم الأكسيس Access
طيب انا جربت انى اضغط على شريط المهام وطبقت طريقتك وحاولت الالتفاف حول المشكلة عن طريق اغلاق الفورم وفتحه برمجيا فى حدث عند التوقيت ونجحت الفكرة بيعيد التركيز للحقل المطلوب حتى لو التركيز خارج الأكسس DoCmd.Close: DoCmd.OpenForm "نموذج1" بس على حسب طبيعة عمل الفورم انا غير متأكد هل هتنفعك الطريقة ام لا طريقة اخرى فى حدث عند التوقيت ايضا كما اشار استاذ جعفر ولكنى فكرت فيها قبله Forms![äãæÐÌ1].SetFocus Me.id.SetFocus db2.rar -
سؤال في : التركيز SetFocus حال فتح البرنامج مع اقلاع وندوز
Amr Ashraf replied to ابوخليل's topic in قسم الأكسيس Access
فهمتك وعندى فكرة بحاول تطبيقها الأن اذا نفعت برجعلك بيها -
سؤال في : التركيز SetFocus حال فتح البرنامج مع اقلاع وندوز
Amr Ashraf replied to ابوخليل's topic in قسم الأكسيس Access
السلام عليكم استاذى الفاضل هل المثال التالى قد يساعدك .؟ Dim ReturnValue, I ReturnValue = Shell("CALC.EXE", 1) ' Run Calculator. AppActivate ReturnValue ' Activate the Calculator. -
السلام عليكم أساتذتى الافاضل فى المرفق كود وظيفته حساب و ضبط رصيد بعد الحركة فى قاعدة مخازن والمقصود بالرصيد بعد الحركة هو الرصيد الجديد بعد القيام بحركة الصرف او الاضافة كالتالى : 1-يقوم بترتيب جدول الحركات Transactions ابجديا بالكود ثم يرتب الحركات بالتاريخ ثم داخل كل تاريخ يرتب الحركات بمعرف الحركة ID ثم يقوم ببدء حساب الرصيد بحيث اول حركة فى الصنف دائما تكون اضافة وبالتالى اول رصيد بعد الحركة بيساوى كمية الاضافة ,,, اما الحركات التالية فيقوم بحسابها كالتالى (الرصيد السابق + الوارد - المنصرف) وهكذا فى كل الاصناف . كانت هذه مقدمة سريعة لشرح الوظيفة المطلوبة من الكود اما بالنسبة للمشكلة فهى كالتالى : عندى فى المرفق 73000 سجل ولكى يقوم البرنامج بتعديل هذه الارصدة قد يستغرق نصف ساعة المطلوب طريقة لتسريع العملية أو تحويلها لاستعلام تحديث اذا كان اسرع من الوظيفة السابقة جزاكم الله خير . المرفق بصيغة 2003 حتى يعمل عند الجميع Function2003.rar
-
موجود كل شئ خلص التعديلات بس
-
السلام عليكم اخى الكريم بعد النظر الى قاعدتك فى نظرى تصميم الجداول ليس جيدا وسيظهر لك العديد من المشاكل فى المستقبل و اليك بعض النصائح لبناء القاعدة من جديد : يلزمك 4 جداول اساسية وهم 1-جدول رأس الفاتورة : وفيه هيكون رقم الفاتورة - نوعها (مبيعات-مشتريات-ارتجاع) - طريقة التعامل (نقدى - اجل) - تاريخ الفاتورة - العميل - ملاحظات ) وفيه رقم الفاتورة مفتاح اساسى لا يقبل التكرار 2- جدول الحركات بيكون فيه كود الصنف واسمه والكمية المشتراه و الكمية المباعة و رقم الفاتورة وملاحظات ) ويتم ربط الجدولين برقم الفاتورة 3- جدول العملاء 4- جدول الاصناف اسماء الحقول كلها اعملها انجليزى وليس عربى لسهولة التعديل وكتابة الاكواد اعمل التغييرات وجرب استعلاماتك وشوف الفرق ولو ظهرت مشاكل ارفق القاعدة الجديدة بالتوفيق ملحوظة : لست ملزم بعمل ما قلته لك ولكن هذا رأيى الشخصى قد يصيب ويخطئ
-
بالظبط هو
-
انا ارفقت لك التعديل اخى الكريم ووضحت لك اين تلاحظ التغييرات
-
انظر الاستعلام فى المرفق ولاحظ العلاقة بين الجدولين فى الاستعلام FahtersAndSons2.rar
-
كلامك صحيح وهو مفهوم متوسط السعر المتحرك وطريقتها معقدة بعض الشئ فى تطبيقها ولكن نرجع ونقول هذا طلب صاحب الموضوع
-
والله فكرة من ذهب ظبطت عليها التقرير بارك الله فيك وحلوة علبة التونة ههههه
-
استاذى الفاضل هل تقول لى اننى يمكننى تجربة الخط فى التقرير على الهاتف دون الاحتياج الى جهاز باركود فعلى ؟!! طيب انا هروح اشوف الموضوع ده هيفيدنى فى التجربة كتير وهرجع تانى
-
وعليكم السلام هل هذا هو المطلوب ؟ 2متوسط.rar