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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    404

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

  1. تفضل 🙂 انا لعبت في الجدول: اضفت سجل ثم حذفته ، وبهذه الطريقة فقدنا التسلسل رقم 4 من حقل الرقم التلقائي ID ، ثم اضفت سجل جديد لعملة جديدة وهي الريال العماني ، ثم اضفت حقل Seq وهو لإدخال التسلسل اليدوي ، واردت التسلسل يكون هكذا : . على هذا الاساس ، عملت استعلامين: الاول ليعطينا التسلسل حسب فرز الحقل ID ، والثاني يعطينا التسلسل حسب فرز الحقل Seq : . والنتيجة: . والوحدة النمطية اللي تقوم بإرجاع البيانات مكتوبة هي : Public Function Row_Number(N) As String 'N = Number sent from the Query If Len(N & "") = 0 Then Row_Number = "" ElseIf N = 1 Then Row_Number = "العملة الرئيسية" Else Row_Number = "العملة رقم " & N End If End Function . والتي يمكن استبدالها بوضع هذا الحقل الجديد في الاستعلام (طبعا حسب اسم الحقل) ، ولكني أفضل الوحدة النمطية لسهولة التعديل عليها : Curr: IIf(Len([ID] & "")=0,"",IIf([ID]=1,"العملة الرئيسية","العملة رقم " & [ID])) . طيب لو اردت التسلسل (الفرز) يكون بإسم العملة ، فالطريقة الاولى لفرز الحقل ID لا ينفع ، ولم ارد استعمال الحقل Seq !! فالطريقة تكون ، بأن نعمل تسلسل للإستعلام حسب حقل الفرز ، وهناك عدة طرق لعمل هذا التسلسل ، ولكني أفضل هذه الوحدة النمطية: Public Function RowCounter( _ ByVal strKey As String, _ ByVal booReset As Boolean, _ Optional ByVal strGroupKey As String) _ As Long ' Builds consecutive RowIDs in select, append or create query ' with the possibility of automatic reset. ' Optionally a grouping key can be passed to reset the row count ' for every group key. ' ' Usage (typical select query): ' SELECT RowCounter(CStr([ID]),False) AS RowID, * ' FROM tblSomeTable ' WHERE (RowCounter(CStr([ID]),False) <> RowCounter("",True)); ' ' Usage (with group key): ' SELECT RowCounter(CStr([ID]),False,CStr([GroupID])) AS RowID, * ' FROM tblSomeTable ' WHERE (RowCounter(CStr([ID]),False) <> RowCounter("",True)); ' ' The Where statement resets the counter when the query is run ' and is needed for browsing a select query. ' ' Usage (typical append query, manual reset): ' 1. Reset counter manually: ' Call RowCounter(vbNullString, False) ' 2. Run query: ' INSERT INTO tblTemp ( RowID ) ' SELECT RowCounter(CStr([ID]),False) AS RowID, * ' FROM tblSomeTable; ' ' Usage (typical append query, automatic reset): ' INSERT INTO tblTemp ( RowID ) ' SELECT RowCounter(CStr([ID]),False) AS RowID, * ' FROM tblSomeTable ' WHERE (RowCounter("",True)=0); ' ' 2002-04-13. Cactus Data ApS. CPH ' 2002-09-09. Str() sometimes fails. Replaced with CStr(). ' 2005-10-21. Str(col.Count + 1) reduced to col.Count + 1. ' 2008-02-27. Optional group parameter added. ' 2010-08-04. Corrected that group key missed first row in group. Static col As New Collection Static strGroup As String On Error GoTo Err_RowCounter If booReset = True Then Set col = Nothing ElseIf strGroup <> strGroupKey Then Set col = Nothing strGroup = strGroupKey col.Add 1, strKey Else col.Add col.Count + 1, strKey End If RowCounter = col(strKey) Exit_RowCounter: Exit Function Err_RowCounter: Select Case Err Case 457 ' Key is present. Resume Next Case Else ' Some other error. Resume Exit_RowCounter End Select End Function Public Function Reset_RowCounter() Call RowCounter(vbNullString, False) End Function . ثم ننادي هذه الوحدة النمطية من الاستعلام ، حتى تعطينا التسلسل ، ثم نستعمل الوحدة النمطية السابقة لكتاية المطلوب: . ملاحظة: الحقل الذي يكون محسوب ، ويتغير بإستمرار ، فإننا لا نحفظ قيمته في الجدول ، لهذا السبب ، لم نستعمل الحقل N ، ولم نحفظ قيمتها في الجدول 🙂 جعفر 988.test 2.accdb.zip
  2. وعليكم السلام 🙂 لم ادخل في صميم البرمجة بعد ، ولكن قولك لفت انتباهي: هذا صحيح ، ولكن بسبب انك وضعت تعريف المتغيرات في قمة الوحدة النمطية ، وخارج المودل ، فهذا معناه ان البيانات لا تزال تكون مخزنه فيه ، ولحل هذا : احذفهم من هناك واجعلهم داخل المودل ، او اجعل المتغير = 0 في المودل ، وهذا حل الموضوع ، مع تعديل آخر بسيط: Public Function Clcisthlk(EndToreedDate As Date, srfSt As Integer) As Double Set sql = CurrentDb.OpenRecordset("EsthlakPricesTbl", dbOpenDynaset) sql.MoveLast: sql.MoveFirst ' pris = 0: srf = 0 Sumwtr = 0: SumSrf = 0: SumMnss = 0: mnss = 0: descrSrf = "" descr = "" ' Do Until sql.EOF If IsNull(sql!UntlMnth) Then enddt = DateSerial(Year(Date), Month(Date) + 1, 0) pris = sql!Price srf = sql!srfm Else enddt = sql!UntlMnth pris = sql!Price srf = sql!srfm End If ' If EndToreedDate <= enddt Then SumMnss = SumMnss + mnss mnss = DateDiff("m", EndToreedDate, enddt) - SumMnss Sumwtr = Sumwtr + (mnss * pris) If srfSt = 1 Then SumSrf = SumSrf + (mnss * srf) Else SumSrf = 0 End If descr = descr & "monhs= " & mnss & " * pris= " & pris & " = " & (mnss * pris) & vbCrLf descrSrf = descrSrf & "SRf= " & srf & " * " & "Monthes= " & mnss & "= " & (mnss * srf) & vbCrLf End If 'Debug.Print "1>> " & vbCrLf & descr 'Debug.Print sql.MoveNext Loop Clcisthlk = Sumwtr + SumSrf ' Debug.Print descr Debug.Print descrSrf ' sql.Close Set sql = Nothing End Function جعفر
  3. لازلت اعتقد بانه هناك طريقة اسهل للذي تريد الوصول اليه ، لذا لوسمحت ارفق الموجود من بياناتك ، ثم اشرح لنا بالاكسل (من واقع بياناتك) النتيجة اللي تريد توصل لها 🙂 جعفر
  4. وعليكم السلام 🙂 نعم يوجد ، واسمه Recordset Absoluteposition ، وهذا شرح له من مايكروسوفت: https://docs.microsoft.com/en-us/office/client-developer/access/desktop-database-reference/recordset-absoluteposition-property-dao ولكني لا اعتقد بأنك تبحث عن هذا !! اخبرنا لماذا كنت تريد ان تستعمل هذه الداله ، وماذا تريد استخراج من بياناتك؟ جعفر
  5. رجاء وضع مثال للإجابة المطلوبة هنا لوسمحت 🙂 جعفر
  6. صحيح انك اعطيت بيانات ، وصحيح انك شرحت المطلوب ، ولكنك لم تعطي كيف يجب ان تكون الاجابة من واقع البيانات
  7. وعليكم السلام 🙂 1. اسم الموضوع مخالف ، 2. في موضوعك السابق الاخ @محمد ابوعبد الله انهى جزء من طلبك ، والاولى مواصلة الطريق هناك ، 3. انت لم تعطي مثال على طريقة الاجابة التي تريدها (من بيانات برنامجك) ، لا هنا ولا هناك ، ولذلك يتردد الكثير (وانا منهم) في الدخول على سؤال غير واضح النتيجة !! لذا ، اقترح عليك ان تواصل العمل هناك ، بالامثلة المطلوبة ، وان شاء الله نتعاون في في حل الموضوع 🙂 هذا الموضوع سوف يُغلق 🙂 جعفر
  8. وعليكم السلام 🙂 الحل في ان تعمل فرز برقم الفاتورة في الاستعلام ، وتجعل الاستعلام مصدر لبيانات النموذج: 1. اذا كان نوع حقل "رقم الفاتورة" رقم ، فالفرز يكون مباشرة في الحقل ، 2. اذا كان نوع حقل "رقم الفاتورة" نص ، فقم بعمل حقل جديد في الاستعلام ، واعمل الفرز لهذا الحقل ، والحقل يكون كالتالي: int_Invoice: val([اسم حقل رقم الفاتورة]) او int_Invoice: int([اسم حقل رقم الفاتورة]) جعفر
  9. وعليكم السلام أخوي حافظ 🙂 انا عملت تغيير في برنامجك 🙂 الاستعلام qry_General اصبح: . وهذه جملة الـ Between Between (IIf(Len([Forms]![frm_Print]![Date_1] & '')=0,#01-Jan-1900#,[Forms]![frm_Print]![Date_1])) And (IIf(Len([Forms]![frm_Print]![Date_2] & '')=0,#01-Jan-2900#,[Forms]![frm_Print]![Date_2])) يعني Between (IIf(Len([Forms]![frm_Print]![Date_1] & '')=0,#01-Jan-1900#,[Forms]![frm_Print]![Date_1])) And (IIf(Len([Forms]![frm_Print]![Date_2] & '')=0,#01-Jan-2900#,[Forms]![frm_Print]![Date_2])) واذا القيمة الاولى غير موجودة في النموذج ، استعمل تاريخ قديم جدا واذا القيمة الثانية غير موجودة في النموذج ، استعمل تاريخ في المستقبل . وعليه ، فلا حاجة الى كود ، وانما هي اعادة طلب البيانات مرة ثانية فقط 🙂 Private Sub Btn_Search_Click() Me.Sulef_sub_frm.Form.Requery End Sub Private Sub Cmd_All_Rec_Click() Call Cmd_Clear_Click End Sub Private Sub Cmd_Clear_Click() Me.Date_1 = "" Me.Date_2 = "" Me.Sulef_sub_frm.Form.Requery End Sub . جعفر 986.Talabat_Sulef.accdb.zip
  10. وعليكم السلام اخي غسان 🙂 شروط المنتدى لا تسمح بأكثر من سؤال في موضوع ، ولكن بما ان سؤالك محدود ، فاليك احد مواضيع التفقيط من المنتدى: جعفر
  11. حياك الله اخوي شفان 🙂 انا دائما احب ان اضع كل فريق/عمل في مجموعة مستقلة ، لكي يسهل العمل والتعديل ، وتقل الاخطاء 🙂 جعفر
  12. وعليكم السلام اخوي خلف 🙂 اعتذر منك ، لم اقرأ السؤال بطريقة صحيحة بغض النظر ، سواء كان الكائن مربع سرد او حقل نص ، فإذا كان مضمن/مرتبط بحقل من مصدر بيانات النموذج ، فالنموذج سيضيف سجل جديد !! واذا اردت النموذج ان لا يضيف سجل بعد اختيارك من المربع ، فلا تجعله مضمن/مرتبط بحقل ، وعند حفظ السجل ، اذا اردت ان تحفظ المعلومة الموجودة في المربع ، فيجب ان تعمله في الكود (مثلا على حدث "بعد تحديث" احد الحقول الرئيسية في السجل) 🙂 واذا ارفقت مثالك ، فقد تكون هناك طرق اخرى يمكننا ان نفيدك فيها 🙂 جعفر
  13. وعليكم السلام وهذه طريقتي 🙂 نعمل استعلام لجمع الفواتير المدفوعة ، ثم نربط الاستعلامين ، ونأخذ جميع الفواتر من الاستعلام الاصل . والنتيجة: . جعفر 985.PROGRMS.accdb.zip
  14. وعليكم السلام سؤالك غير واضح يا باشه 🙂 اعطنا مثال عن: الرقم الحالي ، وكيف تريده ان يكون ، واذا هناك شرط في الموضوع 🙂 جعفر
  15. السلام عليكم وانا كذلك ، البرنامج عندي شغال 🙂 واليك طريقة اخرى ، مشابهة لطريقة اخي kanory 🙂 في النموذج ، وعلى حدث "فتح النموذج" اكتب هذا الكود: Private Sub Form_Open(Cancel As Integer) str_Title = "الرقم السري مطلوب" str_Prompt = "ادخل الرقم السري" If InputBoxDK(str_Prompt, str_Title) = DLookup("[Pass]", "Pass", "[Pass]") Then MsgBox "الرقم السري صحيح", , "تفضل بالدخول" 'DoCmd.Close DoCmd.OpenForm "employees_F", acNormal Else MsgBox "الرقم السري خاطىء", , "لا يمكنك الدخول" DoCmd.CancelEvent End If End Sub . والذي ينادي الوحدة النمطية: Option Compare Database Option Explicit '-------------------------------------------------------------------- ' ' Copyright 1996-2013 J Street Technology, Inc. ' www.JStreetTech.com ' ' This code may be used and distributed as part of your application ' provided that all comments remain intact. ' ' J Street Technology offers this code "as is" and does not assume ' any liability for bugs or problems with any of the code. In ' addition, we do not provide free technical support for this code. ' ' Code for Password-masked InputBox was originally written by ' Daniel Klann in March 2003 and has been adapted & updaed for 64-bit ' compatiblity '-------------------------------------------------------------------- 'Revised Type Declare for compatability with NT 'Re-revised for 64-bit compatibility #If VBA7 Then Type tagOPENFILENAME lStructSize As Long hwndOwner As LongPtr hInstance As LongPtr lpstrFilter As String lpstrCustomFilter As Long nMaxCustFilter As Long nFilterIndex As Long lpstrFile As String nMaxFile As Long lpstrFileTitle As String nMaxFileTitle As Long lpstrInitialDir As String lpstrTitle As String Flags As Long nFileOffset As Integer nFileExtension As Integer lpstrDefExt As String lCustData As LongPtr lpfnHook As LongPtr lpTemplateName As Long End Type Private Declare PtrSafe Function GetOpenFileName Lib "comdlg32.dll" _ Alias "GetOpenFileNameA" (OPENFILENAME As tagOPENFILENAME) As Boolean 'APIs for Password-masked Inputbox Private Declare PtrSafe Function CallNextHookEx Lib "user32" ( _ ByVal hHook As LongPtr, _ ByVal ncode As Long, _ ByVal wParam As LongPtr, _ lParam As Any _ ) As LongPtr Private Declare PtrSafe Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" ( _ ByVal lpModuleName As String _ ) As LongPtr Private Declare PtrSafe Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" ( _ ByVal idHook As Long, _ ByVal lpfn As LongPtr, _ ByVal hmod As LongPtr, _ ByVal dwThreadID As Long _ ) As LongPtr Private Declare PtrSafe Function UnhookWindowsHookEx Lib "user32" ( _ ByVal hHook As LongPtr _ ) As Long Private Declare PtrSafe Function SendDlgItemMessage Lib "user32" Alias "SendDlgItemMessageA" ( _ ByVal hDlg As LongPtr, _ ByVal nIDDlgItem As Long, _ ByVal wMsg As Long, _ ByVal wParam As LongPtr, _ ByVal lParam As LongPtr _ ) As LongPtr Private Declare PtrSafe Function GetClassName Lib "user32" Alias "GetClassNameA" ( _ ByVal hwnd As LongPtr, _ ByVal lpClassName As String, _ ByVal nMaxCount As Long _ ) As Long Private Declare PtrSafe Function GetCurrentThreadId Lib "kernel32" () As Long Private hHook As LongPtr #Else Type tagOPENFILENAME lStructSize As Long hwndOwner As Long hInstance As Long lpstrFilter As String lpstrCustomFilter As Long nMaxCustFilter As Long nFilterIndex As Long lpstrFile As String nMaxFile As Long lpstrFileTitle As String nMaxFileTitle As Long lpstrInitialDir As String lpstrTitle As String Flags As Long nFileOffset As Integer nFileExtension As Integer lpstrDefExt As String lCustData As Long lpfnHook As Long lpTemplateName As Long End Type Private Declare Function GetOpenFileName Lib "comdlg32.dll" _ Alias "GetOpenFileNameA" (OPENFILENAME As tagOPENFILENAME) As Long 'APIs for Password-masked Inputbox Private Declare Function CallNextHookEx Lib "user32" ( _ ByVal hHook As Long, _ ByVal ncode As Long, _ ByVal wParam As Long, _ lParam As Any _ ) As Long Private Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" ( _ ByVal lpModuleName As String _ ) As Long Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" ( _ ByVal idHook As Long, _ ByVal lpfn As Long, _ ByVal hmod As Long, _ ByVal dwThreadID As Long _ ) As Long Private Declare Function UnhookWindowsHookEx Lib "user32" ( _ ByVal hHook As Long _ ) As Long Private Declare Function SendDlgItemMessage Lib "user32" Alias "SendDlgItemMessageA" ( _ ByVal hDlg As Long, _ ByVal nIDDlgItem As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ ByVal lParam As Long _ ) As Long Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" ( _ ByVal hwnd As Long, _ ByVal lpClassName As String, _ ByVal nMaxCount As Long _ ) As Long Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long Private hHook As Long #End If 'Constants used by Password-masked Inputbox Private Const EM_SETPASSWORDCHAR As Long = &HCC Private Const WH_CBT As Long = 5 Private Const HCBT_ACTIVATE As Long = 5 Private Const HC_ACTION As Long = 0 #If VBA7 Then Private Function InputBoxPasswordMaskProc( _ ByVal lngCode As Long, _ ByVal wParam As LongPtr, _ ByVal lParam As LongPtr _ ) As LongPtr #Else Private Function InputBoxPasswordMaskProc( _ ByVal lngCode As Long, _ ByVal wParam As Long, _ ByVal lParam As Long _ ) As Long #End If 'DO NOT PUT IN VBA ERROR HANDLING 'This is a Windows procedure called by Message loop. On Error Resume Next 'Originally written by Daniel Klann 'Updated for 64-bit compatibility Dim RetVal Dim strClassName As String Dim lngBuffer As Long If lngCode < HC_ACTION Then InputBoxPasswordMaskProc = CallNextHookEx(hHook, lngCode, wParam, lParam) Exit Function End If strClassName = String$(256, " ") lngBuffer = 255 If lngCode = HCBT_ACTIVATE Then 'A window has been activated RetVal = GetClassName(wParam, strClassName, lngBuffer) If Left$(strClassName, RetVal) = "#32770" Then 'Class name of the Inputbox 'This changes the edit control so that it display the password character *. 'You can change the Asc("*") as you please. SendDlgItemMessage wParam, &H1324, EM_SETPASSWORDCHAR, Asc("*"), &H0 End If End If 'This line will ensure that any other hooks that may be in place are 'called correctly. CallNextHookEx hHook, lngCode, wParam, lParam End Function 'Private Function InputBoxDK( _ Function InputBoxDK( _ Prompt, _ Optional Title, _ Optional Default, _ Optional XPos, _ Optional YPos, _ Optional HelpFile, _ Optional Context _ ) As String 'Originally written by Daniel Klann 'Updated for 64-bit compatibility 'Replicate the functionality of Inputbox function 'while providing password masking. #If VBA7 Then Dim lngModHwnd As LongPtr #Else Dim lngModHwnd As Long #End If Dim lngThreadID As Long On Error GoTo ErrHandler lngThreadID = GetCurrentThreadId lngModHwnd = GetModuleHandle(vbNullString) hHook = SetWindowsHookEx(WH_CBT, AddressOf InputBoxPasswordMaskProc, lngModHwnd, lngThreadID) InputBoxDK = InputBox(Prompt, Title, Default, XPos, YPos, HelpFile, Context) UnhookWindowsHookEx hHook ExitProc: On Error Resume Next Exit Function ErrHandler: Select Case Err.Number Case Else VBA.MsgBox "Error " & Err.Number & " (" & Err.Description & ")" End Select Resume ExitProc Resume 'for Debugging End Function 'Hope someone can use it! . جعفر 983.password.accdb.zip
  16. وعليكم السلام 🙂 تفضل طريقة تفعيله . . جعفر
  17. وعليكم السلام ورحمة الله وبركاته نحن دائما بحاجة الى ابداعات جديدة لحياتنا اليومية 🙂 شكرا لك يالسيد 🙂 جعفر
  18. وعليكم السلام اخوي خلف 🙂 شوف اذا هذه الطريقة تنفعك جعفر
  19. وعليكم السلام واهلا وسهلا بك في المنتدى 🙂 تستطيع ان تجمع استعلاماتك في استعلام تجميع واحد Union Query ، وشرط عمل استعلام التجميع هو ان عدد الحقول في كل استعلام يجب ان تكون نفسها ، وتنوع الحقول يجب ان يكون نفسه لكل حقل/عمود. جعفر
  20. تفضل 🙂 . . جعفر 978.Database1.accdb.zip
  21. شكرا جزيلا على جميل كلماتك ، ونسأل الله القبول 🙂 جعفر
  22. الحل انك تخبرنا شو اللي تريد عمله ، واعطنا مثال واضح من قلعدة بياناتك ، وان شاء الله نحاول مساعدتك 🙂 جعفر
  23. الحل يعود الى برنامجك !! فإذا كان المطلوب من حقل الكود في النموذج الرئيسي ، هو البحث عن الموظف في النموذج الفرعي ، فيجب ان يكون حقل الكود غير مرتبط/مضمن بجدول. جعفر
  24. سبب السجل الجديد هو: عند اختيارك كود الموظف (ولأنه مربوط/مضمن) فإنك في واقع الامر تضيف معلومة الى سجل جديد ، فينتج عنه الخطأ.
  25. الله يطول في عمرك ، اعطني معلومة كافية علشان اوصل للمطلوب!! كيف اوصل للي انت وصلت له؟
×
×
  • اضف...

Important Information