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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    404

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

  1. وعليكم السلام تفضل 1. 2. 3. 4. جعفر 278.mouwazaf11.accdb.zip
  2. السلام عليكم اذا كنت لازلت تريد المساعدة في هذا الموضوع ، رجاء تشرح لي وبالتفصيل الممل عن كيفية استخدامك للبرنامج، ورجاء تعمل صورة لصفحة الكود وترفقها اللي سطرها يكون باللون الاصفر ، علشان اعرف وين الكود يتوقف. جعفر
  3. الحمدلله كنت في الزيارة جرب المرفق لوسمحت رحم الله والديك أخي سعيد ، انت وفرت علي اكثر من نصف الطريق جعفر 231.1.New .accdb.zip
  4. السلام عليكم لاحظت تكرار بعض البيانات ، فاليك النسخة المعدلة 275.1.ImportDegrees.accdb.zip
  5. السلام عليكم شباب في الرابط التالي http://www.officena.net/ib/topic/61847-تعديل-على-كود-حفظ-مكان-الصورة/?do=findComment&comment=399928 استعملت الكود التالي: Dim Image_Path As String '1 Image_Path = Application.currentProject.Path '2 Image_Path = Image_Path & "\photo\" 'if the photo Dir dose not exist, creat it If Dir(Image_Path, vbDirectory) = "" Then MkDir Image_Path End If '3 Image_Path = Image_Path & "\" & [ID] & "\" 'if the [id] Dir dose not exist, creat it If Dir(Image_Path, vbDirectory) = "" Then MkDir Image_Path End If وهنا قبل ان أنشأ المجلد الجديد ، يتأكد الكود بوجوده ، فان لم يكن موجودأ ، فانه يستحدثه ، وإن كان موجودا لا يفعل شئ (طبعا لم اكن اريد المستخدم ان يرى اي رسالة هنا) ، وتلاحظ ان عمل المجلدات هو بالتسلسل ، ومن خلال نفس مجلد البرنامج ، هكذا: -1- مجلد البرنامج (الموجود ، لذلك لم اقم بعمل شئ له) ، -2- مجلد الصور photo (واذا لم يكن موجودا ، فسيستحدثه البرنامج) ، والذي هو بداخل مجلد البرنامج ، ومجلد الصور photo هذا سيُستحدث مرة واحدة فقط ، -3- مجلد ID (واذا لم يكن موجودا ، فسيستحدثه البرنامج) ، والذي هو بداخل مجلد الصور photo ، وهناك عدة مجلدات بحسب قيمة ID ، داخل مجلد الصور photo. جعفر
  6. تقدر تضغط بالفأرة اليمين على الزر ابو 3 نقاط في حدث على النقر ، ثم اختار الاختيار الثالث code builder جعفر
  7. حيا الله من يانا وهذه طريقة اخرى ، اذا كانت ملفاتك تنزلها من موقع النور ، التابع لوزارة التعليم في المملكة العربية السعودية جعفر 275.1.ImportDegrees.accdb.zip
  8. انا آسف أخي حسين ، فا لاقتراح الوحيد المتبقى عندي هو ان تعمل تقرير جدولي مرة اخرى ، بحيث تستطيع ان ترى جميع الحقول فيه. جعفر
  9. وعليكم السلام أخي حسين الكود والطريقة صحيحة ، ولكني عدلت على التقرير قليلا ، فما ادري اذا بيصلح الوضع ملئت الجدول ببعض البيانات . وشغلت التقرير يدويا . والنتيجة . هذا معناه ان التقرير يشتغل بصورة صحيحة ، ويمكن طباعته مباشرة بكل البيانات مرة واحدة!! جرب المرفق واخبرني جعفر 272.2.BARCODE22.accdb.zip
  10. وعليكم السلام انا قلت . انت قلت . عليه ، اصبحت المعادلة: . والان الى برنامجك: . . والطريقة الوحيدة للتأكد 100% هو الرجوع للجدول ومعرفة نوع الحقل: . يعني fsl نص وليس رقم يالله نرجع نصلح المعادلة في النموذج ، ونخلي fsl نص بدل مايكون رقم: . والنتيجة . جعفر 277.sart.accdb.zip
  11. هل يوجد سجل بهذه المعلومات؟ هذه الرسالة عادة تظهر إذا ما في بيانات في التقرير. جعفر واذا كانت المعلومات موجودة ، فرجاء إرفاق برنامجك للنظر فيه. جعفر
  12. وعليكم السلام أخي طارق عملت وحدة نمطية fget_User_ID : Option Compare Database Public u_ID As Integer ' Function get_User_ID() get_User_ID = u_ID End Function . في نموذج دخول المستخدمين ، ارسلت قيمة u_ID الى الوحدة النمطية اعلاه: Private Sub Command5_Click() If [n2] = [كلمة السر] Then 'assign this value to a Global variable in module fget_User_ID u_ID = Me.iduser DoCmd.OpenForm "واجهة البرنامج", acNormal [Forms]![واجهة البرنامج]![n1] = [Forms]![دخول المستخدمين]![الاسم الكامل] DoCmd.Close acForm, "دخول المستخدمين" Else ms$ = "كلمة السر غير مطابقة" ti$ = "كلمة السر خطأ" re = MsgBox(ms$, 0, ti$) End If End Sub . فمن الآن وصاعدا ، كلما اردنا قيمة createuser ، فما علينا إلا ان ننادي الوحدة النمطية الاولى ، لهذا وفي نموذج الادخال barcodeir ، اصبح حقل createuser هكذا: . وفي حدث الحقل barcode ، الحدث On Lost Focus ، استدعيت قيمة createuser من الوحدة النمطية fget_Used_ID ، هكذا: Private Sub barcode_LostFocus() 'only split is nfous is empty If Len(Me.nfousi & "") <> 0 Then Exit Sub Dim x() As String Dim p As Integer If Me.barcode <> "" Then 'get the userID Me.createuser = get_User_ID() x1 = Replace(Me.barcode, "*", "") Debug.Print x1 x = Split(x1, "-") Debug.Print x(2) Me.nfousi = DLookup("[NoufousName]", "NoufousTable", "[Field]='" & x(0) & "'") ' Me.nfous_ID = DLookup("[NoufousID]", "NoufousTable", "[Field1]='" & x(0) & "'") Me.irsalieh = x(2) Me.createdate = Date Me.[a1] = x(1) ' Me.[000000] = x(2) ' Me.[000] = x(3) Me.[101] = x(3) End If End Sub . جعفر 276.tito.accdb.zip
  13. وعليكم السلام الرابط التالي يشرح لك الطريقة: http://www.officena.net/ib/topic/5106-ت-فتح-تقرير-مع-شرط/#comment-26881 http://access.mvps.org/access/reports/rpt0006.htm جعفر
  14. وعليكم السلام فكرة: ادخل اسم الكاشير مع كل عملية جعفر
  15. تفضل عملنا جدول جديد مؤقت للطباعة tbl_Temp وفيه الحقول المطلوبة لطباعة الباركود: . فاصبح علينا في الكود ان نحذف جميع سجلات هذا الجدول ، ثم نضيف بيانات الباركود الجديد ، على حسب عدد السجلات المطلوبة ، وبعدها نفتح التقرير ، والذي عملنا مصدره tbl_Temp . والكود اصبح: Private Sub PRENT_Click() If Me.t3 = 0 Then MsgBox ("لابد ان يكون حقل عدد الملصقات اكبر من صفر") End If 'delete the tbl_Temp Records mySQL = "Delete * From tbl_Temp" CurrentDb.Execute (mySQL) 'add the number of Records Dim rst As DAO.Recordset Set rst = CurrentDb.OpenRecordset("Select * From tbl_Temp") For i = 1 To Me.t3 rst.AddNew rst!SMALL_UNIT_PRICE = Me.SMALL_UNIT_PRICE rst!uuu = Me.uuu rst!uun = Me.uun rst!ITEM_CODE = Me.ITEM_CODE rst!ITEM_BARCODE = Me.ITEM_BARCODE rst!FACTOR = Me.FACTOR rst!ITEM_NAME2 = Me.ITEM_NAME2 rst!SUPP_CODE = Me.SUPP_CODE rst.Update Next i rst.Close: Set rst = Nothing 'now print the Report DoCmd.OpenReport "medicine" End Sub . السبب ان هذه الطريقة اسرع في الطباعة ، لأننا نرسل جميع السجلات الى التقرير مرة واحدة ، فالى الطابعة ، بينما في الطريقة السابقة ، كان هناك سجل واحد فقط في التقرير ، وكنا نفتح ونغلق التقرير عدة مرات لطباعة الباركود الواحد. وهنا اود ان ارفع الى اختنا الفاضلة الدكتورة أم عهود كل تحية واجلال واحترام لبُعد نظرها وبراعتها ، لأني اتذكر في منتدى الفريق العربي للبرمجة ، في موضوع طباعة الباركود ، انها عملت الكود لتحفظ سجلات الباركود في جدول مؤقت ، وانا وبسبب قلة خبرتي قلت انه من الافضل عدم عمل الجدول ، والطلب من التقرير الطباعة مباشرة (مثل ما عملنا سابقا) ، والآن فقط عرفت السبب ، وهو سرعة/بطئ الطباعة جعفر 272.BARCODE.accdb.zip
  16. وعليكم السلام كل رسالة خطأ ، لها رقم ، وتظهر الرسالة في اماكن مختلفة ، فاذا عرفت الحدث الذي تطلع الرسالة فيه ، وما يهمك تحل سبب الرسالة ، تستطيع ان تضع السطر التالي على السطر الثاني من الحدث: Private sub ...... on error resume next جعفر
  17. وعليكم السلام نعم ممكن ، وذلك بعمل جدول مؤقت للطباعة ويكون مصدر التقرير medicine في النموذج Form8 ، وعند النقر على الزر "طباعة باركود" ، فيجب ان نعمل سجلات بالعدد المطلوب في الجدول المؤقت ، ثم نعطي زر الطباعة DoCmd.OpenReport "medicine" حيث ان الجدول سيحتوي على عدد السجلات المطلوبة مباشرة ، بينما نحن الان ، نطلب منه ان يطبع ، ثم يطبع ، ثم يطبع ، ثم ... جعفر
  18. السلام عليكم أخي إسلام مادام صار عندك فضول في فهم قوة الاستعلام ، اليك هذا الرابط: http://www.officena.net/ib/topic/65067-ما-هي-طريقة-استيراد-بيانات-من-عدة-صفحات-اكسل-الى-جدول-اكسس/?do=findComment&comment=423657 جعفر
  19. السلام عليكم . هذا صحيح ، ولكن في نهاية الدالة تستطيع تختار النطاق Range او الورقة/sheet ، فعليه يمكنك ان تعيد الامر اكثر من مرة ، كل مرة لورقة اكسل اخرى (لاحظ اسماء الـSheet): DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "tbl_Sheets", Me.txtPath, False, "Sheet1$" DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "tbl_Sheets", Me.txtPath, False, "Sheet2$" DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "tbl_Sheets", Me.txtPath, False, "Sheet3$" . ولكن هذا الامر يتطلب منا ان نعرف عدد الاوراق/Sheets ، واسمائها ------------------------------------------------------------------------------------------------------------------------ والآن لشرح ما عملته انا: 1. عملت جدول اسمه tbl_Sheets ، لإدخال جميع المعلومات في جميع الاوراق/Sheets: . وعن طريق الكود (الكود سيكون في نهاية الموضوع) ، يأخذ البيانات ، فيصبح: . ثم يأتي الكود مرة اخرى ، فيملئ حقل ID لكل علامة: . ثم عملت استعلام جدولي CrossTab ، والذي به نستطيع ان نجعل بيانات احد الاعمدة عبارة عن اعمدة متفرقة ، يعني الحقل F1 ، اردنا ان نجعل كل مادة عبارة عن عمود مستقل): . وهذه نتائجه: . والان الى عمل استعلام آخر ، لجمع كل هذه السجلات: . فاصبحت: . الآن وقد اصبحت البيانات جاهزة لإلحاقها بالجدول النهائي Degrees ، نعمل استعلام الحاقي: . والكود الذي يقوم بكل العمل: Private Sub ImportData_Click() 'DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "tbl_Sheets", Me.txtPath, False, "Sheet1$" 'DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "tbl_Sheets", Me.txtPath, False, "Sheet2$" 'DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "tbl_Sheets", Me.txtPath, False, "Sheet3$" Dim blnHasFieldNames As Boolean, blnEXCEL As Boolean, blnReadOnly As Boolean Dim lngCount As Long Dim objExcel As Object, objWorkbook As Object Dim colWorksheets As Collection Dim strPathFile As String, strTable As String Dim strPassword As String ' Establish an EXCEL application object On Error Resume Next Set objExcel = GetObject(, "Excel.Application") If Err.Number <> 0 Then Set objExcel = CreateObject("Excel.Application") blnEXCEL = True End If Err.Clear On Error GoTo 0 ' Change this next line to True if the first row in EXCEL worksheet ' has field names blnHasFieldNames = False ' Replace C:\Filename.xls with the actual path and filename strPathFile = Me.txtPath ' "C:\Filename.xls" ' Replace tablename with the real name of the table into which ' the data are to be imported strTable = "tbl_Sheets" '"tablename" ' Replace passwordtext with the real password; ' if there is no password, replace it with vbNullString constant ' (e.g., strPassword = vbNullString) strPassword = vbNullString '"passwordtext" blnReadOnly = True ' open EXCEL file in read-only mode ' Open the EXCEL file and read the worksheet names into a collection Set colWorksheets = New Collection Set objWorkbook = objExcel.Workbooks.Open(strPathFile, , blnReadOnly, , _ strPassword) For lngCount = 1 To objWorkbook.Worksheets.Count colWorksheets.Add objWorkbook.Worksheets(lngCount).Name Next lngCount ' Close the EXCEL file without saving the file, and clean up the EXCEL objects objWorkbook.Close False Set objWorkbook = Nothing If blnEXCEL = True Then objExcel.Quit Set objExcel = Nothing ' Import the data from each worksheet into the table For lngCount = colWorksheets.Count To 1 Step -1 DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _ strTable, strPathFile, blnHasFieldNames, colWorksheets(lngCount) & "$" Next lngCount ' Delete the collection Set colWorksheets = Nothing '--------------------------------- ' importing is finished 'now organize the table, by adding the ID to all the group Dim rst As DAO.Recordset Set rst = CurrentDb.OpenRecordset("Select * From tbl_Sheets") rst.MoveLast: rst.MoveFirst RC = rst.RecordCount For i = 1 To RC If rst!F1 = "رقم الهوية" Then 'And Len(rst!ID & "") = 0 Then myID = rst!F2 rst.Edit rst!ID = myID rst.Update Else rst.Edit rst!ID = myID rst.Update End If rst.MoveNext Next i rst.Close: Set rst = Nothing 'append the data DoCmd.SetWarnings False DoCmd.OpenQuery "qry_Append_Sheets" DoCmd.SetWarnings True MsgBox "Done" ' Uncomment out the next code step if you want to delete the ' EXCEL file after it's been imported ' Kill strPathFile End Sub . . ولكن ، يجب عليك ان تحذف بيانات الجداول Degree و tbl_Sheets قبل ان تقوم بأي عمل جعفر 275.ImportDegrees.accdb.zip
  20. تفضل If Len(Me.dd & "") = 0 Or Len(Me.sf & "") = 0 Then MsgBox "اختر اسم من القائمة" Exit Sub Else DoCmd.OpenReport "tgweemmstmr", acViewPreview, , "[alsaf]='" & Me.dd & "' And [fsl]=" & Me.sf End If جعفر
  21. بس ان شاء الله اخونا العود ابو خليل ما يشوف هذا الرد ، لأني بكون مخالف (لأن قوانين المنتدى لا تسمح بأكثر من سؤال في موضوع واحد ) . لا فرق ، ولكن تأكد انك ممكن تضيف للاستعلام (يعني افتح الاستعلام وحاول تغير احد البيانات او تضيف سجل جديد ، فإذا صار التعديل ، فالنموذج يمكنه التعديل والاضافة ، واذا الاستعلام ما قبل التعديل والاضافة ، فلا تلوم النموذج ) جعفر
  22. عفوا الظاهر ما فهمت قصدك يعني المستخدم لازم يختار من القائمتين ، ثم يفتح التقرير؟ ويفتح التقرير على اساس الحقلين alsaf و fsl ؟ جعفر
  23. وعليكم السلام نفترض ان الحقل Name_ID هو الحقل الذي تعتمد عليه في اختيار سجلاتك ، اعمل استعلام جديد ، واختر الجدول data1 ، غيّر الاستعلام الى استعلام الحاقي للجدول data2 ، واضف الحقول التي تريدها ، والبرنامج سيضيف الحقول المتشابهة بين الجدولين (طبعا يجب عليك ان تغير الحقول يدويا اذا تطلب الامر) ، *** لا تلحق اي رقم الى حقل AutoNumber ، فهذا سيوقف الاستعلام ولن تعلم ما المشكلة *** في حقل Name_ID ، اذهب الى Criteria واضف: Forms!form1!form2!Name_ID واحفظ الاستعلام والآن ، في النموذج الفرعي ، انصحك : بعمل زر لكل سجل (او زر واحد في اعلى النموذج الفرعي) ، وتجعل حدث النقر يشغل الاستعلام ، او بعمب النقر المزدوج على احد الحقول ، وتعمل حدث النقر المزدوج يشغل الاستعلام . والسبب هو ، انك قد تحتاج الدخول في احد سجلات النموذج الفرعي لأي سبب ، فلا تريد ان تقيد المستخدم بعدم تمكنه من التنقل بين السجلات على كيفه ، وانما اعطه حلاً ابسط جعفر
  24. السلام عليكم . نعم ، ولكن بمراعاة ان القيم نص او ارقام : هكذا اذا كانت قيمة name نص "[name]='" & Me.mol & "'" وهكذا اذا كانت قيمة name رقم "[name]=" & Me.mol جعفر
×
×
  • اضف...

Important Information