اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

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

قام بنشر (معدل)

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

لقد قرأت رد الاستاذ محمد طاهر في موضوع ربط الاكسس بنموذج وورد عن طريق ( 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

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