![]() |
|
كيف اضافة صورة الى قاعدة المعطيات عن طريق delphi 7 ؟ - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : كيف اضافة صورة الى قاعدة المعطيات عن طريق delphi 7 ؟ (/showthread.php?tid=5924) |
كيف اضافة صورة الى قاعدة المعطيات عن طريق delphi 7 ؟ - amine titi - 06-02-2014 السلام عليكم كيف اضافة صورة الى قاعدة المعطيات عن طريق delphi 7 ؟ في قاعدة المعطيات عندي جدول condidat و توجد الحقول التالية رقم المترشح ، اسم المترشح ، لقب المترشح،.......،صورة المترشح انا استعمل delphi 7 و SQL server 2000 كقاعدة معطيات كيف اضافة صورة الى قاعدة المعطيات عن طريق delphi 7 ؟ - Najy Ibraheem - 07-02-2014 السلام عليكم... الكود التالي يفترض أنه يوجد Image1 قد يحتوي على صورة الشخص. و أن نوع الحقل في جدول SQL Server هو Image: كود : var
CmdText: string;
HasPicture: Boolean;
PicStream: TMemoryStream;
Bmp: TBitmap;
begin
// ...
// ...
CmdText := 'INSERT INTO table_name (field1, field2, field3, ..., img_field)';
CmdText := CmdText + ' VALUES (' + value1;
CmdText := CmdText + ', ' + value2;
CmdText := CmdText + ', ' + value3;
CmdText := CmdText + ', ' + ...
// ...
// ...
if Assigned(Image1.Picture.Graphic) then begin
// في حالة وجود صورة في المكون
HasPicture := True;
// إنشاء بارامتر لإضافة الصورة
CmdText := CmdText + ', :PicData';
try
// Create a Memory stream:
PicStream := TMemoryStream.Create;
// إنشاء صورة نقطية في الذاكرة
Bmp := TBitmap.Create;
// تحميل الصورة من المكون إلى الذاكرة
Bmp.Assign(imgPicture.Picture.Graphic);
// حفظ الصورة مؤقتاً في الذاكرة
Bmp.SaveToStream(PicStream);
// إعادة ضبط المؤشر إلى أول بايت - مهم
PicStream.Seek(0, soFromBeginning);
finally
Bmp.Free;
end;
end
else begin
// في حالة عدم وجود صورة في المكون
HasPicture := False;
CmdText := CmdText + ', NULL'; // لا نخزن شيئاً في الحقل
end;
CmdText := CmdText + ')';
ADOCommand.CommandText := CmdText;
if HasPicture then begin
// إذا كانت هناك صورة فإننا ننسخها من الذاكرة إلى البارامتر
ADOCommand.Parameters.ParamByName('PicData').LoadFromStream(PicStream, ftGraphic);
if Assigned(PicStream) then
PicStream.Free;
end;
// ننفذ استعلام الحفظ
ADOCommand.Execute;* الصور التي جربتها شخصياً كانت من النوع BMP و JPG. أما بقية الأنواع فلم أجربها. * table_name هو اسم الجدول لديك. * field1 و field2 و field3 ... إلخ. هي أسماء الحقول في جدولك. * value1 و value2 و value3 ... إلخ. هي القيم المقابلة للحقول في جدولك، باستثناء حقل الصورة. * img_field هو اسم حقل الصورة في قاعدة البيانات (و يكون من النوع image). * ADOCommand هو اسم مكون الـ ADOCommand الذي ستستعمله لحفظ البيانات. *** نصيحة: رغم أن حفظ الصور ضمن قاعدة البيانات يضمن وجود الصورة معسجلها، فإن ذلك قد يؤدي إلى تضحم قاعدة البيانات بشكل كبير. و لهذا ربما يكون أحياناً من الأنسب حفظ الصور كملفات خارجية في مجلد تابع للبرنامج، و جعل حقل الصورة عبارة عن حقل نصي لحفظ مسار ملف الصورة المرتبطة بالسجل (بالطبع مع احتمال حذف الصورة من خارج البرنامج - مثلاً من خلال مستكشف ويندوز!) - الخيار يبقى لك. نرجو الاستفادة و السلام. |