-
Posts
9977 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
406
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو jjafferr
-
الاستعلام عن بيانات موجودة في قاعدة بيانات خارجية
jjafferr replied to osamaabdultawab@gmail.com's topic in قسم الأكسيس Access
هل جميع الملفات في برنامجك من نوع pdf ؟ اذا لا ، كيف لنا ان نعرف صيغة الملف ؟ -
الاستعلام عن بيانات موجودة في قاعدة بيانات خارجية
jjafferr replied to osamaabdultawab@gmail.com's topic in قسم الأكسيس Access
السلام عليكم 🙂 1. الاداة DbPix تحفظ المستندات في الجدولين التاليين: . بصيغة Blob في الحقول اعلاه في الجدولين ، والحقول من نوع OLE ، وهي احد انواع حقول المرفقات (واستخدمتها انا في برنامجي: هدية: إحمل برامجك داخل قاعدة بياناتك ) ، 2. من ضمن اعدادات اجهزة الاسكانر ، حفظ الملفات بمجموعة صيغ ، سواء الاوراق الفردية بصيغة jpg او bmp او الاوراق الجماعية بصيغة pdf او tif ، لهذا السبب فيجب ان تضبط الاسكانر علشان يصور الاوراق بصيغة pdf ، واللي بيأخذ جميع الاوراق اللي في الجهاز ، سواء ورقة واحدة او عدة اوراق ، وكذلك للأرشفة ، تأكد ان دقة التصوير 300dpi (على الاقل) ، ونقاوء الصورة 100% (بدون ضغط) ، وتحفظ الملف في مجلد معين (طبعا اذا عندك اكثر من مستخدم ، فيجب ان تحفظ الملف في ملف مشاركة على الشبكة) ، ومن ثم بزر من النموذج ، يتم حفظ الملف في مكانه الصحيح ، وحذفه من مجلد سكانر المشاركة ، بحيث يكون مجلد سكانر المشاركة دائما فارغ ، إلا لما تعمل سكان 🙂 جعفر -
الاستعلام عن بيانات موجودة في قاعدة بيانات خارجية
jjafferr replied to osamaabdultawab@gmail.com's topic in قسم الأكسيس Access
تم ارفاق الملف مرة اخرى ، بعد التعديل 🙂 الاخ اسامة ارفق البرنامج كاملا ، بينما نحن بحاجة الى جداول ونماذج معينة ، علشان نعرف سبب حجم البرنامج 🙂 جعفر -
الاستعلام عن بيانات موجودة في قاعدة بيانات خارجية
jjafferr replied to osamaabdultawab@gmail.com's topic in قسم الأكسيس Access
وعليكم السلام 🙂 1. انا لم اشاهد قاعدة بيانات اكسس يصل حجمها الى 2 جيجا ، إلا اذا فيها مرفقات !! فإذا فيها مرفقات ، فيجب عليك اخراج هذه المرفقات من قاعدة البيانات ، وحفظها في احد مجلدات الوندوز : . 2. اذا بالفعل برنامجك مافيه مرفقات ، واستعملت المرفق لتصغير حجمه : . ولا يزال في حدود 2 جيجا ، فيجب عليك نقل قاعدة بياناتك الى SQL Server ، فبياناتك خارج نطاق الاكسس ، وسيكون الاكسس بطيء في العمل. جعفر -
استخراج مدة الخدمة من التاريخ يعطي نتائج بالسالب
jjafferr replied to عبد اللطيف سلوم's topic in قسم الأكسيس Access
وعليكم السلام اخوي عبداللطيف 🙂 هذا الرابط فيه وحدة نمطية لطلبك 🙂 https://www.officena.net/ib/topic/80943-كيفية-حساب-عدد-الاشهر-بين-تاريخين/ جعفر -
🙂
-
المساعدة في طريقة كتابه جمله SQL داخل كود اكسس
jjafferr replied to Radwan0's topic in قسم الأكسيس Access
وعليكم السلام 🙂 نعم هذا صحيح ، فيجب ان لا نستعمل الكلمات المحجوزة للاكسس ، وهنا قام اخوي ابوخليل بوضع مرفق للأسماء المحجوزة ، فيه كذلك رابط مُعرّب : جعفر -
المساعدة في طريقة كتابه جمله SQL داخل كود اكسس
jjafferr replied to Radwan0's topic in قسم الأكسيس Access
لا وانما قصدي اعمل الاستعلام بالطريقة العادية مرة ثانية ، واذا اشتغل ، فيمكنك ان تأخذ جملة الـ SQL للكود 🙂 او طبعا اذا ممكن استعمال الاستعلام ، فلماذا الكود اصلا 🙂 جعفر -
السلام عليكم 🙂 مسألة Garbage in, garbage out (اذا تم ادخال بيانات خطأ، فالنتائج تكون خطأ) تنطبق على كل جزئية من بيانات قاعدة البيانات ، وليس التاريخ فحسب ، رجاء انظر في الرابط اللي وضعته انا في مشاركتي اعلاه : وستلاحظ فيه ان المستخدم اخطأ في ادخال تاريخ اليوم ، فسنة 2001 سنة كبيسة ولا يوجد فيها 29 يوم : 1. هذا مستحيل ، والتجارب اثبتت هذا ، فأنت تتعامل مع أناس من مختلف الطبقات ، وانا بنفسي شفت المهمل اللي يرمي مسؤوليه اخطاءه على البرنامج ، 3. وحتى هذه الطريقة لا يمكن الاعتماد عليها ، فالمثال من الموضوع الآخر يثبت هذا الشيء. ستقول يجب ان نتأكد من الادخال ، والذي معناه الرجوع للمادة رقم 2 مرة اخرى 🙂 2. وهذه هي الطريقة الصحيحة ، وهي محور كلام هذا الموضوع ، وهي استعمال الاوامر الصحيحة لقراءة التاريخ بالطريقة الصحيحة ، وهي وكما شرحتها انا بمثال في المشاركة التي وضعت رابطها ، وهي ان الاكسس يتعامل مع التواريخ بالتنسيق الامريكي شهر/يوم/سنه ، فيا نتعامل معها بهذه الطريقة ، وهي كما شرحها اخوي خالد : . او اوامر التاريخ التي تنص على مكان اليوم و الشهر والسنه ، مثل DateSerial : DateSerial(Year_السنة , Month_الشهر , Date_اليوم ) جعفر
-
المساعدة في طريقة كتابه جمله SQL داخل كود اكسس
jjafferr replied to Radwan0's topic in قسم الأكسيس Access
وعليكم السلام 🙂 في الاستعلام ، هذا الخطأ ممكن يظهر في مكانين: - المعيار ، وما عندك استعلامك معيار خاص يلزم قيمة كاملة ، - علاقة الربط بين جدولين (او ما شابه ذلك) ، وهنا اعتقد تكمن المشكلة ، فالرابط عندك بين حقل اسم وحقل رقم (طبعا حسب مفهومنا من مصطلحاتك) ، وبعض الاوقات يكون الاستعلام يعمل بطريقة سليمة ، ولكنك لاحقا قمت بتغيير نوع الحقل في الجدول ، فلن يعمل الاستعلام بوجود رسالة الخطأ : جعفر -
وهذا يأخذنا الى السؤال الازلي: ايهم جاء قبل ، البيضة او الدجاجة 🙂 فبما ان نظام الكمبيوتر سمح لنا نستعمل تنسيق محلي بصيغة dd/mm/yyyy ، والكود كذلك ، فبديهي ان يستعمل المبرمج هذه الصيغة في برمجته (وخصوصا ان الكود يسمح له) ، وهنا تأتي مشكلة عدم تطابق البيانات مع الكود ، بين كمبيوتر المبرمج وكمبيوتر المستخدم ، والامثلة في المنتدى كثيرة !! وللتخلص من جميع هذه الاشكالات ، لا يكفي ان تستعمل امر مثل CDate ، فسيحوله حسب تاريخ النظام ، لهذا السبب ، وكما ذكرت في هذا الموضوع ، فيجب استخدام اوامر التاريخ التي لها علاقة مباشرة باليوم والشهر والسنه مثل DateAdd او DateDiiff او DatePart او DateSerial : . وشكرا اخوي خالد انك اقتصرت قائمة الاوامر في مشاركتك اعلاه 🙂 جعفر
-
رحم الله والديك ، كفيت ووفيت 🙂 في الواقع في منها امثلة جديدة علي 🙂 جعفر
-
احسنت واجدت اخوي ابو ابراهيم ، وسلمت يداك 🙂 هي الفكرة جميلة ، وأجمل من التنفيذ ، وبالفكرة والتنفيذ تكون ولا أجمل 🙂 مرة اخرى ، بالفعل مبدع ، وشكرا جزيلا على الاثراء بالمشاركة 🙂 الحمدلله ، طلعنا بوجوه بيضاء 🙂 يعني تعتقد الكود اللي مقطع بهذه الطريقة الغريبة ، جاي لحاله جعفر
-
السلام عليكم 🙂 هذه الواجهة : 1. لما تفتح لك نافذة الاختيار ، تقدر تختار ملف واحد ، او عن طريق مسك زر Shift او Ctrl تقدر تختار اكثر من ملف ، 2. ستظهر لك اسماء الملفات اللي اخترتها هنا ، 3. هذا الزر اللي يجلب البيانات الى قاعدة البيانات ، 4. و بهذا الزر تختار المجلد ، ومنها يقوم البرنامج بجلب جميع ملفات الاكسل ، ويضع مسار الملفات في #2 . وهذه الاكواد ، 1. Private Sub Browse_Click() Dim varFile As Variant Me.txtPath = "" With Application.FileDialog(3) .title = "اختار ملف او عدة ملفات" .Filters.Clear .Filters.Add "Excel Files", "*.xls ; *.xlsx" '.Filters.Add "Excel Files", "*.csv" .AllowMultiSelect = True 'False .InitialFileName = "" If .Show = -1 Then 'Loop through each file selected and add them to the textbox For Each varFile In .SelectedItems Me.txtPath = varFile & vbCrLf & Me.txtPath Next End If End With End Sub . 4. Private Sub cmd_All_Files_In_Folder_Click() Dim strPattern As String, myDir As String, varFile As String If MsgBox("هل أنت متأكد من رغبتك في استيراد جميع الملفات" & objName & "؟", vbCritical + vbYesNo + 256, "تأكيد") = vbYes Then 'Important we use msoFileDialogFolderPicker instead of (...)FilePicker With Application.FileDialog(4) 'Optional: FileDialog properties .title = "Select a folder" .InitialFileName = "C:\" If .Show = -1 Then Me.txtPath = "" strPattern = "*.xls" 'Loop through each file selected and add them to the textbox myDir = .SelectedItems(1) & "\" varFile = Dir(myDir & strPattern, vbNormal) Do While varFile <> "" Me.txtPath = myDir & varFile & vbCrLf & Me.txtPath varFile = Dir Loop End If End With End If End Sub . 3. هذا الكود ينادي بقية الوحدات النمطية ، Private Sub Command1_Click() CurrentDb.Execute ("Delete * From Table1") CurrentDb.Execute ("Delete * From Temp4") 'call for multiple WorkBooks Call f_Import_WorkBooks("Temp4") MsgBox "تم استيراد البيانات بنجاح" End Sub f_Import_WorkBooks علشان سهولة استعمال الكود لملفات مثل هذه الملفات ، استيراد جميع الاوراق من الاكسل ، من جميع الملفات في المجلد ، وما له علاقة بكود استيراد البيانات (هذا الكود الذي ينادي الوحدة النمطية لإستيراد البيانات Call f_Import_to_Table(colWorksheets(lngCount)) ) ، مع ملاحظة ان هذا الكود لا يتغير بتغير نوع الملفات من موقع النور : Public Function f_Import_WorkBooks(strTable As String) 'import Sheets 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 Dim strPassword As String 'For Multiple files Dim x() As String x = Split(Me.txtPath, vbCrLf) For i = LBound(x) To UBound(x) - 1 strPathFile = x(i) ' 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 ' Replace tablename with the real name of the table into which the data are to be imported 'strTable = "Temp4" '"tablename" ' Change this next line to True if the first row in EXCEL worksheet has field names blnHasFieldNames = False ' 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 'Empty Table CurrentDb.Execute ("Delete * From " & strTable) DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _ strTable, strPathFile, blnHasFieldNames, colWorksheets(lngCount) & "$" 'save Results to Table Call f_Import_to_Table(colWorksheets(lngCount)) Next_lngCount: Next lngCount 'looping for Multiple files Next i ' Delete the collection Set colWorksheets = Nothing End Function . f_Import_to_Table وهنا نعمل الكود لإستيراد البيانات من الاكسل ، وهو الكود الذي يحتاج الى تغيير ، كلما اردنا استيراد بيانات مختلفة من موقع النور : Public Function f_Import_to_Table(Sheet As String) Dim myField As String Dim rst1 As DAO.Recordset, rst2 As DAO.Recordset Dim i As Long, j As Long Set rst2 = CurrentDb.OpenRecordset("Select * From Table1") 'يوجد عمودين لكل ورقة :F2 AND F8 For j = 2 To 8 Step 6 myField = "F" & j Set rst1 = CurrentDb.OpenRecordset("Select " & myField & " From Temp4 Where " & myField & " Is Not Null") rst2.AddNew Do Until rst1.EOF i = i + 1 If i = 1 Then rst2![Academic Year] = rst1(myField) rst2!Sheet = Sheet ElseIf i = 2 Then rst2![Academic Num] = Mid(rst1(myField), InStrRev(rst1(myField), " ") + 1) ElseIf i = 3 Then rst2![StName] = rst1(myField) ElseIf i = 4 Then rst2![F1] = rst1(myField) ElseIf i = 5 Then rst2![Subjects] = rst1(myField) i = 0 rst2.Update rst2.AddNew End If rst1.MoveNext Loop Next j rst1.Close: Set rst1 = Nothing rst2.Close: Set rst2 = Nothing End Function . بسبب انني فككت الكود اعلاه ، فالكود يفتح ويغلق Recorsets كثيرا ، مما يؤدي الى بطئ البرنامج (انا اعتبره بطيء ، ومو مثل ما اخوي محمد كان يتمناه بسرعته 🙄 ) ، ولكن اذا صار عندي وقت ان شاء الله انظر فيه مرة اخرى 🙂 جعفر 1206.2.Posters.mdb_accdb.zip
-
بحاجة للتعديل على كود العمر لكي يعمل حسب صيغة التاريخ الكامل
jjafferr replied to abouzak's topic in قسم الأكسيس Access
السلام عليكم 🙂 السبب اللي سألت هذا السؤال : واخونا الهاوي كل حلوله على اساس ان حقل تاريخ الميلاد DOB عبارة عن تاريخ ، لهذا السبب ، عندك حلين : 1. يا انك تغير حقل تاريخ الميلاد DOB ، الى تاريخ (لأنه رقم الآن) ، وعلى اساسه يمكنك استعمال اي من الحلول اللي اعطاك اخونا الهاوي ، او 2. تشوف طريقة اخرى علشان تعرض نتيجة العمر على اساس تاريخ الميلاد 🙂 جعفر -
وعليكم السلام 🙂 شكرا جزيلا على هذا الشرح ، بس لو تكرمت واكملت الشرح بأمثله ، علشان يكون الموضوع واضح ومكتمل 🙂 جعفر
-
في الواقع صار لي شوية وقت وانا اشوف كود سابق ، ولكني لازم ارجع الى الكود الاصل اللي انا عملته ، لأنه ما يكون فيه زيادات !! الصباح رباح ان شاء الله 🙂 جعفر
-
استفسار حول نسخ قيمة حقل لحقل اخر في نفس النموذج
jjafferr replied to ازهر عبد العزيز's topic in قسم الأكسيس Access
الآن انزلت برنامجك ، واتضح انك تحفظ قيمة num3 في الجدول ، لهذا السبب فطريقتي لا تنفعك 🙂 جعفر -
الافضل ان تضع مثال علشان نفهمه ، وعلى اساسه نعطيك الجواب 🙂 جعفر
-
استفسار حول نسخ قيمة حقل لحقل اخر في نفس النموذج
jjafferr replied to ازهر عبد العزيز's topic in قسم الأكسيس Access
؟ -
استفسار حول نسخ قيمة حقل لحقل اخر في نفس النموذج
jjafferr replied to ازهر عبد العزيز's topic in قسم الأكسيس Access
السلام عليكم 🙂 واذا ما كنت تريد تحفظ قيمة num3 في الجدول ، فيمكنك ان تكتب في اعدادات حقل num3 ، في مصدر بياناته (السطر الثاني بعد الاسم) ، وبدون اي كود : =[Bam] جعفر -
شكرا جزيلا 🙂 جعفر
-
سبحان الله ـ رُب ضارة ، نافعة !! طبعا انت قصدك Dim rst1, rst2 As ADODB.Recordset, rst3 As DAO.Recordset . انا اعرف انه ممكن ان نستعمل المعرف Variant للرقم او النص ، ولكن الذي لم اكن اعرفه انه ممكن استعمال Variant مع Recordset !! وبما انني استعملت الكود التالي ، واعطاني الاجابة الصحيحة : Dim rst1, rst2 As DAO.Recordset هذا يجعلني اقارن Variant بالـ Object في : Dim xlApp As Object 'Excel.Application Dim xlWB As Object 'Excel.Workbook فإذا استعملنا Variant او Object ، فالكود يكون صحيح ، ونحصل على اجابة صحيحة ، ولكننا لا نستطيع الاستفادة من Intellisense الكود في اعطائنا تكملة للكود (عند كتابة . او مسافة) 🙂 هذه معلومة جديدة لي ، شكرا اخوي الهاوي 🙂 جعفر
-
تفضل 🙂 هذا لملف واحد 🙂 Dim ImportFileName As String, myField As String Dim rst1 As DAO.Recordset, rst2 As DAO.Recordset Dim i As Long, j As Long ImportFileName = Me.txtPath CurrentDb.Execute ("Delete * From Table1") CurrentDb.Execute ("Delete * From Temp4") DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "Temp4", ImportFileName, False Set rst2 = CurrentDb.OpenRecordset("Select * From Table1") 'there are 2 columns per sheet: F2 and F8 For j = 2 To 8 Step 6 myField = "F" & j Set rst1 = CurrentDb.OpenRecordset("Select " & myField & " From Temp4 Where " & myField & " Is Not Null") rst2.AddNew Do Until rst1.EOF i = i + 1 If i = 1 Then rst2![Academic Year] = rst1(myField) ElseIf i = 2 Then rst2![Academic Num] = Mid(rst1(myField), InStrRev(rst1(myField), " ") + 1) ElseIf i = 3 Then rst2![StName] = rst1(myField) ElseIf i = 4 Then rst2![F1] = rst1(myField) ElseIf i = 5 Then rst2![Subjects] = rst1(myField) i = 0 rst2.Update rst2.AddNew End If rst1.MoveNext Loop Next j rst1.Close: Set rst1 = Nothing rst2.Close: Set rst2 = Nothing MsgBox "تم استيراد البيانات بنجاح" والى ان انت تعمل التغيير ، مثل برامجك الماضية ، في اختيار ملف او اختيار الكل ، آخذ قيلوله 🙂 جعفر 1206.Posters.zip
-
بحاجة للتعديل على كود العمر لكي يعمل حسب صيغة التاريخ الكامل
jjafferr replied to abouzak's topic in قسم الأكسيس Access
وعليكم السلام 🙂 لا تنسى ان حقل تاريخ الميلاد عندك هو رقم وليس تاريخ ، فعلى هذا الاساس ، رجاء اعطينا مثال ، شو اللي عندك ، وكيف تريد ان تكون النتيجة 🙂 جعفر