![]() |
|
قراءة ملف word مخزن على شكل blob في قاعدة البيانات برادوكس - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : قراءة ملف word مخزن على شكل blob في قاعدة البيانات برادوكس (/showthread.php?tid=2916) |
قراءة ملف word مخزن على شكل blob في قاعدة البيانات برادوكس - rama - 22-03-2011 السلام عليكم استعمل دلفي 7 لقراءة ملف word مخزن على شكل blob في قاعدة البيانات برادوكس عن طريق olecontainer و استعملت هذا الكود : PHP كود : procedure TForm1.Button1Click(Sender: TObject); عند التنفيذ تظهر رسالة الخطأ التالية : :" raised exeption class eOlesyserror with message' %1 éxiste déja ' " apparait lors de l'éxécution ماهو المشكل أو النقائص في هذا الكود؟ قراءة ملف word مخزن على شكل blob في قاعدة البيانات برادوكس - Lam.Abdeldjalil - 25-03-2011 وعليكم السلام و رحمة الله " TOleContainer يستخدم تنسيق خاص في الـ stream لذا لا يمكن إستعمال LoadFromStream ما لم يستخدم SaveToStream الخاص به " ليس كلامي و لا أدري مدى صحته ، لذا عندك حلان : 1* حفظ stream الخاص بك إلى ملف مؤقت ثم إستدعائه بـ كود : OleContainer1.CreateObjectFromFile('x');كود : var memstrIN:tmemorystream;
begin
memstrIN :=TMemoryStream.Create;
try
memstrIN :=TMemoryStream.Create;
TBlobField(ADODataSet1.FieldByName('d')).SaveToStream(memstrIN);
memstrIN.Seek(0, soFromBeginning);
olecontainer1.LoadFromStream(memstrIN);
finally
memstrIN.Free;
end;كود : var memstrOut:TMemoryStream;
begin
memstrOut :=TMemoryStream.Create;
try
olecontainer1.SaveToStream(memstrOut);
memstrOut.Seek(0, soFromBeginning);
ADODataSet1.Edit ;
TBlobField(ADODataSet1.FieldByName('d')).LoadFromStream(memstrOut);
ADODataSet1.post ;
finally
memstrOut.Free;
end;قراءة ملف word مخزن على شكل blob في قاعدة البيانات برادوكس - rama - 28-03-2011 سأقوم الان بتجريب الاقتراح قراءة ملف word مخزن على شكل blob في قاعدة البيانات برادوكس - rama - 28-03-2011 بالنسبة للاقتراح الاول الملف غير موجود في file بل في قاعدة بيانات تقريبا نفس الكود الذي استعمله و يعطي نفس الخطأ عند التنفيذ . اذا كنت تقصد بالاستدعاء التخزين في قاعدة المعطيات فليس عندي مشكل في هذا. قراءة ملف word مخزن على شكل blob في قاعدة البيانات برادوكس - Lam.Abdeldjalil - 28-03-2011 السلام عليكم لايبدو لي انك قرأت الرد جيدا ، إقتباس :بالنسبة للاقتراح الاول الملف غير موجود في file بل في قاعدة بياناتنعم و أنا قلت إستخرج محتوى الحقل إلى ملف خارجي (لا أذكر أي موضوع كتبتها وكانت رد سؤال لك على ما اذكر ) ومن ثم كود : OleContainer1.CreateObjectFromFile('x');إقتباس :تقريبا نفس الكود الذي استعمله و يعطي نفس الخطأ عند التنفيذ .يعطيك الخطأ لنفس التعليل السابق تابع التالي إقتباس :اذا كنت تقصد بالاستدعاء التخزين في قاعدة المعطيات فليس عندي مشكل في هذا.هذا هو المشكل إذا لم تحفظ قيمة الحقل من olecontainer فستواجه مشكل عند محاولة الإستخراج أعيدها لك " TOleContainer يستخدم تنسيق خاص في الـ stream لذا لا يمكن إستعمال LoadFromStream ما لم يستخدم SaveToStream الخاص بـ TOleContainer " ( جربته و على ما يبدو معه حق ) بالتوفيق قراءة ملف word مخزن على شكل blob في قاعدة البيانات برادوكس - rama - 29-03-2011 Lam.Abdeldjalil كتب :" TOleContainer يستخدم تنسيق خاص في الـ stream لذا لا يمكن إستعمال LoadFromStream ما لم يستخدم SaveToStream الخاص بـ TOleContainer "يبدو أني لم أفهم عليك ،يعني أستعمل الكود الخاص ب savetostream ثم الكود الخاص ب loadfromstream بهذا الترتيب أم ماذا !
قراءة ملف word مخزن على شكل blob في قاعدة البيانات برادوكس - Lam.Abdeldjalil - 29-03-2011 السلام عليكم * أدخل كائن الـ OLE (ـ word في حالتك ) بـ TOleContainer إحفظه في الـ stream بإستخدام SaveToStream ضع القيمة الموجودة في الـ stream في الحقل * الإسترجاع الذي تعرفه أي الحقول التي تحمل قيم مدخلة سابقا دون إستعمال الطريقة المذكورة لا يمكن فتحها ، هل إتضحت الآن ؟ بالتوفيق قراءة ملف word مخزن على شكل blob في قاعدة البيانات برادوكس - rama - 30-03-2011 Lam.Abdeldjalil كتب :* أدخل كائن الـ OLE (ـ word في حالتك ) بـ TOleContainer إحفظه في الـ stream بإستخدام SaveToStreamيعني هكذا ؟؟؟؟؟ كود : ; (TBlobField(table1.FieldByName('doc')).SaveToStream(memstream)Lam.Abdeldjalil كتب :ضع القيمة الموجودة في الـ stream في الحقللماذا أضعها في الحقل و هي أصلا كانت في الحقل و انا استخرجتها من الحقل الى ال stream يعني في الكود الذي كتبته لك فوق اقوم باستخراج محتوى حقل 'doc من قاعدة المعطيات و اضعه في ال stream يعني لماذا اقوم بالعملية العكسية و ارجعه الى الحقل Lam.Abdeldjalil كتب :* الإسترجاع الذي تعرفه اخي جزاك الله خيرا ضع لي كود كامل حتى افهم ،فانا كلما اضع ترتيب معين يظهر لي خطأ ،اذا وضعت olecontainer1.SaveToStream(memstream); في الاول يظظهر لي خطأ " operation not allowed on an empty ole container " و اذا وضعت OleContainer1.LoadFromStream(memstream); في الاول يظهر الخطا السابق" 1 % " أنا افهم فكرتك جيدا لكن لم استطع تطبيقها . قراءة ملف word مخزن على شكل blob في قاعدة البيانات برادوكس - rama - 05-04-2011 شكرا أخ Lam.Abdeldjalil لقد حل المشكل باستعمال الاقتراح الاول مع اني كنت افضل استعمال ال streams |