نمایش نتایج 1 تا 16 از 16

نام تاپیک: بازیابی ودیدن فیلد از نوع ایمیج

  1. #1

    بازیابی ودیدن فیلد از نوع ایمیج

    باسلام
    من واسه ذخیره عکس تو دیتا بیس (sql) یه جدول دارم به اسم picsample با فیلدای:
    id=اتو نامبر
    pic=ازنوع ایمیج

    رو فرمم این آبجکتارو آوردم :
    1-Adoconnection
    2-Adotable
    3-Adocommand
    4-openDialog
    5-datasource
    6-dbgrid
    7-edit
    8-2 تا باتون

    واسه آدرس دهی وانتخاب عکس از هرجای سیستم از این دستور:

    procedure TForm1.Button2Click(Sender: TObject);
    begin
    if OpenDialog1.Execute then
    Edit1.Text:= OpenDialog1.FileName;
    end;


    واسه ذخیره عکس این کد :

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    with ADOCommand1 do
    begin
    Parameters.ParamByName('pic').LoadFromFile(Edit1.T ext,ftBlob);
    CommandText := 'insert into picsample(pic)values(:pic)';
    Prepared:=True;
    Execute;
    end;
    ADOTable1.Requery();
    end;



    procedure TForm1.FormShow(Sender: TObject);
    begin
    ADOConnection1.Connected:= True;
    ADOTable1.Open;
    ADOCommand1.Parameters.CreateParameter('pic',ftBlo b,pdInputOutput,0,Unassigned);
    end;


    الان عکسمون تو بانک ذخیره شده !
    ولی من نمیدونم با چه شیئ ی و با چه کدی عکس رو نمایش بدم ...
    منظورم همون بازیابی ، با انتخاب هر id عکس نشون داده بشه؟
    راستی من این مثال رو از این تایپیک برداشتم :
    https://barnamenevis.org/showth...highlight=blob
    آخرین ویرایش به وسیله tik_tak : شنبه 06 مهر 1387 در 21:02 عصر

  2. #2
    کاربر دائمی آواتار shervin farzin
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    مشهد - shervinfarzin@gmail.com
    پست
    256

    نقل قول: بازیابی ودیدن فیلد از نوع ایمیج

    سلام
    ميتونين از كد زير استفاده كنين :

    var
    pic:TJPEGImage;
    stream:Tstream;
    begin
    With ADOQuery1 do
    begin
    sql.text:='select * from picsample';
    Open;
    end;
    stream:=ADOQuery1.CreateBlobStream(ADOQuery1.Field ByName('pic'),bmRead);
    if stream.Size<>0 then
    begin
    if copy(ADOQuery1.FieldByName('pic').AsString,1,1)='B ' then
    image1.Picture.Bitmap.LoadFromStream(x)
    else
    begin
    pic:=TJPEGImage.Create;
    pic.LoadFromStream(x);
    image1.Picture.Assign(pic);
    pic.Free;
    end;
    end
    else image1.Picture.Graphic:=nil;
    stream.Free;


    يه نكته اي كه بايد توجه كنين اينه كه كلاس JPEG رو حتما در بالاي فرمتون در قسمت Uses بنويسيد . براي مواقعي كه عكستون از نوع JPG باشه.
    موفق باشيد

  3. #3

    نقل قول: بازیابی ودیدن فیلد از نوع ایمیج

    يه نكته اي كه بايد توجه كنين اينه كه كلاس JPEG رو حتما در بالاي فرمتون در قسمت Uses بنويسيد .
    میشه بگید چه جوری؟ باید چی بنویسم
    مرسی

  4. #4

    نقل قول: بازیابی ودیدن فیلد از نوع ایمیج

    یه سوال دیگه م داشتم
    اگه من یه جدول دارم تو برنامه شامل این فیلداست :
    آی دی
    نام
    فامیلی
    .
    .
    عکس


    اینجوریم اینزرت میکنم :

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    DataModule2.adotable1.Insert;
    if Edit1.Text<>'' then
    DataModule2.adotable1.FieldByName('name').Value:=E dit1.Text
    else
    DataModule2.adotable1.FieldByName('name').Value:='-';
    .
    .
    .

    DataModule2.adotable.Post;
    ShowMessage('ثبت شد');
    end;


    من نمیدونم چه جوری کد اینزرت عکس رو که اون بالا گذاشتم بین این دستورات قراربدم !
    ممنون میشم راهنمایی کنید

  5. #5
    کاربر دائمی آواتار shervin farzin
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    مشهد - shervinfarzin@gmail.com
    پست
    256

    نقل قول: بازیابی ودیدن فیلد از نوع ایمیج

    سلام
    راستشو بخواي من هيچ وقت با دستورات Append يا Post كار نكردم ، هميشه كد SQL رو
    نوشتم . اينه كه اگه در مورد كد مثال خودت چيزي بگم ممكنه سوتي بدم !
    برات يه Unit كامل مينويسم كه سه تا تابع داره . تابع Save كه نام ، نام خانوادگي و عكس رو
    به ترتيب از Edit1 ، Edit2 و Image1 ميخونه و داخل Database ذخيره ميكنه . تابع Update كه
    يه مقدار Integer رو به عنوان ورودي ميگيره ( در واقع Id همون ركوردي كه ميخواي Edit كنيش )
    و نام ، نام خانوادگي و عكس رو مثل Save از فرم ميخونه . تابع Load كه اطلاعات جدول رو
    داخل فرم بازيابي ميكنه . در ضمن Jpeg رو هم توي قسمت Uses نوشتم .
    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, ExtCtrls, StdCtrls, JPEG, DB, ADODB;

    type
    TForm1 = class(TForm)
    Button1: TButton;
    Image1: TImage;
    ADOQuery1: TADOQuery;
    Edit1: TEdit;
    Edit2: TEdit;
    DataSource1: TDataSource;
    private
    { Private declarations }
    public
    Procedure Save;
    Procedure update(selected_id : integer);
    Procedure Load;
    { Public declarations }
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.dfm}

    { TForm1 }

    procedure TForm1.Save;
    var
    stream:tstream;
    begin
    with ADOQuery1 do
    begin
    sql.Text:='select * from picsample';
    Open;
    end;
    stream:=ADOQuery1.CreateBlobStream(ADOQuery1.Field ByName('pic'),bmRead);
    image1.Picture.Graphic.SaveToStream(stream);
    With ADOQuery1 do
    begin
    SQL.Text:='insert into picsample (name,family,pic) VALUES (:p0,:p1,:p2)';
    Parameters.ParamByName('p0').Value:=edit1.Text;
    Parameters.ParamByName('p1').Value:=edit2.Text;
    Parameters.ParamByName('p2').LoadFromStream(stream ,ftBlob);
    ExecSQL;
    end;
    end;

    procedure TForm1.update(selected_id : integer);
    var
    Stream:TStream;
    begin
    with ADOQuery1 do
    begin
    sql.Text:='select * from picsample';
    Open;
    end;
    stream:=ADOQuery1.CreateBlobStream(ADOQuery1.Field ByName('pic'),bmRead);
    image1.Picture.Graphic.SaveToStream(stream);
    With ADOQuery1 do
    begin
    SQL.Text:='update picsample set name = :p0,family = :p1,pic = :p2 where id = :p3';
    Parameters.ParamByName('p0').Value:=edit1.Text;
    Parameters.ParamByName('p1').Value:=edit2.Text;
    Parameters.ParamByName('p2').LoadFromStream(stream ,ftBlob);
    Parameters.ParamByName('p3').Value:=selected_id;
    ExecSQL;
    end;
    end;

    procedure TForm1.Load;
    var
    stream:TStream;
    pic:TJPEGImage;
    begin
    With ADOQuery1 do
    begin
    sql.text:='select * from picsample';
    Open;
    end;
    edit1.Text:=ADOQuery1.FieldByName('name').AsString ;
    edit2.Text:=ADOQuery1.FieldByName('family').AsStri ng;
    stream:=ADOQuery1.CreateBlobStream(ADOQuery1.Field ByName('pic'),bmRead);
    if stream.Size<>0 then
    begin
    if copy(ADOQuery1.FieldByName('pic').AsString,1,1)='B ' then
    image1.Picture.Bitmap.LoadFromStream(stream)
    else
    begin
    pic:=TJPEGImage.Create;
    pic.LoadFromStream(stream);
    image1.Picture.Assign(pic);
    pic.Free;
    end;
    end
    else
    image1.Picture.Graphic:=nil;
    stream.Free;
    end;

    end.


    موفق باشيد .

  6. #6

    نقل قول: بازیابی ودیدن فیلد از نوع ایمیج


    خطا.......
    parameter object is improrely defined.inconsistent or incomplete informatoin was provided;

    و اصلاً اینزرت نمیکنه
    قسمتی از کدی که تو قسمت ان کلیک باتون اینزرت نوشتم:

    SQL.Text:='insert into Tcustomer (sex,fname,lname'+
    ' ,fathers_name,meli_no,sh_no,date_birth,exported,st ate,date_member,kind,credit,from_date,to_date,tel, mob,address,ax,comment) VALUES (:p0,:p1,:p2,:p3,:p4,:p5,:p6,:p7,:p8,:p9,:p10,:p11 ,:p12,:p13,:p14,:p15,:p16,:p17,:p18,:p19)';



    فیلد کلید اصلی رو تو این کد ننوشتم ، آخه اتو نامبر ه ، من فک میکنم شایداین علته خطاست !؟
    و اگه هست من باید چه جوری بنویسم


    if ComboBox1.Text<>'' then
    Parameters.ParamByName('p0').Value:=combobox1.item index
    else
    Parameters.ParamByName('p0').Value:=-1;
    و
    .
    .
    .
    .
    .
    .
    .
    ExecSQL;

  7. #7
    کاربر دائمی آواتار shervin farzin
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    مشهد - shervinfarzin@gmail.com
    پست
    256

    نقل قول: بازیابی ودیدن فیلد از نوع ایمیج

    سلام
    اول بگم مشكل از Id نيست .
    در مورد كدي كه نوشته بودين يه مورد به نظرم اومد ، اين كه تعداد فيلدهاي جدولتون
    19 تاست پس چون پارامترهاي كد SQL از شماره 0 ( يعني از p0: ) شروع شده پس آخريش
    بايد با P18: تموم بشه كه ميتونه باعث رفع مشكلتون بشه . من چون نميدونستم نوع هر
    كدوم از فيلدهاي جدول شما چيه . يه Table ساختم كه همين فيلدهاي شما رو داشت ولي
    همش از نوع Char بود البته غير از فيلد AX . كدي كه براي دكمه توي دلفي نوشتم اين بود :
    procedure TForm1.Button1Click(Sender: TObject);
    var
    stream:tstream;
    begin
    with ADOQuery1 do
    begin
    sql.Text:='select * from Tcustomer';
    Open;
    end;
    stream:=ADOQuery1.CreateBlobStream(ADOQuery1.Field ByName('ax'),bmRead);
    image1.Picture.Graphic.SaveToStream(stream);
    With ADOQuery1 do
    begin
    SQL.Text:='insert into Tcustomer (sex,fname,lname,fathers_name,meli_no,sh_no,date_b irth,exported,state,date_member,kind,credit,from_d ate,to_date,tel,mob,address,ax,comment) VALUES (:p0,:p1,:p2,:p3,:p4,:p5,:p6,:p7,:p8,:p9,:p10,:p11 ,:p12,:p13,:p14,:p15,:p16,:p17,:p18)';
    Parameters.ParamByName('p0').Value:=edit1.Text;
    Parameters.ParamByName('p1').Value:=edit1.Text;
    Parameters.ParamByName('p2').Value:=edit1.Text;
    Parameters.ParamByName('p3').Value:=edit1.Text;
    Parameters.ParamByName('p4').Value:=edit1.Text;
    Parameters.ParamByName('p5').Value:=edit1.Text;
    Parameters.ParamByName('p6').Value:=edit1.Text;
    Parameters.ParamByName('p7').Value:=edit1.Text;
    Parameters.ParamByName('p8').Value:=edit1.Text;
    Parameters.ParamByName('p9').Value:=edit1.Text;
    Parameters.ParamByName('p10').Value:=edit1.Text;
    Parameters.ParamByName('p11').Value:=edit1.Text;
    Parameters.ParamByName('p12').Value:=edit1.Text;
    Parameters.ParamByName('p13').Value:=edit1.Text;
    Parameters.ParamByName('p14').Value:=edit1.Text;
    Parameters.ParamByName('p15').Value:=edit1.Text;
    Parameters.ParamByName('p16').Value:=edit1.Text;
    Parameters.ParamByName('p17').LoadFromStream(strea m,ftBlob);
    Parameters.ParamByName('p18').Value:=edit1.Text;
    ExecSQL;
    end;
    end;


    كدي هم كه براي Load كردن اطلاعات نوشتم اين بود :
    procedure TForm1.Button2Click(Sender: TObject);
    var
    stream:TStream;
    pic:TJPEGImage;
    begin
    With ADOQuery1 do
    begin
    sql.text:='select * from Tcustomer';
    Open;
    end;
    edit1.Text:=ADOQuery1.FieldByName('sex').AsString;
    stream:=ADOQuery1.CreateBlobStream(ADOQuery1.Field ByName('ax'),bmRead);
    if stream.Size<>0 then
    begin
    if copy(ADOQuery1.FieldByName('ax').AsString,1,1)='B' then
    image1.Picture.Bitmap.LoadFromStream(stream)
    else
    begin
    pic:=TJPEGImage.Create;
    pic.LoadFromStream(stream);
    image1.Picture.Assign(pic);
    pic.Free;
    end;
    end
    else
    image1.Picture.Graphic:=nil;
    stream.Free;
    end;


    هر دوي اين كد ها رو تست كردم و بدون هيچ مشكلي كار ميكنن .
    موفق باشيد .

  8. #8

    نقل قول: بازیابی ودیدن فیلد از نوع ایمیج

    نقل قول نوشته شده توسط shervin farzin مشاهده تاپیک
    سلام
    ميتونين از كد زير استفاده كنين :

    var
    pic:TJPEGImage;
    stream:Tstream;
    begin
    With ADOQuery1 do
    begin
    sql.text:='select * from picsample';
    Open;
    end;
    stream:=ADOQuery1.CreateBlobStream(ADOQuery1.Field ByName('pic'),bmRead);
    if stream.Size<>0 then
    begin
    if copy(ADOQuery1.FieldByName('pic').AsString,1,1)='B ' then
    image1.Picture.Bitmap.LoadFromStream(x)
    else
    begin
    pic:=TJPEGImage.Create;
    pic.LoadFromStream(x);
    image1.Picture.Assign(pic);
    pic.Free;
    end;
    end
    else image1.Picture.Graphic:=nil;
    stream.Free;


    يه نكته اي كه بايد توجه كنين اينه كه كلاس JPEG رو حتما در بالاي فرمتون در قسمت Uses بنويسيد . براي مواقعي كه عكستون از نوع JPG باشه.
    موفق باشيد
    اگه در مورد نحوه ذخیره و بازیابی عکس در دیتابیس پارادوکس خود دلفی هم کد داری آنرا هم بگذار که با شی Query این کا را انجا م بده
    ممنون میشم

  9. #9
    کاربر دائمی آواتار shervin farzin
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    مشهد - shervinfarzin@gmail.com
    پست
    256

    نقل قول: بازیابی ودیدن فیلد از نوع ایمیج

    سلام
    نوع داده اي به نام OLE در Paradox هست كه قابليت ذخيره اطلاعاتي مثل عكس ها رو داره .
    كد ذخيره و بازيابي هم هيچ فرقي با مثالهاي بالا نداره فقط هرجا كه در كدهاي بالا نوشته شده
    ADOQuery شما بايد تبديلش كنيد به Query .
    موفق باشيد .

  10. #10

    نقل قول: بازیابی ودیدن فیلد از نوع ایمیج

    مطالب نوشته شده در پست شماره 7 در sql و با فیلدی با نوع Image هیچ مشکلی ندارد ولی در access با فیلد نوع ole object خطا می دهد :
    Syntax Error In Insert Into Statment
    لطفا در صورت امکان برای دیتابیس access یک مثال قرار دهید.
    عکس های ضمیمه عکس های ضمیمه

  11. #11
    کاربر دائمی آواتار shervin farzin
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    مشهد - shervinfarzin@gmail.com
    پست
    256

    نقل قول: بازیابی ودیدن فیلد از نوع ایمیج

    سلام
    خطا احتمالا مربوط به جای دیگه ای هست. به هر حال فایل زیر یک مثال برای Access هست.
    در ضمن من این برنامه رو با Delphi 2010 آماده کردم. اگه نتونستید Compile کنیدش فایل Unit1.pas
    رو داخل NotePad باز کنید.
    موفق باشید.
    فایل های ضمیمه فایل های ضمیمه

  12. #12

    نقل قول: بازیابی ودیدن فیلد از نوع ایمیج

    از زحماتتون متشکرم

  13. #13

    نقل قول: بازیابی ودیدن فیلد از نوع ایمیج

    نقل قول نوشته شده توسط shervin farzin مشاهده تاپیک
    سلام
    راستشو بخواي من هيچ وقت با دستورات Append يا Post كار نكردم ، هميشه كد SQL رو
    نوشتم . اينه كه اگه در مورد كد مثال خودت چيزي بگم ممكنه سوتي بدم !
    برات يه Unit كامل مينويسم كه سه تا تابع داره . تابع Save كه نام ، نام خانوادگي و عكس رو
    به ترتيب از Edit1 ، Edit2 و Image1 ميخونه و داخل Database ذخيره ميكنه . تابع Update كه
    يه مقدار Integer رو به عنوان ورودي ميگيره ( در واقع Id همون ركوردي كه ميخواي Edit كنيش )
    و نام ، نام خانوادگي و عكس رو مثل Save از فرم ميخونه . تابع Load كه اطلاعات جدول رو
    داخل فرم بازيابي ميكنه . در ضمن Jpeg رو هم توي قسمت Uses نوشتم .
    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, ExtCtrls, StdCtrls, JPEG, DB, ADODB;

    type
    TForm1 = class(TForm)
    Button1: TButton;
    Image1: TImage;
    ADOQuery1: TADOQuery;
    Edit1: TEdit;
    Edit2: TEdit;
    DataSource1: TDataSource;
    private
    { Private declarations }
    public
    Procedure Save;
    Procedure update(selected_id : integer);
    Procedure Load;
    { Public declarations }
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.dfm}

    { TForm1 }

    procedure TForm1.Save;
    var
    stream:tstream;
    begin
    with ADOQuery1 do
    begin
    sql.Text:='select * from picsample';
    Open;
    end;
    stream:=ADOQuery1.CreateBlobStream(ADOQuery1.Field ByName('pic'),bmRead);
    image1.Picture.Graphic.SaveToStream(stream);
    With ADOQuery1 do
    begin
    SQL.Text:='insert into picsample (name,family,pic) VALUES (:p0,:p1,:p2)';
    Parameters.ParamByName('p0').Value:=edit1.Text;
    Parameters.ParamByName('p1').Value:=edit2.Text;
    Parameters.ParamByName('p2').LoadFromStream(stream ,ftBlob);
    ExecSQL;
    end;
    end;

    procedure TForm1.update(selected_id : integer);
    var
    Stream:TStream;
    begin
    with ADOQuery1 do
    begin
    sql.Text:='select * from picsample';
    Open;
    end;
    stream:=ADOQuery1.CreateBlobStream(ADOQuery1.Field ByName('pic'),bmRead);
    image1.Picture.Graphic.SaveToStream(stream);
    With ADOQuery1 do
    begin
    SQL.Text:='update picsample set name = :p0,family = :p1,pic = :p2 where id = :p3';
    Parameters.ParamByName('p0').Value:=edit1.Text;
    Parameters.ParamByName('p1').Value:=edit2.Text;
    Parameters.ParamByName('p2').LoadFromStream(stream ,ftBlob);
    Parameters.ParamByName('p3').Value:=selected_id;
    ExecSQL;
    end;
    end;

    procedure TForm1.Load;
    var
    stream:TStream;
    pic:TJPEGImage;
    begin
    With ADOQuery1 do
    begin
    sql.text:='select * from picsample';
    Open;
    end;
    edit1.Text:=ADOQuery1.FieldByName('name').AsString ;
    edit2.Text:=ADOQuery1.FieldByName('family').AsStri ng;
    stream:=ADOQuery1.CreateBlobStream(ADOQuery1.Field ByName('pic'),bmRead);
    if stream.Size<>0 then
    begin
    if copy(ADOQuery1.FieldByName('pic').AsString,1,1)='B ' then
    image1.Picture.Bitmap.LoadFromStream(stream)
    else
    begin
    pic:=TJPEGImage.Create;
    pic.LoadFromStream(stream);
    image1.Picture.Assign(pic);
    pic.Free;
    end;
    end
    else
    image1.Picture.Graphic:=nil;
    stream.Free;
    end;

    end.


    موفق باشيد .
    دوست عزیز اگر در Image تصویری قرار ندهیم با پیغام خطا مواجه میشیم این مشکل رو چطور میشه حل کرد؟

    با تشکر

  14. #14

    Smile نقل قول: بازیابی ودیدن فیلد از نوع ایمیج

    سلام دوستان عزیز مشکل کد زیر رو چطور میشه حل کرد؟
    تا وقتی که تصویری در Pic(TImage) هست به درستی ذخیره میشه میخواستم کاربر بتونه بدون عکس هم مابقی اطلاعات رو ذخیره کنه که یکسری تغییرات دادم ولی موقع ذخیره بدون عکس خطای ضمیمه رو میگیره

    var
    stream1 : Tstream
    ......
    with ADOQuery1 do
    begin
    SQL.Clear;
    sql.Add('select Picperson');
    sql.Add(' from Table1');
    Open;
    end;

    stream1:=ADOQuery1.CreateBlobStream(ADOQuery1.Fiel dByName('PicPerson'),bmRead);
    IF pic1.Picture.Graphic <> nil
    THEN pic1.Picture.Graphic.SaveToStream(stream1);
    with ADOQuery1 do
    begin
    Sql.clear;
    SQL.Add('insert into Table1 (PicPerson) values (:p1)');

    if pic1.Picture.Graphic <> nil then
    Parameters.ParamByName('p1').LoadFromStream(stream 1 ,ftBlob)
    else parameters.ParamByName('p1').Value := NULL;
    Execsql;
    end;

    با تشکر
    عکس های ضمیمه عکس های ضمیمه
    آخرین ویرایش به وسیله MOJTABAATEFEH : دوشنبه 01 فروردین 1390 در 22:19 عصر

  15. #15

    نقل قول: بازیابی ودیدن فیلد از نوع ایمیج

    از دوستان کسی تابحال اینجور کاری انجام نداده!؟

  16. #16
    کاربر تازه وارد آواتار YkA1363
    تاریخ عضویت
    خرداد 1390
    محل زندگی
    خراسان رضوي
    پست
    64

    نقل قول: بازیابی ودیدن فیلد از نوع ایمیج

    نقل قول نوشته شده توسط shervin farzin مشاهده تاپیک
    سلام
    راستشو بخواي من هيچ وقت با دستورات Append يا Post كار نكردم ، هميشه كد SQL رو
    نوشتم . اينه كه اگه در مورد كد مثال خودت چيزي بگم ممكنه سوتي بدم !
    برات يه Unit كامل مينويسم كه سه تا تابع داره . تابع Save كه نام ، نام خانوادگي و عكس رو
    به ترتيب از Edit1 ، Edit2 و Image1 ميخونه و داخل Database ذخيره ميكنه . تابع Update كه
    يه مقدار Integer رو به عنوان ورودي ميگيره ( در واقع Id همون ركوردي كه ميخواي Edit كنيش )
    و نام ، نام خانوادگي و عكس رو مثل Save از فرم ميخونه . تابع Load كه اطلاعات جدول رو
    داخل فرم بازيابي ميكنه . در ضمن Jpeg رو هم توي قسمت Uses نوشتم .
    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, ExtCtrls, StdCtrls, JPEG, DB, ADODB;

    type
    TForm1 = class(TForm)
    Button1: TButton;
    Image1: TImage;
    ADOQuery1: TADOQuery;
    Edit1: TEdit;
    Edit2: TEdit;
    DataSource1: TDataSource;
    private
    { Private declarations }
    public
    Procedure Save;
    Procedure update(selected_id : integer);
    Procedure Load;
    { Public declarations }
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.dfm}

    { TForm1 }

    procedure TForm1.Save;
    var
    stream:tstream;
    begin
    with ADOQuery1 do
    begin
    sql.Text:='select * from picsample';
    Open;
    end;
    stream:=ADOQuery1.CreateBlobStream(ADOQuery1.Field ByName('pic'),bmRead);
    image1.Picture.Graphic.SaveToStream(stream);
    With ADOQuery1 do
    begin
    SQL.Text:='insert into picsample (name,family,pic) VALUES (:p0,:p1,:p2)';
    Parameters.ParamByName('p0').Value:=edit1.Text;
    Parameters.ParamByName('p1').Value:=edit2.Text;
    Parameters.ParamByName('p2').LoadFromStream(stream ,ftBlob);
    ExecSQL;
    end;
    end;

    procedure TForm1.update(selected_id : integer);
    var
    Stream:TStream;
    begin
    with ADOQuery1 do
    begin
    sql.Text:='select * from picsample';
    Open;
    end;
    stream:=ADOQuery1.CreateBlobStream(ADOQuery1.Field ByName('pic'),bmRead);
    image1.Picture.Graphic.SaveToStream(stream);
    With ADOQuery1 do
    begin
    SQL.Text:='update picsample set name = :p0,family = :p1,pic = :p2 where id = :p3';
    Parameters.ParamByName('p0').Value:=edit1.Text;
    Parameters.ParamByName('p1').Value:=edit2.Text;
    Parameters.ParamByName('p2').LoadFromStream(stream ,ftBlob);
    Parameters.ParamByName('p3').Value:=selected_id;
    ExecSQL;
    end;
    end;

    procedure TForm1.Load;
    var
    stream:TStream;
    pic:TJPEGImage;
    begin
    With ADOQuery1 do
    begin
    sql.text:='select * from picsample';
    Open;
    end;
    edit1.Text:=ADOQuery1.FieldByName('name').AsString ;
    edit2.Text:=ADOQuery1.FieldByName('family').AsStri ng;
    stream:=ADOQuery1.CreateBlobStream(ADOQuery1.Field ByName('pic'),bmRead);
    if stream.Size<>0 then
    begin
    if copy(ADOQuery1.FieldByName('pic').AsString,1,1)='B ' then
    image1.Picture.Bitmap.LoadFromStream(stream)
    else
    begin
    pic:=TJPEGImage.Create;
    pic.LoadFromStream(stream);
    image1.Picture.Assign(pic);
    pic.Free;
    end;
    end
    else
    image1.Picture.Graphic:=nil;
    stream.Free;
    end;

    end.


    موفق باشيد .
    سلام این کد رو توی برنامم گذاشتم. فقط یک مشکل دارم اینکه برنامه من روی شبکه نصب می شه و فکر می کنم برای هر رکورد که بخوام ثبت کنم این کد کل بانک رو فراخوانی می کنه و قطعاً در آینده برنامه دچار مشکل خواهد شد. چطور می تونم با تغییر توی این کدها مشکلم رو حل کنم.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •