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

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

قام بنشر

الفاتورة السعودية المبسطة


أهلا بكم..

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

أرجو أن تنال استحسانكم..


 

  • Like 4
قام بنشر
11 ساعات مضت, الفلاحجى said:

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

لم استطع تجربه المرفق لظهور الاخطاء التاليه

image.png.700e3ee1b3f211a7d0b9c3fc9682e9a8.png

image.png.c472dffd5a444c3e7a514551654079c8.png

تقبل تحياتى ومرورى

 

 

لتتمكن من نقل هذه الأشياء إلى مشروعك بشكل سليم أنت بحاجة إلى فهم آلية عملها..

سوف أقوم بشرح ذلك قريبا..

 

قام بنشر

أهلا بكم..

أعلم أن هذا الأسلوب جديد بعض الشيء لكن أعتقد أنه بالإمكان التأقلم معه! خاصة وأن الشفرة ليست بالمعقدة..

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

كان القصد من هذه المقدمة الإطرائية هو إزالة الرهبة من استخدام أسلوب الدمج بين أكسس والويب..

 

لنعد إلى المشروع ونتعرف على مكوناته وطريقة عمله..

:: يحتوي الجدول (WebCode) على ثلاث سجلات؛ يحتوي كل منها على نص برمجي يقوم بتهيئة العمل على متصفح الويب..

-- السجل الأول يحتوي على نص HTML. يقوم هذا النص بتهيئة الصفحة للعمل..

ما يهمنا في هذا النص هو تبويب <head> الذي يحتوي التعليمات التي تجعل متصفح الويب يعمل كمتصفح Edge.

-- السجل الثاني يحتوي على نص CSS يقوم هذا النص بتزيين الصفحة وترتيب مكوناتها..

سوف أشرح في وقت لاحق الفرق بين Id, Class، وعن كيفية الوصول إلى عناصر الصفحة من أجل تزيينها.

-- السجل الثالث يحتوي على شفرة JavaScript المعني بتكوين رمز QR..

ما يهمنا من هذه الشفرة هو طريقة استخدامها فقط!..

 

:: تحتوي قاعدة البيانات على وحدين نمطيتين..

-- الأولى للتحويل من وإلى النظام العشري TLVModule

-- الثانية للتحويل من وإلى نظام 64بت UTF8EncodeDecode

كلتا الوحدتين مستعارة من الويب وليس لي فيها عمل..َ

 

:: مصدر مكتبة الجافا سكربت: QRCode Library (JavaScript)

:: مصدر الوحدات النمطية: TLV.QRCode.MSAccess.VBA

  • Like 3
قام بنشر
5 ساعات مضت, أبو إبراهيم الغامدي said:

لتتمكن من نقل هذه الأشياء إلى مشروعك بشكل سليم أنت بحاجة إلى فهم آلية عملها..

اخى واستاذى الغالى لم انقل شىء

قمت بتجربة الملف وظهرت لى تلك الاخطاء فقط

منذ ساعه, أبو إبراهيم الغامدي said:

أهلا بكم..

أعلم أن هذا الأسلوب جديد بعض الشيء لكن أعتقد أنه بالإمكان التأقلم معه! خاصة وأن الشفرة ليست بالمعقدة..

نعم جديد علينا وسيكون من الممتع التعلم اكثر والاستفاده من خبراتك فى هذا المجال

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

قام بنشر

اضافة جميلة وفريدة من نوعها الى مكتبة المنتدى

المثال يعمل على اكمل وجه

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

 

  • Like 1
قام بنشر
25 دقائق مضت, ابوخليل said:

اضافة جميلة وفريدة من نوعها الى مكتبة المنتدى

المثال يعمل على اكمل وجه

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

 

أهلا بك أستاذ أبو خليل..

أشكرك على إطرائك، كما أشكرك أيضا على تطمينك لي بسلامة العمل.

قام بنشر
9 دقائق مضت, أبو إبراهيم الغامدي said:

أهلا بك أستاذ أبو خليل..

أشكرك على إطرائك، كما أشكرك أيضا على تطمينك لي بسلامة العمل.

