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

استدعاء التقرير في ال 10G من الفورم إلى الطابعة فورا


من كل بحر قطرة

Recommended Posts

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

انا اعمل على اوراكل 10g واريد استدعاء التقرير مباشرة إلى الطابعة دون قراءة التقرير وقمت بكتابة هذا الكود في زر الطباعة

web.show_document('http://elevators-sys:8889/reports/rwservlet?report=b:\lefts\SYS\dept.jsp&userid=lce/lce@left&destype=cacheer&desformat=htmlcss');

وقمت إلى التقرير وغيرت ال destype to printer and desjob to no
ولكن التقرير مازال يعمل ومن ثم اعمل انا له امر طباعة
فكيف يمكنني استدعاء التقرير مباشرة الى الطابعة

وشكرا لكم

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

يعطيكم العافية يا جماعة
معقول ما أحد إلى الآن رد على الموضوع

على كل حال أنا عملت المحاولة التالية
destype=printer بدل cache

ونتج الخطأ التالي
REP-3002: Error initializing printer. Make sure a printer is installed

فما هو الحل لهذا الخطأ
وشكرا لكم

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

السلام عليكم

إضافة لإستخدام الباراميتر
destype=printer
يجب اضافة الباراميتر
desname=printer_name
يجب ان يكون اسم البرنتر كما هو وا

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

السلام عليكم

إضافة لإستخدام الباراميتر destype=printer

يجب اضافة الباراميترdesname=printer_name

يجب ان يكون اسم البرنتر كما هو واذا كان الاسم به مسافات قم بتغييره مثلا الي printer1

والله الموفق

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

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

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


وشكرا على تعاونكم

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

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

pc1\hplaserject1520\\

ونستخدم هذا الاسم في مكان desname=

الطريقة الثانية ان نقوم بإكتشاف الطابعة التلقائية في كل جهاز كلينت بالكود في المرفقات

يقوم هذا الكود باكتشاف الطابعة التلقائية من الرجستري ويخزنها في متغير اسمه name2

بعد ذلك نستخدم desname=name2

إذا كان هناك اي خطأ فهو يكون في اسم الطابعة

استخدم رسالة message في داخل الكود لتطبع لك المتغير name2 لتتأكد من اسم الطابعة.

وفقنا الله واياكم

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


جزاك الله خيرا اخي الكريم على تواصلك
لكن لم أجد المرقات الت تتحدث عنها

وشكرا لك

عقوا علي هذا الخطأ
اليك المرفقات

detect printer.txt

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


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

pc1\hplaserject1520\\

ونستخدم هذا الاسم في مكان desname=

الطريقة الثانية ان نقوم بإكتشاف الطابعة التلقائية في كل جهاز كلينت بالكود في المرفقات

يقوم هذا الكود باكتشاف الطابعة التلقائية من الرجستري ويخزنها في متغير اسمه name2

بعد ذلك نستخدم desname=name2

إذا كان هناك اي خطأ فهو يكون في اسم الطابعة

استخدم رسالة message في داخل الكود لتطبع لك المتغير name2 لتتأكد من اسم الطابعة.

وفقنا الله واياكم



اخي الكريم راسلني على ايميلي وارسل لك ان شاء الله document كاملة

hh_khundakjie

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

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

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

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

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

جزاكم الله خيرا جميعا ً على تفاعلكم في هذا الموضوع

ومن الأفضل كما قال الإخوة أن يتم وضع الشرح على المنتدى لكي تتم الاستفادة للجميع وشكرا لكم

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

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

الكود في المرفقات قمت بترقيمه الي فقرات

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

وما قمت باضافته هنا هو ان تتم الطباعة مباشرة

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

3- قمنا بتعريف المتغير الذي سنخزن فيه عنوان التقرير vc_url
4- هنا الكود الذي يدخل الي الرجستري ويكتشف اسم الطابعة التلقائية ويخزنها في المتغير name1
ويتم بعد ذلك نقل اسم الطابعة الي المتغير name2

5- هنا نكون عنوان التقرير بتمرير كل الباراميترس المطلوبة مثل
report=c:\rep1.rdf&desformat=htmlcss
يحدد مسار واسم التقرير ونوعه هنا استخدم الباراميتر server= لانني استخدم ريبورت سيرفر محلي منشأ في نفس الجهاز الذي به الفورم
&destype=printer
يحدد نوع الجهة
&userid=orders/orders@orcl
يحدد الداتابيز وكلمات المرور
&x='||:orders.order_id||'
التقرير مصمم علي ان يطلب رقم الفاتورة في متغير x وهنا يتم تمرير قيمة اكس من التكست ايتم orders.order_id
&desname='||name2||'
هنا يتم تمرير اسم الطابعة
&paramform=no';
يحدد عدم ظهور فورم التقرير الذي يطلب رقم الفاتورة

في الفقرة الاخير رقم 6
طبعا تتم منادات التقرير

غالبا ما تواجهك اخطاء وهي غالبا ما تكون في اسم الطابعة

يمك ان تحاول طباعة اسم الطابعة في الشاشة قبل منادات التقرير بواسطة
message(name2);xxxxxxxxxxxxxxxxxxxx
message(name2);xxxxxxxxxxxxxxxxxxxx
حروف الاكس هنا لا تعني شيئا قم بحزفها
كرر هذا السطر مرتين حتي تقوم الاوراكل بعرضه بشكل alert لانه عندما تتكدس الرسائل في الـ message queue تقوم الاوراكل فورم بعرضها في الشاشة علي شكل alert وليس في شريط الرسائل


اتمني ان تواصل مجهودك حتي تكتمل العملية بنجاح ونحن معك حتي يحدث هذا باذن الله
الكود في المرفقات ادناه بعد تعديله

DECLARE

--1--
name1 varchar2(1000);
--2--
name2 varchar2(1000);
--3--
vc_url varchar2(400);

BEGIN
--4--
name1:=client_win_api_environment.read_registry
('HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows',
	   'Device',true);
  name2:=SUBSTR(name1,1,instr(name1,',',1)-1);
--5--
vc_url:='http://pc1:8889/reports/rwservlet?server=Repsrv&
report=c:\rep1.rdf&desformat=htmlcss
&destype=printer
&userid=orders/orders@orcl
&x='||:orders.order_id||'
&desname='||name2||'
&paramform=no';
--6--
WEB.SHOW_DOCUMENT(vc_url,'_blank');

END;

detect printer.txt

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

جزاك الله خيرا أخي الكريم على تعاونك وتواصلك معي

الكود شغال إلا في نقطة واحدة وهي


name1:=client_win_api_environment.read_registry
('HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows',
'Device',true);

في هذه الجملة يعطيني عليها الخطأ التالي في كما في المرفق

post-93217-0-34958200-1321687826_thumb.gif

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

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

يعطيكم العافية يا إخوان

ما أحد وجد حل إلى الآن لمشكلة الطابعة

أرجو المساعدة ممن عنده خبرة وتجربة في هذا الموضوع

وشكرا

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

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

يا جماعة السطر التالى يعطى خطا وياريت حد يحل هذا الخطاء لانى عملى متوقف على هذا الحل والله كما ذكر الأخ من قبل ومحدش رد علينا --- يارب
name1:=client_win_api_environment.read_registry
('HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows',
'Device',true);

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

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

وجدت الرد التالي في الموقع الرسمي لاجوبة اوراكل على هذا الكود بالذات وظهور الخطأ المقصود

The code is correct.


For the CLIENT_WIN_API_ENVIRONMENT package to work, the java code in WebUtil needs to interface with the webutil dlls JNIsharedstubs.dll and d2kwut60.dll.So please make sure that webutil is configured properly and all the required dlls are downloaded to client



ومختصر الكلام بالعربي يرجى التأكد من ان ال ( WebUtil ) منصب بشكل صحيح و الملفان ( JNIsharedstubs.dll و d2kwut60.dll) موجودان على حاسبة الكلينت ليعمل البكج ( CLIENT_WIN_API_ENVIRONMENT) حيث ان في ال 10G
يعمل هذا الايعاز من خلال ال ( WebUtil )

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

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

وجدت الرد التالي في الموقع الرسمي لاجوبة اوراكل على هذا الكود بالذات وظهور الخطأ المقصود

The code is correct.


For the CLIENT_WIN_API_ENVIRONMENT package to work, the java code in WebUtil needs to interface with the webutil dlls JNIsharedstubs.dll and d2kwut60.dll.So please make sure that webutil is configured properly and all the required dlls are downloaded to client



ومختصر الكلام بالعربي يرجى التأكد من ان ال ( WebUtil ) منصب بشكل صحيح و الملفان ( JNIsharedstubs.dll و d2kwut60.dll) موجودان على حاسبة الكلينت ليعمل البكج ( CLIENT_WIN_API_ENVIRONMENT) حيث ان في ال 10G
يعمل هذا الايعاز من خلال ال ( WebUtil )



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



وجدت الرد التالي في الموقع الرسمي لاجوبة اوراكل على هذا الكود بالذات وظهور الخطأ المقصود

The code is correct.


For the CLIENT_WIN_API_ENVIRONMENT package to work, the java code in WebUtil needs to interface with the webutil dlls JNIsharedstubs.dll and d2kwut60.dll.So please make sure that webutil is configured properly and all the required dlls are downloaded to client



ومختصر الكلام بالعربي يرجى التأكد من ان ال ( WebUtil ) منصب بشكل صحيح و الملفان ( JNIsharedstubs.dll و d2kwut60.dll) موجودان على حاسبة الكلينت ليعمل البكج ( CLIENT_WIN_API_ENVIRONMENT) حيث ان في ال 10G
يعمل هذا الايعاز من خلال ال ( WebUtil )



الله يعطيك الصحة

بس فين نضع الملفين في جهاز الكلينت اين بالظبط وشكرا
رابط هذا التعليق
شارك

  • بعد 1 شهر...
  • بعد 4 سنة...

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

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

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

×   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.

جاري التحميل
×
×
  • أضف...

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

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