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

حدوث خطأ عند ربط الاكسس بنموذج وورد


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

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

لقد قرأت رد الاستاذ محمد طاهر في موضوع ربط الاكسس بنموذج وورد عن طريق ( Bookmark) وقمت بتنفيذه وكانت النتيجة مذهلة ..

وهذا رابط الموضوع :

http://www.officena.net/ib/index.php?showtopic=659&hl=

ولكن هناك مشكله وهي انه عند فتح ملف وورد جديد من نموذج (Template) باستخدام الأمر

Dim appWord As New Word.Application

" appWord.Documents.Add "C:\tafog.dot

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

قمت باضافة أمر لاغلاق الملف الذي قد تم فتحه بالامر السابق وقد استخدمت الامر appword.quit في حالة حدوث خطأ في التصدير ولكن لم يتم حل المشكله

ارجو ان تكون المشكله واضحه .. وارجو المساعدة

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

السلام عليكم

لا أدري ما هو الخطأ الذى يؤدي الى فتح الملف و عدم ظهوره للمستخدم

و لكن تتبع الخطأ و أوجد سببه ثم تجنب فتح الملف من الأصل فى حالة الخطأ

مثلا

If Not IsNull([Forms]![main]![name]) Then
         With appWord
        .Documents.Add "C:\reptcourse.dot"
        .
.
.
.
.
ز
        End If

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

أشكرك لإستجابتك السريعه لمشكلتي ..

والخطأ الذي يحدث هو عندما يترك احد الحقول فارغة تظهر الرساله (Invalid use of null ) وهذا يسبب بدء الكود وفتح الملف والتوقف عند تصدير الحقل الفارغ ..

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

.. هل هناك طريقه لاختبار الحقول المطلوبه على انها غير فارغه قبل البدء بتنفيذ الكود ؟؟؟

وهذا هو بداية الكود :

Dim rstContracts As New ADODB.Recordset

Dim appWord As New Word.Application

On Error GoTo Err_ContractToWord_Click

' Open a recordset based on the ContractsWithOpenIssues query.

rstContracts.Open "Page1_11", _

CurrentProject.Connection, adOpenKeyset, adLockOptimistic

' Open a document based on the memo template, turn off spell check,

' move to the MemoToLine bookmark, and then display Word.

With appWord

.Documents.add "C:\Contracts\contract.dot"

.ActiveDocument.ShowSpellingErrors = False

.ActiveWindow.View.SeekView = Word.WdSeekView.wdSeekPrimaryHeader

.ActiveDocument.Bookmarks("HeadAr").Select

appWord.Selection.TypeText [Forms]![Tender]![Contracts]![CONT NO Ar]

.ActiveDocument.Bookmarks("HeadEn").Select

appWord.Selection.TypeText [Forms]![Tender]![Contracts]![CONT NO]

.ActiveWindow.View.SeekView = Word.WdSeekView.wdSeekMainDocument

.Selection.GoTo wdGoToBookmark, Name:="B1"

appWord.Selection.TypeText SPR

.Selection.GoTo wdGoToBookmark, Name:="B2"

appWord.Selection.TypeText [Forms]![Tender]![Contracts]![CONT NO]

.Selection.GoTo wdGoToBookmark, Name:="B3"

appWord.Selection.TypeText [Forms]![Tender]![Contracts]![CONT NO Ar]

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

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

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

if IsNull( Me.NAME) then

msgbox ("Name is blank")

me.NAME.setfocus

exit sub

لكن احيانا اذا ادخلت قيمه في الحقل ثم قمت بمسحها لا يعتبر قيمه الحقل null ولا يتم تنفيذ الامر

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

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

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

if IsNull( Me.NAME) then

msgbox ("Name is blank")

me.NAME.setfocus

exit sub

لكن احيانا اذا ادخلت قيمه في الحقل ثم قمت بمسحها لا يعتبر قيمه الحقل null ولا يتم تنفيذ الامر

اخوي

في الحقول(مربع نص ، قائمه.....) التي تحتوي على حروف مثل الاسماء وغيرها استخدم داله Len لتأكد من عدم تركها فارغه كالتالي:

If Len(Trim$(Me!fristname & vbNullString)) = 0 Then
        MsgBox "الرجاء تعبئه حقل الاسم", vbOKOnly + vbCritical, "بيانات مفقوده!!"
        Me.fristname.SetFocus

بالنسبه لداله isNull فهذه تستخدم للارقام

طبعا مكان وضع الكود مهم مثلا

في حدث عند النقر في زر الامر وغيرها

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

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



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

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

Important Information