الانتقال إلى المحتوى

مثبت ارسال بيانات الى Ms Word 2007 لملف موجود مسبقا من شاشة ديلفوبر 6i باستدعاء دوال Vba


scince

Recommended Posts

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

اللهم تقبل اعمالنا لوجهك الكريم

المثال عبارة عن شاشة ترسل البيانات وتفتح ملف Ms Word 2007 موجود من سابق ومنسق جاهز وتضع البيانات في مواضع محددة مسبقا اي حيث تريد ويعتبر المثال بصراحة نقلة نوعية في التعامل مع office 2007 وبالذات بجانب الماكرو والتي تكتبه بلغة vba تدعمها Office 2007 اي بمعنى ادق تخاطب مباشر بين form 6i و vba من خلال استدعاء دوال موجودة في ملف Ms Word 2007 كتبة بلغة Vba  حيث ان وظائف الدوال ارسال بينات مربعات نص أو جملة select تنفذ في vba والتي تتصل من خلال احدى الدوال ب أوراكل وتنفيذ جمل الكويري الملف المرفق عبارة عن مجلد مضغوط اسمه OPENWORD  وفيه ملفان ملف ورد وملف شاشة ديفلوبر افتح الضغط وضع المجلد في :C مباشرة

ملاحظات هامة جدا:

لمن يعمل على windows 7 64 bit لتحيقي الاتصال با أوراكل من Office 2007  لازم إتباع الخطوات التي بالرابط في مشاركة سابقة

هل تعاني من مشكلة الاقواس في المسار C:\program Files (x86)

http://www.araboug.org/ib/index.php?showtopic=57597

يجب تفعيل الماكرو في Ms Word 2007

هذه صورة الشاشة :

bk7yE.png

 

وهذه صورة الملف الورد قبل ادخال البيانات:

4sGb0v.png

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

C7KY.png

OPENWORD.rar

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

  • الردود 34
  • البداية
  • اخر رد

أكثر المشاركين في هذا الموضوع

  • scince

    20

  • m_md

    2

  • lozyy

    2

  • ميسم الكرام

    1

طبعا الاسماء في المثال لاعلام العلم والمعرفة من المشرفين ولم يسعني ذكرهم كلهم فقط 5 منهم فيعذروني الذين طرحت اسمائهم ويعذروني من لم اطرح اسمائهم فكلكم رائعين و أفكاركم منهال علم ومعرفة لهذا المنتدى

أخوكم...

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

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

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

واياك أختي المشرفة الفاضلة 

ميسم الكرام

صاحبة النشاط المتواصل الدؤوب وشكرا لمرورك الكريم

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

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

 

الأخ الفاضل / ميهال 

 

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

 

افكار جديدة ..... جاري تحميل المرفقات 

 

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

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

شكرأ لك أخي الفاضل امجد حلمي على كلامك الطيب وشكرا لمرورك الكريم

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

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

ما شاء الله عمل رائع بارك الله فيك اخي و جزاك خيرا إن شاء الله

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

وعليكم السلام ورحمة الله وبركاته واياك أخي سلطان وشكرا لمرورك الكريم

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

اخي الفاضل ميهال لا يسعني الا ان اقول لك بارك الله فيك وبارك الله لك وبارك الله عليك انت فعلا رئــــــــــــــع ...

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

شكرا لك أخي العزيز  أنس وانت أكثر من رائع وشكرا لمرورك الكريم

 

اشكرك أخي أحمد , و لا شكر على واجب وانت سباق للبذل والعطاء...

( :ph34r: )

أخوك...

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

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

هناك توضيح بالنسبة للملف Ms Word والذي اسمه OPENWORD.dotm هو عبارة عن ملف من نوع template مفعل فيه ال macro لو تلا حظوا في امتداده ,ينتهي ال template  ب dot ولانه من نوع فيه ماكرو مفعل انتهى زي ما انتم شايفين ب dotm ولفتح هذا النوع لتعديل الكود اللي فيه  لا تفتحه بطريقة النقر المزدوج لانه سياخذ نسخة منه وسيفتح ملف جديد فطريقة فتحه لتعديل محتواه او كود ال vba اعمل الطريقة هذه افتح برنامج ال Ms Woerd ومن ثم افتح الملف من داخله وبعدها عدل زي ماتريد

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

