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

التصدير الى الاكسل بتسمية الحقل وليس اسمه


إذهب إلى أفضل إجابة Solved by jjafferr,

الردود الموصى بها

الاساتذة أعضاء المنتدى الكرام / السلام عليكم ورحمة الله

لدي قاعدة بيانات اكسس 2003 تم انشاءها منذ فترة طويلة جدا

في اسماء الحقول في الجدول قمت بتسجيل الاسماء باللغة الانجليزية

وفي الخصائص قمت بتسجيل في تسمية توضيحة بالاسماء العربية لكل حقل

المشكلة عند تصدير الجدول في جداول اكسل تظهر عناوين بعض الحقول باللغة الاجنبية

المطلوب تحويل اسماء الاعمدة عند تصدير الجداول الى اكسل تظهر باللغة العربية في الاكسل

علما بأن بعض اسماء هذه الاعمدة تظهر باللغة العربية وذلك منذ انشائها قديما (وبنفس الطريقة) ولم أنجح حاليا في تحويل جميع الحقول باللغة العربية لاني نسيت كيف تم تحويلها سابقا الى اللغة العربية في جداول اكسل
وجزاكم الله خيرا

رابط هذا التعليق
شارك

وعليكم السلام 🙂

 

هذا الكود من احد برامجي ، يقرأ تسمية الحقل من الجدول ، واذا لم يجد التسمية ، فيستخدم الاسم ،

Public Function ListTables()
On Error GoTo err_ListTables
    
    Dim tbdf As TableDef
    Dim fld As Field
    Dim iField_Caption As String
    Dim Field_Type As Integer

    For Each tbdf In CurrentDb.TableDefs

        'don't show system tables
        If Left(tbdf.Name, 4) = "tbl_" Then
            
            For Each fld In tbdf.Fields
                iField_Caption = fld.Properties("Caption")
                'Field_Type = DataType_Fields(fld.Type)

                'Debug.Print tbdf.Name & vbTab & fld.Name & vbTab & Field_Type & vbTab & iField_Caption
            Next
        End If  'left
    Next

Exit_ListTables:

    Set tbdf = Nothing: Set fld = Nothing


    Exit Function
err_ListTables:

    If Err.Number = 3270 Then
        'this field does not have a caption for it, give it the field name
        iField_Caption = fld.Name
        Resume Next
    Else
        MsgBox Err.Number & vbCrLf & Err.Description
        Resume Exit_ListTables
    End If
    
End Function

 

جعفر

رابط هذا التعليق
شارك

6 ساعات مضت, Eng.Qassim said:

ربما الجداول لاتبدأ ب tbl_

اليس من الاولى ان نستخدم بدلها

 If Left(tbdf.Name, 4) <> "MSys" Then

تحياتي لكم

نعم كلامك صحيح ، اذا اردنا ان نرى جميع الجداول ، ولا نرى جداول النظام ، ولكن ،

طريقتي في تسمية الجداول هي:

للجداول المرتبطة بالشبكة: tbl_abc

للجداول المحلية: loc_tbl_abc

للجداول المؤقته: tmp_tbl_abc

و نادرا ان اسمي احد الجداول باسم جدول النظام مثل Msys_abc (في الواقع اني ابداً لم اعمل هذا النوع من الجداول) ، فلا اريد ان يكون هناك مستخدم شاطر يعرف يبحث في الانترنت ويعرف كيف يظهر هذه الجداول ، ويحرق الاخضر واليابس !!

 

فالكود كان معمول حتى يستخرج تسميات/اسماء حقول الجداول التي تبدأ بـ _tbl  ، ولم اغير فيه🙂

 

جعفر

  • Like 1
  • Thanks 1
رابط هذا التعليق
شارك

9 ساعات مضت, ابا عمرو said:

المشكلة عند تصدير الجدول في جداول اكسل تظهر عناوين بعض الحقول باللغة الاجنبية

الله يطول عمرك اخوي ابا عمرو ، مرفقك لا فيه بيانات ، ولا حتى كود التصدير !!

فكيف تريدني اعدل فيه !!

