Arsip: Cara masukin data dari stream ke blobfield??

 
user image
more 13 years ago

bayzap

teman" forum saya mo tanya bagaimana cara masukin data yg sudah ada di stream ke dlm blob field? misalnya ada tabel1 yg nama fieldnya pict (tipe Blob):

var
MS: TMemoryStream;
begin
  if OpenDialog1.Execute then
  begin
    MS:= TMemoryStream.Create;
    MS.LoadFromFile(OpenDialog1.FileName);
    ....
    ....
  end;
end;
nah setelah itu bagaimana cara masukin ke dalam BlobField tapi tanpa menggunakan query (maksudnya tanpa menggunakan ParamByName) melainkan menggunakan TTable saya coba dgn cara:

tabel1pict.LoadFromStream(ms);
tapi hasilnya error :( mohon bantuannya
user image
more 13 years ago

wiseguy1997

@bayzap: teman" forum saya mo tanya bagaimana cara masukin data yg sudah ada di stream ke dlm blob field? misalnya ada tabel1 yg nama fieldnya pict (tipe Blob):

var
MS: TMemoryStream;
begin
  if OpenDialog1.Execute then
  begin
    MS:= TMemoryStream.Create;
    MS.LoadFromFile(OpenDialog1.FileName);
    ....
    ....
  end;
end;
nah setelah itu bagaimana cara masukin ke dalam BlobField tapi tanpa menggunakan query (maksudnya tanpa menggunakan ParamByName) melainkan menggunakan TTable saya coba dgn cara:

tabel1pict.LoadFromStream(ms);
tapi hasilnya error :( mohon bantuannya
Benernya ini dah pernah dibahas diposting sebelumnya disini : http://pascal-id.org/dpr/Forum-viewtopic-t-562-highlight-image.pas lebih tepat yang postingnya om Luri Darmawan dan aq dah nyoba bisa tuh. :D Begini,, pertama kan ngambil gambar ya, mungkin Anda udah bisa. Ya contohnya spt ini:

procedure TfEntryAnggota.bAmbilFotoClick(Sender: TObject);
var BG:TJpegImage;
begin
  if OpenPictureDialog1.Execute then begin
  BG:= TJPEGImage.Create;
    try
      FotAnggota.Picture.LoadFromFile(OpenPictureDialog1.FileName);
      BG.Assign(FotAnggota.Picture.Graphic);
      LNamaFileFoto.Caption:=OpenPictureDialog1.FileName;
      except
        //beep;
        FotAnggota.Picture:=nil;
        ShowMessage('Format Foto tidak support');
      end;
      BG.Free;
    end;
end;
..Khan fotonya dah ditampilin di FotAnggota, dan path direktor file-nya ditampilin oleh LNamaFileFoto, maka skrg tinggal dimasukin ke tabel dg filed Blob. Contohnya spt ini:

Procedure TfEntryAnggota.SimpanGambarClick;
var msb: TMemoryStream;
begin
      msb:=TMemoryStream.Create;
      try
      msb.LoadFromFile(LNamaFileFoto.Caption);
      with dm.qry_anggota do
      begin
        with SQL do
        begin
          clear;
        Add('UPDATE tbl_anggota SET');
        Add('foto = (:param0 )');
        Add('where no_anggota ="'+eNomorAnggota.Text+'" ');
        end;
        dm.qry_anggota.ParamByName('param0').SetBlobData(msb.Memory, msb.Size);
        ExecSQL;
      end;
      finally
       msb.Free;
      end;
end;
Sy pake update karena field foto adalah salah satu field untuk tabel anggota. Smg membantu dan bermanfaat juga bagi yang lain. 8)
user image
more 13 years ago

bayzap

maaf mas tapi klo pake query gitu saya udah bisa... yang saya tanyakan gimana klo pake komponen TTable bukan menggunakan update dan parambyname jadi dari stream langsung dimasukkin ke blobfield, dan itu dilakukan ketika proses insert pertama kali..misalnya kaya gini:
table1Nama.Value:=Edit1.Text
tapi itu kan bukan blob, bagaimana klo tipenya blob? ada yg bisa ga?tolong dong... :(
user image
more 13 years ago

bayzap

maaf mas tapi klo pake query gitu saya udah bisa... yang saya tanyakan gimana klo pake komponen TTable bukan menggunakan update dan parambyname jadi dari stream langsung dimasukkin ke blobfield, dan itu dilakukan ketika proses insert pertama kali..misalnya kaya gini:
table1Nama.Value:=Edit1.Text
tapi itu kan bukan blob, bagaimana klo tipenya blob? ada yg bisa ga?tolong dong... :(
user image
more 13 years ago

wiseguy1997

@bayzap: maaf mas tapi klo pake query gitu saya udah bisa... yang saya tanyakan gimana klo pake komponen TTable bukan menggunakan update dan parambyname jadi dari stream langsung dimasukkin ke blobfield, dan itu dilakukan ketika proses insert pertama kali..misalnya kaya gini:
table1Nama.Value:=Edit1.Text
tapi itu kan bukan blob, bagaimana klo tipenya blob? ada yg bisa ga?tolong dong... :(
OOO.... begitu ya.. :lol: Ini spt aq dulu bikin program toko dg database MS Access. Kan foto dah ditaruh di FotAnggota, maka skrg tinggal masukin ke tabel dg koneksi ADO ato BDE gitu ya... Pertama, misal field foto terletak di ditabel diberi nama DFOTO dg tipe blob. Kedua buat procedure private (tau kan maksudnya) tuk mengambil gambar FotAnggota. Procedure-nya sbb:

Procedure TEntryAnggota.MasukkanFoto;
var bg:TJpegImage;ms:TMemoryStream;
begin
  bg:=TJpegImage.Create;
  ms:=TMemoryStream.Create;
  try 
    bg.assign(FotAnggota.Picture.Graphic);
    bg.SaveToStream(ms);
       if ms.size>0 then
          DFOTO.LoadFromStream(ms)
          else DFOTO.clear;
    except
          DFOTO.clear;
    end;
    ms.free;bg.free;
end;
lalu procedure ini disertakan pada procedure simpan data ke database.Contohnya spt ini:

Procedure TEntryAnggota.bSimpanClick(Sender:TObject);
begin
   table1Nama.Value:=Edit1.Text;
   table2Alamat.Value:=Edit1.Text;
   .....................
   .....................
   MasukkanFoto;
   table1.post;
end;
. Smg bisa membantu dan bermanfaat bagi yang lain. Jgn patah semangat, trus mencoba tuk cari2 koding di om google dan situs lain, kalo jawaban disini kurang memuaskan. Keep spirit..... :lol:
user image
more 13 years ago

bayzap

waduh saya ga punya komponen Tjpegimage :( beberapa kali nyoba install Tjpegimage tapi error mulu :( database yg saya gunakan oracle trus akhirnya saya dapet referensi dari om google seperti ini:

var fs: TFileStream;
bs: TBlobStream;

Writing to database:
with Table1 do
begin
Append;
fs := TFileStream.Create('image1.jpg', fmOpenRead);
bs := TBlobStream(CreateBlobStream(FieldByName('Pic'), bmWrite));
bs.CopyFrom(fs, 0);
bs.Free;
fs.Free;
Post;
end;

Reading from database:
with Table1 do
begin
fs := TFileStream.Create('image1.jpg', fmOpenWrite or fmCreate);
bs := TBlobStream(CreateBlobStream(FieldByName('Pic'), bmRead));
fs.CopyFrom(bs, 0);
bs.Free;
fs.Free;
end;
tapi tetep error, pesannya "invalid blob length" denger2 operasi blob di oracle harus pake LOB Append & LOB Write ya? tapi klo saya pake query & parambyname ga error
user image
more 13 years ago

bayzap

duh maap" ternyata pernah ada yg post masalah "invalid blob length" di sini : http://pascal-id.org/dpr/Forum-printview-t-567-start-0.pas maap om admin :D thx bgt bwt om wiseguy :D
more ...
  • Pages:
  • 1
Share to

Random Topic

Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com