اذهب الي المحتوي
scince

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

Recommended Posts

scince

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

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

المثال عبارة عن شاشة ترسل البيانات وتفتح ملف 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

  • أعجبني 2

شارك هذه المشاركه


رابط المشاركه
شارك
scince

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

أخوكم...

شارك هذه المشاركه


رابط المشاركه
شارك
ميسم الكرام

ما شاء الله ..عمل ممتاز ..جزاك الله خيراً

شارك هذه المشاركه


رابط المشاركه
شارك
scince

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

شارك هذه المشاركه


رابط المشاركه
شارك
scince

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

ميسم الكرام

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

شارك هذه المشاركه


رابط المشاركه
شارك
Amgad

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

 

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

 

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

 

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

 

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

شارك هذه المشاركه


رابط المشاركه
شارك
scince

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

شارك هذه المشاركه


رابط المشاركه
شارك
سلطاني

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

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

شارك هذه المشاركه


رابط المشاركه
شارك
scince

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

شارك هذه المشاركه


رابط المشاركه
شارك
anas.soft

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

شارك هذه المشاركه


رابط المشاركه
شارك
Ahmad.Hasan

مجهود رائع تشكر عليه أخي ميهال...

شارك هذه المشاركه


رابط المشاركه
شارك
scince

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

 

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

( :ph34r: )

أخوك...

شارك هذه المشاركه


رابط المشاركه
شارك
scince

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

هناك توضيح بالنسبة للملف 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 فيجوال بسيك ابليكيشن

شارك هذه المشاركه


رابط المشاركه
شارك
scince

وهذه الدال الثانية التي تمرر القيم مباشرة الاتية من شاشة الديفلوبر الى ملف الورد 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

شارك هذه المشاركه


رابط المشاركه
شارك
scince

و الدالة 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 البرمجية

  • أعجبني 2

شارك هذه المشاركه


رابط المشاركه
شارك
scince

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

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

Ktrv.png

شارك هذه المشاركه


رابط المشاركه
شارك
scince

نأتي الان لاجزاء اكواد شاشة الديفلوبر بالذات  لجزء من الاجراء الذي يتم فيه تمرير جملة ال 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

جزاكم الله خيرا  يامهندس ميهال  .. عمل أكثر من رائع  ومفيد جدا جدا

شارك هذه المشاركه


رابط المشاركه
شارك
scince

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

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

شارك هذه المشاركه


رابط المشاركه
شارك
aloooshvb

السلام عليكم 

هل يعمل البرنامج المرفق على 11جي

وشكرا مقدما

شارك هذه المشاركه


رابط المشاركه
شارك
scince

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

شارك هذه المشاركه


رابط المشاركه
شارك
jedghaleb

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

شارك هذه المشاركه


رابط المشاركه
شارك
scince

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

شارك هذه المشاركه


رابط المشاركه
شارك
m_md

مشكور اخي الكريم لكن ماذا عن اوراكل فورم 10 جي

نفس الطريق ام ماذا

شارك هذه المشاركه


رابط المشاركه
شارك
scince

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

شارك هذه المشاركه


رابط المشاركه
شارك

انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد

يجب ان تكون عضوا لدينا لتتمكن من التعليق

انشئ حساب جديد

سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .

سجل حساب جديد

تسجيل دخول

هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.

سجل دخولك الان

×
×
  • اضف...