ولما استعين بصديق سري لجلب هذه المعلومات ، تقولون عماني 😁

 

جعفر

  • Haha 2
رابط هذا التعليق
شارك

3 دقائق مضت, jjafferr said:

الله يطول عمرك اخوي ابا عمرو ، مرفقك لا فيه بيانات ، ولا حتى كود التصدير !!

فكيف تريدني اعدل فيه !!

ولما استعين بصديق سري لجلب هذه المعلومات ، تقولون عماني 😁

 

جعفر

الكود موجود ما يحتاج بخور سيدي جعفر .... ماكروا مرتبط بفانك .... 😄

  • Haha 1
رابط هذا التعليق
شارك

2 ساعات مضت, jjafferr said:

طريقتي في تسمية الجداول هي:

للجداول المرتبطة بالشبكة: tbl_abc

للجداول المحلية: loc_tbl_abc

للجداول المؤقته: tmp_tbl_abc

أعجبتني الفكرة 👍🏼😊

رابط هذا التعليق
شارك

11 ساعات مضت, ابا عمرو said:

ولكن قاعدة البيانات الخاصة بي أتمنى أن استطيع تعديل المطلوب

تفضل يا سيدي 🙂

 

جعفر

1506.Export catiopns to excel.mdb.zip

3 ساعات مضت, kanory said:

ماكروا مرتبط بفانك

طيّرت المزّة 🤣

  • Like 1
  • Haha 1
  • Confused 1
رابط هذا التعليق
شارك

استاذي الكريم / jjafferr

السلام عليكم ورحمة الله

جزاكم الله خيرا على ما قدمته

أنا أسف أردت التعديل في القاعدة بنفسي فشلت

لدي عدة جداول بالقاعدة وكنت أريد تصدير هذه الجداول  ثم حذف القاعدة كاملا واعادة استيرادهم من جديد بنفس اسماء الحقول الموجود في ملفات اكسيل التي تم تصديرها

أسف وأتمنى سعة صدركم لمساعدتي

مرفق القاعدة مصغرة وبها نموذج استيراد وتصدير الجداول والبيانات

db2.rar

رابط هذا التعليق
شارك

وعليكم السلام 🙂

 

31 دقائق مضت, ابا عمرو said:

لدي عدة جداول بالقاعدة وكنت أريد:

1. تصدير هذه الجداول 

2. ثم حذف القاعدة كاملا

3. واعادة استيرادهم من جديد بنفس اسماء الحقول الموجود في ملفات اكسيل التي تم تصديرها

 

1.

تفضل هذا التعديل :

Public Sub cmd_Export_NEW_Click()
On Error GoTo err_cmd_Export_NEW_Click

    Dim i_strSql As String
    Dim i_strWorkBook As String
    Dim i_strCellRef As String
    Dim i_strWorkSheet As String
    Dim i_strSaveAs As String
    Dim i_Auto_Fit As Integer
    Dim i_Delete_Exisiting_File As Integer
    Dim i_Open_The_File_on_Completion As Integer
    Dim i_Field_Names As Integer
    
            
    i_strSql = "qry_1"
    i_strWorkBook = MakeFolder([CurrentProject].[Path] & "\" & "MyBackup") & "جل الكتب.xls"
    i_strWorkSheet = ""                 'Sheet Name
    i_strCellRef = ""                   'start from A1
    i_strSaveAs = 56                    '.xls, some other extenstions are possible
    i_Auto_Fit = 1                      'yes, 2 don't fit
    i_Delete_Exisiting_File = 2         'yes, 1 don't delete, but add sheets to the existing
    i_Open_The_File_on_Completion = 1   'yes, 2 don't open
    i_Field_Names = 2                   'Captions, 1= field Names, 3= No names nor captions
    
    
    Call CopyRs2Sheet(i_strSql, i_strWorkBook, _
                      i_strWorkSheet, _
                      i_strCellRef, _
                      i_strSaveAs, _
                      i_Auto_Fit, _
                      i_Delete_Exisiting_File, _
                      i_Open_The_File_on_Completion, _
                      i_Field_Names)
                      
    
        i_strSql = "qry_2"
    i_strWorkBook = MakeFolder([CurrentProject].[Path] & "\" & "MyBackup") & "يانات أعضاء المكتبة.xls"
    i_strWorkSheet = ""                 'Sheet Name
    i_strCellRef = ""                   'start from A1
    i_strSaveAs = 56                    '.xls, some other extenstions are possible
    i_Auto_Fit = 1                      'yes, 2 don't fit
    i_Delete_Exisiting_File = 2         'yes, 1 don't delete, but add sheets to the existing
    i_Open_The_File_on_Completion = 1   'yes, 2 don't open
    i_Field_Names = 2                   'Captions, 1= field Names, 3= No names nor captions

    
    Call CopyRs2Sheet(i_strSql, i_strWorkBook, _
                      i_strWorkSheet, _
                      i_strCellRef, _
                      i_strSaveAs, _
                      i_Auto_Fit, _
                      i_Delete_Exisiting_File, _
                      i_Open_The_File_on_Completion, _
                      i_Field_Names)
    
    
Exit Sub
err_cmd_Export_NEW_Click:

    If Err.Number = 53 Then
        'file not found
        Resume Next
    
    ElseIf Err.Number = 2450 Then
        MsgBox Err.Number & vbCrLf & Err.Description
        DoCmd.Hourglass False
        Exit Sub
    
    Else
        MsgBox Err.Number & vbCrLf & Err.Description
    End If
    
End Sub

.

2. و 3. 

بدل
Private Sub أمر1_Click()
و
Private Sub أمر2_Click()



اكتب
public Sub أمر1_Click()
و
public Sub أمر2_Click()

.

فتصبح الدالة:

تصدّر لأكسل ،

تحذف بيانات الجداول ،

تستورد من اكسل ، يعني ما تحتاج زري الحذف والاستراد :

Public Function MyDatabase()

    'Export to Excel
    Call cmd_Export_NEW_Click
                      
    'Delete the existing data
    Call [Form_For Table].ÃãÑ1_Click
    
    'import the data
    Call [Form_For Table].ÃãÑ2_Click
    
End Function

.

انا لم اقم بالتجربة ، فرجاء تخبرنا بالنتيجة 🙂

 

جعفر

1506.1.Export catiopns to excel.mdb.zip

رابط هذا التعليق
شارك

استاذي الكريم / السلام عليكم ورحمة الله

بارك الله فيكم وفي علمكم وحفظكم الله

بخصوص تصدير الجداول يتم تصدير الجداول بطريقة سليمة ولكن المشكلة في حذف الجداول واستيرادها مرة ثانية هنا المشكلة

واضح اني تعبت حضرنك ولكن حاولت اعرف سبب المشكلة فشلت

وكما ذكرت لكم توجد مجموعة من الجداول وواضح ان الامر ليس بالسهل

أرجو أن يتسع صدركم لي وجعله الله في ميزان حسناتكم وزادكم علما

هل يشترط عمل استعلامات لكل جدول لاني سابقا لم اقم بفعل ذلك مرفق لكم مختصر للقاعدة القديمة للتوضيح فقط

وفي انتظار تعديل القاعدة الخاصة بكم أيهما أسهل

وجزاكم الله خيرا

1506.1.Export catiopns to excel.mdb.zip db3.mdb

رابط هذا التعليق
شارك

17 دقائق مضت, ابا عمرو said:

هل يشترط عمل استعلامات لكل جدول

لا ، تقدر تستعمل اسم الجدول بدل اسم الاستعلام ،

ولكن الاستعلام يعطيك مرونه في استعمال الفرز والتصفية 🙂

 

19 دقائق مضت, ابا عمرو said:

ولكن المشكلة في حذف الجداول واستيرادها مرة ثانية

انا لم انظر اصلا في كود الجزئين ، فسؤالك كان عن تصدير البيانات 🙂

 

ولكني لازلت لم افهم طلبك ، انت تصدر البيانات ثم تستوردها مرة اخرى ، من نفس الملف الذي تم تصديره ، الى نفس الجداول التي تم التصدير منها وحذف بياناتها !!

 

جعفر

رابط هذا التعليق
شارك

منذ ساعه, jjafferr said:

كني لازلت لم افهم طلبك ، انت تصدر البيانات ثم تستوردها مرة اخرى ، من نفس الملف الذي تم تصديره ، الى نفس الجداول التي تم التصدير منها وحذف بياناتها !!

نعم استاذي الكريم  أقوم بتصدير البيانات الموجودة في بعض الجداول في القاعدة ثم حذف بيانات من القاعدة وعمل استيراد لها من جديد وذلك لعدة أسباب قد يكون لقيامي بعمل تحديث للقاعدة واريد نقل البيانات الى جداول القاعدة الجديدة أو تصدير البيانات الى قاعدة شخص آخر أو غير ذلك

أتمنى عمل ذلك على القاعدة الاخيرة التي ارسلتها لكم بدون نقل البيانات من استعلامات لعدم الحاجة الى مزايا الاستعلامات حاليا

وجزاكم الله خيرا

db3.rar

رابط هذا التعليق
شارك

اليك التعديل للجدول بدل الاستعلام ،

استعمل هذه الحزئية لتصدير كل جدول ، وتقدر تكرر هذه الجزئية بعدد الجداول اللي عندك ، كما عملتها لك في مشاركتي السابقة ،

فالتعديل الوحيد هو ، بدلا عن

"i_strSql = "qry_1

اكتب اسم الجدول ، مثلا

 "جدول تسجيل الكتب"=i_strSql

كما تلاحظ في الكود التالي

    i_strSql = "جدول تسجيل الكتب"
    i_strWorkBook = MakeFolder([CurrentProject].[Path] & "\" & "MyBackup") & "جل الكتب.xls"
    i_strWorkSheet = ""                 'Sheet Name
    i_strCellRef = ""                   'start from A1
    i_strSaveAs = 56                    '.xls, some other extenstions are possible
    i_Auto_Fit = 1                      'yes, 2 don't fit
    i_Delete_Exisiting_File = 2         'yes, 1 don't delete, but add sheets to the existing
    i_Open_The_File_on_Completion = 1   'yes, 2 don't open
    i_Field_Names = 2                   'Captions, 1= field Names, 3= No names nor captions
    
    
    Call CopyRs2Sheet(i_strSql, i_strWorkBook, _
                      i_strWorkSheet, _
                      i_strCellRef, _
                      i_strSaveAs, _
                      i_Auto_Fit, _
                      i_Delete_Exisiting_File, _
                      i_Open_The_File_on_Completion, _
                      i_Field_Names)
                      

 

جعفر

رابط هذا التعليق
شارك

استاذب الكريم / السلام عليكم ورحمة الله

أشكركم على سعة صدركم

ولكن توجد مشكلتين في القاعدة التي أرسلتها حضرتك وهما

الاولي مفتاح الحذف لا يعمل جيث يظهر وظيفته مع مفتاح تصدير البيانات  ويعطي رسالة الموصحة بالصورة

الثانية كذلك لا مفتاح استراداد ايضا لا يعمل وبعطي نفس الرسالة

وجزاكم الله خيرا

Untitled.jpg

db3.rar

رابط هذا التعليق
شارك

ابا عمرو

تصدير البيانات الى الاكسل يكون "بتسمية الحقول" ، لا بإسم الحقل ،

فكيف تريد ان تستورد من نفس ملف الاكسل ، والذي يحمل "مسميات الحقول" ولا يحمل اسماء الحقول !!

 

هذه مشكلتك !!

 

جعفر

رابط هذا التعليق
شارك

تمام جزاكم الله خيرا

يعني مفش حل لهذا الخطأ ...

ولو تم تصدير البيانات عن طريق الاستعلامات الى ملف اكسيل كما في القاعدة التي أرسلتها حضرتك بالمرفق

هل يمكن استرداد البيانات مرة ثانية الى القاعدة ...

أتمنى ذلك مع تعديل القاعدة المرسلة منكم ليقوم بعملية الاسترداد مرة ثانية وجزاكم الله خيرا

معلش أنا أسف تعبت حضرتك

1506.1.Export catiopns to excel.mdb.zip

تم تعديل بواسطه ابا عمرو
ارفاق القاعدة
رابط هذا التعليق
شارك

  • أفضل إجابة
52 دقائق مضت, ابا عمرو said:

ولو تم تصدير البيانات عن طريق الاستعلامات بدل الجداول  الى ملف اكسيل واسترداده في القاعدة مرة ثانية

الحقول اللي تصدرها ، تريد استيرادها ، فما فرقت ، التصدير يصير من الجدول او الاستعلام ، فالخطأ سيظل نفسه !!

 

هناك حل انك تستعمل جداول مؤقته تستورد فيها من ملف الاكسل ، ثم تلحقها بالجدول الصحيح ، ثم تحذف بيانات الجدول المؤقت:

  1.  اذا كانت هذه الجداول المؤقته في نفس البرنامج ، فسيكبر حجم قاعدة البيانات ، لهذا السبب احبذ هذه الطريقة ،
  2. ولكن ممكن ان نجعل هذه الجداول المؤقته في قاعدة بيانات خارجية ، بحيث نصنعها عند الحاجة ، ثم نحذفها عند الانتهاء من عملها !!

 

الحل الآخر هو جلب البيانات عن طريق الكود ، وفي الكود نلحق البيانات للحقول الصحيحة ،

والحل الأخير ، وقد يكون الاسهل ، وهذا يعتمد على ان مجلد واسماء الملفات تظل مثل ما هي ولا تتغير (يجب عليك تعديلها لأول مرة فقط) ، وعليه نستطيع عن طريق الاستعلام ان نستورد البيانات الى الجدول الصحيح 🙂

 

في انتظار ردك 🙂

 

جعفر

رابط هذا التعليق
شارك

أستاذي الكريم زادكم الله علما وبارك فيكم

تمام حلول حضرتك ممتازة

أولا بخصوص حجم البرنامج سيكبر هو أساسا حجمه صغير ومفش مشكلة يكبر عن حجمه الحالي

ثانيا : اللي حضرتك نشوفه أفضل وأسهل هو الذي أفضله على أن يكون الجداول المؤقتة بنفس القاعدة وليس في قاعدة منفصلة

كما أفضل أن تكون عملية التصدير للاستعلامات وليس للجداول كما ذكرت حضرتك للمرونة في الاستعلامات (فرز ، وتصفية)

ثالثا : بعد عملية التصدير لا داع لفتح ملفات الاكسل مباشرة لعدم الحاجة لذلك

وأخيرا عملية التصدير تتم لوحدها أي بدون حذف الببيانات ، كذلك عملية حذف البيانات ثم عملية استيراد البيانات مرة أخرى كلا عملية مستقلة

وليس لدى ما أقدمه لكم الا كما قال الرسول صلى الله عليه وسلم  "من أتى إليكم معروفًا فكافئوه، فإن لم تجدوا ما تكافئونه فادعوا له حتى تعلموا أن قد كافأتموه

جزاكم الله خيرا وبارك فيكم وفي علمكم

db3.mdb

تم تعديل بواسطه ابا عمرو
رابط هذا التعليق
شارك

السلام عليكم 🙂

 

لوسمحت تعبئ بيانات في الجداول ، ثم تستخدم ازرار النموذج لعمل اللازم ، ووافنا بالنتيجة 🙂

لا تفتح الاستعلام قبل ان تستورد ، وبعد ان تستورد لأول مرة ، يمكنك فتح الاستعلام في وضع التصمي 🙂

 

جعفر

1506.2.Export catiopns to excel.mdb.zip

رابط هذا التعليق
شارك

اخي اباعمرو 🙂

 

اول مرة تستعمل البرنامج على كمبيوتر جديد :

1. اعمل تصدير ،

2. اعمل حذف (هذه الخطوة مو ضرورية ، ولكن لو لم تعملها سيكون عندك تكرار عند عمل استيراد) ،

3. اعمل توريد/استيراد
 

الآن الاستعلامات ممكن ان تفتحها في وضع التصميم ، وتعدل فيها ، لأنها اخذت المسار الصحيح لملفات الاكسل 🙂

 

جعفر

رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information