Public Sub ora(ByVal sqlw As String, ByVal sqlw1 As String, ByVal sqlw2 As String, ByVal sqlw3 As String, ByVal sqlw4 As String, ByVal sqlw5 As String)
ActiveDocument.SelectContentControlsByTitle("namecon1").Item(1).Range.Text = MEEHORAQ("PRGRAMER-ME", "ORACLE", sqlw, "SCOTT", "TIGER")
ActiveDocument.SelectContentControlsByTitle("namecon2").Item(1).Range.Text = MEEHORAQ("PRGRAMER-ME", "ORACLE", sqlw1, "SCOTT", "TIGER")
ActiveDocument.SelectContentControlsByTitle("namecon3").Item(1).Range.Text = MEEHORAQ("PRGRAMER-ME", "ORACLE", sqlw2, "SCOTT", "TIGER")
ActiveDocument.SelectContentControlsByTitle("namecon4").Item(1).Range.Text = MEEHORAQ("PRGRAMER-ME", "ORACLE", sqlw3, "SCOTT", "TIGER")
ActiveDocument.SelectContentControlsByTitle("namewith1").Item(1).Range.Text = MEEHORAQ("PRGRAMER-ME", "ORACLE", sqlw4, "SCOTT", "TIGER")
ActiveDocument.SelectContentControlsByTitle("namewith2").Item(1).Range.Text = MEEHORAQ("PRGRAMER-ME", "ORACLE", sqlw5, "SCOTT", "TIGER")
End Sub

الاسم PRGRAMER-ME  يمثل اسم الكمبيوتر المنزل فيه قاعدة البيانات 

الاسم ORACLE يمثل اسم قاعدة البيانات

والاسم SCOTT   معروف طبعا اسم المستخدم

الاسم TIGER  كلمة السر

وللتوضيح الاسماء namecon1 و namecon2 و namecon3 و namecon4 و namewith1 و namewith2  وهي الكائنات النصية في صفحة ملف الورد التي تأتيها القيم النصية من جمل الكويري المرر

طبعا الكود أعلاه بلغة VBA فيجوال بسيك ابليكيشن

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

وهذه الدال الثانية التي تمرر القيم مباشرة الاتية من شاشة الديفلوبر الى ملف الورد Ms Word الى نفس الكائنات النصية المذكورة سابقا

Public Sub ora3(ByVal sqlw As String, ByVal sqlw1 As String, ByVal sqlw2 As String, ByVal sqlw3 As String, ByVal sqlw4 As String, ByVal sqlw5 As String)
 ActiveDocument.SelectContentControlsByTitle("namecon1").Item(1).Range.Text = sqlw
 ActiveDocument.SelectContentControlsByTitle("namecon2").Item(1).Range.Text = sqlw1
 ActiveDocument.SelectContentControlsByTitle("namecon3").Item(1).Range.Text = sqlw2
 ActiveDocument.SelectContentControlsByTitle("namecon4").Item(1).Range.Text = sqlw3
 ActiveDocument.SelectContentControlsByTitle("namewith1").Item(1).Range.Text = sqlw4
 ActiveDocument.SelectContentControlsByTitle("namewith2").Item(1).Range.Text = sqlw5
End Sub
رابط هذا التعليق
شارك

و الدالة MEEHORAQ  التي تقوم بالاتصال بقاعدة بينات أوراكل في ملف ال Ms Word والتي تستدعيها الدالة التي تمرر جمل الكويري ora ودالة الاتصال MEEHORAQ  لن تحتاجها في حالة انك استدعيت الدالة ora3  التي تمرر قيم نصية مباشرة دون الحاجة للاتصال بقاعدة بيانات

الكود ادناه لدال الاتصال MEEHORAQ الت تقوم بانشاء كائن اتصال ADODB   برمجيا ..

اتركم مع الدالة