على ما يبدوا ان المشكله من عندى سوف اقوم بتجربته على جهاز آخر غدا واوفيكم بالرد ان شاء الله

جزاك الله خيرا اخى واستاذى العزيز

  • Thanks 1
قام بنشر
6 ساعات مضت, ابوخليل said:

اضافة جميلة وفريدة من نوعها الى مكتبة المنتدى

المثال يعمل على اكمل وجه

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

 

لم استطع تحميله ممكن المساعده 

  • Like 1
قام بنشر

أهلا بكم..

:: نأتي الآن إلى التعريف بالشفرة المشغلة لمتصفح الويب وطريقة عملها.. 

!! في أكسس الإصدر العاشر وما بعده أصبح إداة متصفح الويب أحد أدوات أكسس الأساسية مع بقاء الأداة ضمن أدوات Microsoft ActiveX، وهذه الأخيرة هي المستخدمة في المشروع، كما أن الأداة المضمنة مع أكسس تختلف برمجتها قليلا عن أداة ActiveX. أرجو التنبه لهذا..

# مكتبات DLL: حتما إذا كنا نتعامل مع أدوات ActiveX سوف يكون هناك مكتبات DLL، ولذا عند إدراج الأداة في النموذج يقوم أكسس بالتأشير على المكتبات اللازمة للعمل، كما أن هناك مكتبات اختيارية تساعد في تحسين العمل، لكن ليست ضرورية. سوف أعرف بتلك المكتبات عند الحديث عن الشفرة التي تستختتذكردمها..

الجدير بالذكر؛ أن تكون على علم أن أكسس يفقد الإتصال بهذه المكتبات عند قص ولص الأداة، أو عند نقل النموذج المتضمن لهذه الأداة.. كن على ذكر من ذلك!!

#  مكتبات DLL: في الصورة التالية المكتبات التي المشار إليها سابقا؛ ذات اللون الأزرق ضرورية يتم التأشير عليها تلقائيا عن أضافة أداة متصفح الويب والتي أسفل منها اختيارية، بمعنى أننا نؤشر عليها باختيارنا من أجل تحسين أسلوب برمجة الشفرة، لكن إذا استخدمتها ضمن الشفرة فإنه يصبح من الضروري إعادة التأشير عليها..

Capture.PNG.245febe1d3eba4863f625f4c59fdfdc4.PNG

 

 

 

 

 

 

 

 

 

 

 

# يتضمن النموذج ثلاث خصائص غرضية للتحكم في طبقات أداة المتصفح..

-- الخصيصة الأولى للتحكم في الطبقة الأولى من الأداة، والتي هي بمثابة متصفح الويب..

Public Property Get WB() As WebBrowser
   Set WB = Me.WebBrowser0.Object
End Property

-- الخصيصة الثانية للتحكم في الطبقة الثانية من الأداة، والتي هي بمثابة صفحة الويب..

    Public Property Get WD() As HTMLDocument
       Set HD = Me.WebBrowser0.Document    
       Set WD = HD    
    End Property

-- الخصيصة الثالثة للتحكم في الطبقة البينية بين متصفح الويب وصفحة الويب، وهي بمثابة النافذة الأم لصفحة الويب..

    Public Property Get PW() As HTMLWindow2
       Set PW = Me.WebBrowser0.Document.parentWindow    
    End Property

!! لاحظ أن الإعلان (التصريح) عن هذه الخصائص أخذ الإعلان العام Public وذلك من أجل إظهارها عند استخدامها من خارج النموذج..

  • Like 2
قام بنشر

ما شاء الله شغالة مية مية وفعلا فريدة من نوعها كما تكرم استاذنا ابو خليل 

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

  • Like 1
قام بنشر

اكون لحضرتك من الشاكرين لو وضحت جزء المعاينة 

   WB.ExecWB OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_DODEFAULT
اتعمل ازاي

قام بنشر

أهلا بكم..

من أكثر الأشياء التي تجعل مطوري أكسس يصرفون النظر عن استخدام إداة متصفح الويب؛ تحسسه الشديد للشفرة في الصفحات المحلية..

ولحل هذه الإشكالية هناك طريقتان فيما أعلم..

-- الأولى: حفظ الصفحة في مجلد السيرفر المحلي: IIS  أوغيره من السيرفرات المحلية مثل: wamp..

-- الثانية: نقوم بإنشاء صفحة فارغة بالطريقة التالية..

Private Sub Form_Open(Cancel As Integer)
   WB.Navigate "about:blank"
End Sub

!! من المعلوم أن أداة متصفح الويب تعمل على منصة iefram.dll وهذه المنصة تدعم إلى الإصدر السابع فقط من متصفح Internet Explorer. هذه المنصة لا تدعم HTML5 و CSS3، لكن ميكروسوف قدمت حلا لهذه الإشكالية باضافة المعرف التالي إلى مكون (وسم) <head>..

<head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
</head>

# الخطوة التالية هي حشر (حقن Injection) وسوم HTML و وسوم CSS وشفرة JS إلى صفحة HTML الفارغة باستخدام دالة البيانات DLookup 

-- الوظيفة التالية تبسط استخدام دالة Dlookup

Public Function WebCode(ID As Long) As String
   WebCode = DLookup("[Code Content]", "WebCode", "id=" & ID)
End Function

-- السجل الأول في جدول WebXCode يحتوي على وسوم HTML المطلوية..

 
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
</head>
<body>
    <div id="invoice-content" class="invoice-content">
        <div class="qr-result">
            <div id="qr-stamp" class="qr-stamp"></div>
            <div id="info" class="info"></div>
            <div id="menu" class="context-menu"></div>
        </div>
    </div>
    <style id="mycss"></style>
    <script id="qr-code"></script>
    <script id="myscript"></script>
</body>
 

وتطلب بهذه الطريقة: WebCode(1) وتوضع في حدث عند الفتح بهذه الطريقة

Private Sub Form_Open(Cancel As Integer)
   WB.Navigate "about:" & WebCode(1)
End Sub
 

-- أما وسوم CSS وشفرة JS فيتم حقنها بعد إكتمال فتح الصفحة بهذه الطريقة

Sub HTML()
   If WB.ReadyState = READYSTATE_UNINITIALIZED Then
      Exit Sub
   End If
   
   '--  html template
   Call InvoiceInfo
   
   '--  html library
   WD.getElementById("mycss").innerHTML = WebCode(2)
   WD.getElementById("qr-code").innerHTML = WebCode(3) _
   & ";var Xqrcode =new QRCode('qr-stamp'," _
   & "{text:'QR Code',colorDark:'DarkBlue',colorLight:'WhiteSmoke',width:120,height:120});"
   
End Sub

!! بهذه الطريقة نتجاوز تحذيرات المتصفح من وجود الشفرة البرمجة، كما أننا قمنا بتأهيل المتصفح للعمل بمواصفات متصفح Edge..

# فيما يتعلق بجزئيات الشفرة سوف أتحدث عنها لاحقا.. 

 

!! أجريت بعض التعدلات على المرفق لتحسين أداءه

 

 

 

  • Like 3
قام بنشر

أهلا بكم..

نأتي الآن على الجزء المهم في هذه المشاركة: الجافا سكربت..

# سبق الذكر أن رمز الاستجابة السريع يتم إنتاجة بواسطة مكتبة قدمها أحد مطويري جافا سكربت، وقد قمت بتضمينها إلى جدول شفرات الويب WebXCode Table لأتمكن من استخدامها ضمن صفحة الويب، وذلك عن طريق الحقن الصوري! بمعنى أنك لو ضغط بزر الفارة الأيمن على الصفحة ثم نقرت View Source لن ترى هذه المكتبة، لكن في الحقيقة إنها موجودة! لكن تعمل في الخلفية!

-- يلحق تضمين المكتبة، الأعلان عن متغير غرضي يحمل نسخة من المكتبة يُعرّف بمكان وضع الرمز والخصايص التي يحملها..

var Xqrcode =new QRCode('qr-stamp',{text:'QR Code',colorDark:'DarkBlue',colorLight:'WhiteSmoke',width:120,height:120});

وقد تم تضمين المكتبة والتصريح عن المتغير بالطريقة التالية

WD.getElementById("qr-code").innerHTML = WebCode(3) _
   & ";var Xqrcode =new QRCode('qr-stamp'," _
   & "{text:'QR Code',colorDark:'DarkBlue',colorLight:'WhiteSmoke',width:120,height:120});"

 

qr-stamp: هو معرف وسم HTML الذي سيوضع فيه الرمز، والبيانات التالية هي الخصائص، هذا المعامل إلزامي

text: يحمل قيمة نصية تمثل بيانات الرمز؛ قد تكون بيانات نصية بسيطة، وقد تكون بيانات نصية مرمزة. ما يمرر على هذا المتغير؛ هو ماسيظهر على الرمز، سوف نقوم بإدراج الرمز عن طريق وظيفة أخرى..

colorDark: يحمل قيمة اللون الغامق في الرمز؛ يراعى في هذا مقاييس HTML في تعريف الألوان.. 

colorLight: يحمل قيمة اللون الفاتح في الرمز؛.....

width: يحمل قيمة رقمية تمثل عرض الرمز

height: يحمل قيمة رقمية بالبكسل تمثل طول الرمز

!! يجب أن تكون قيم الطول والعرض متساوية. أكبر قيمة هي 256 بكسل

!! جميع هذه الخصائص اختيارية إلا أنها تحمل قيم افتراضية..

؟؟ كيف استدعي المتغير وأمرر إلىه القيم، وأين أضعه

المتغير Xqrcode الذي سبق وأن أعلنا عنه يمثل المكون الأبوي لتابعين هما 

Xqrcode.makeCode(var) // له معامل نصي واحد يمثل البيانات التي ستظهر في الرمز

Xqrcode.clear() // يقوم بمحو البيانات السابقة

// يتم استدعائها بالطريقة التالية

// من داخل النموذح
WD.script.Xqrcode.makeCode(var)

// من خارج النموذج
WF.WD.script.Xqrcode.makeCode()

// WF غرض يمثل النموذج
// WD غرض يمثل صفحةويب

يمكن أن تضعه في أي مكان من النموذج. بالنسبة لي وضعته في حدث السجل الحالي..

!! لتكن على علم أن جافا سكربت حساس لحالة الأحرف..

 

  • Like 2
  • Thanks 1
قام بنشر

شكرا جزيلا لك اخي الاستاذ ابو ابراهيم على هذه المعلومات الجديدة لي انا شخصيا 🙂

في الواقع فتحت علينا باب جديد في الاكسس لم نكن نعرف بوجوده ، واذا بك تشير اليه ، و توضحه بالكامل 🙂

 

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

18 ساعات مضت, أبو إبراهيم الغامدي said:
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
</head>

 

جعفر

  • Like 1
قام بنشر
53 دقائق مضت, jjafferr said:

شكرا جزيلا لك اخي الاستاذ ابو ابراهيم على هذه المعلومات الجديدة لي انا شخصيا 🙂

في الواقع فتحت علينا باب جديد في الاكسس لم نكن نعرف بوجوده ، واذا بك تشير اليه ، و توضحه بالكامل 🙂

 

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

أهلا بك أستاذ جعفر..

أشكرك على تشجيعك وأهتمامك..

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

  • Like 1
  • Thanks 1
قام بنشر

جزاكم الله عنا خيرا 

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

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

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

في ٥‏/١‏/٢٠٢٢ at 13:58, أبو إبراهيم الغامدي said:
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
</head>

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

  • Like 1
قام بنشر

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

 

كلمة شكرا ً لاتكفي بصراحه عمل جبار الله يرفع قدرك يارب .

 

واجهة مشكلة تم الارفاق القاعدة البيانات 

>  المشكلة بجدولين رأس وفرع ويجمع بينهم استعلام  ( فيه خطأ عندي لذالك الكود لا يعمل ) الرجاء المساعدة مع الشكر الجزيل

 

لا استطيع ارسال رسالة خاصة المشاركات لم تصل 100 ياليت لو تتواصل معي اخ أبو ابراهيم الغامدي مع الشكر الجزيل .

SaudiInvoice (3).rar

قام بنشر

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

   WB.ExecWB OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_DODEFAULT
 

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