Function MEEHORAQ(strHost As String, strDatabase As String, strSQL As String, strUser As String, strPassword As String)
  Dim strConOracle, oConOracle, oRsOracle
  Dim StrResult As String
   StrResult = ""
  strConOracle = "Driver={Microsoft ODBC for Oracle}; " & _
         "CONNECTSTRING=(DESCRIPTION=" & _
         "(ADDRESS=(PROTOCOL=TCP)" & _
         "(HOST=" & strHost & ")(PORT=1521))" & _
         "(CONNECT_DATA=(SERVICE_NAME=" & strDatabase & "))); uid=" & strUser & " ;pwd=" & strPassword & ";"
  Set oConOracle = CreateObject("ADODB.Connection")
  Set oRsOracle = CreateObject("ADODB.Recordset")
  oConOracle.Open strConOracle
  Set oRsOracle = oConOracle.Execute(strSQL)
  Do While Not oRsOracle.EOF
      If StrResult <> "" Then
        StrResult = StrResult & Chr(10) & oRsOracle.Fields(0).Value
      Else
        StrResult = oRsOracle.Fields(0).Value
      End If
    oRsOracle.MoveNext
  Loop
  oConOracle.Close
  Set oRsOracle = Nothing
  Set oConOracle = Nothing
  ORAQUERY = StrResult
End Function

بكذا نكون اكملنا شرح مكوانات ملف ال OPENWORD.dotm البرمجية

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

الكائن المستخدم لإظهار البيانات القادمة من شاشة الديفلوبر سوى أكان مباشرة أو بجملة كويري هو عنصر تحكم اسمه نص منسق كما في الصورة التالية

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

Ktrv.png

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

نأتي الان لاجزاء اكواد شاشة الديفلوبر بالذات  لجزء من الاجراء الذي يتم فيه تمرير جملة ال select  كما ترون الكود ينفذ بعد عمل شيك لمربع الاختيار الخاص بتمرير بجملة select

IF :CHK3 =1 THEN
MEEH_Args := Ole2.Create_Arglist;
Ole2.Add_Arg(MEEH_Args,:S1 );
Ole2.Add_Arg(MEEH_Args,:S2 );
Ole2.Add_Arg(MEEH_Args,:S3 );
Ole2.Add_Arg(MEEH_Args,:S4 );
Ole2.Add_Arg(MEEH_Args,:S5 );
Ole2.Add_Arg(MEEH_Args,:S6 );
Ole2.Invoke(MEEH_Document, 'ORA', MEEH_Args);
END IF ;

وهذا جزاء الكود الخاص بتمرير البينات مباشرة من مربعات النصوص طبعا من شاشة ديفلوبر

IF :CHK2 = 1 THEN
MEEH_Args := Ole2.Create_Arglist;
Ole2.Add_Arg(MEEH_Args,:t2 );
Ole2.Add_Arg(MEEH_Args,:t3 );
Ole2.Add_Arg(MEEH_Args,:t4 );
Ole2.Add_Arg(MEEH_Args,:t5 );
Ole2.Add_Arg(MEEH_Args,:t6 );
Ole2.Add_Arg(MEEH_Args,:t7 );
Ole2.Invoke(MEEH_Document, 'ORA3', MEEH_Args);
END IF;

الاخوة المطلعون اذا كان هناك ملاحظات او اسئلة حول المثال نناقشها ونحلها مع بعض

أخوكم...

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

هلا بالغالي والعزيز

ENG_HOSSAM_WALLY واياك اخي المهندس المبدع حسام اشقتنا لمشاركاتك الرائعة في المنتدى أخي حسام

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

  • بعد 10 شهور...
  • بعد 2 أسابيع...

الشاشة تعمل على ديفلوبر 6i ولا يعمل على 11 ولم اجرب تحويلها لاصدار 11 واذا حد اخر يمكن يطور المثال سنتستفيد منه
تحياتي لك aloooshvb

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

  • بعد 4 أسابيع...

واياك اخي الكريم وشكرا لمرورك الكريم

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

  • بعد 3 شهور...

بصراحة ما جربت على10g

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

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

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

×   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

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

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

جاري التحميل



×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية