Fórum TStream e Blob ? #320021
26/04/2006
0
procedure TForm1.BitBtn1Click(Sender: TObject); var A,B : TStream; Begin ClientDataSet1.Open; ClientDataSet2.Open; ClientDataSet1.First; ProgressBar1.Position := 0; ProgressBar1.Max := ClientDataSet1.RecordCount; While not ClientDataSet1.Eof do begin ClientDataSet2.Append; ClientDataSet2ID.AsInteger := ClientDataSet1ID.AsInteger; ClientDataSet2DESCRICAO.AsString := ClientDataSet1DESCRICAO.AsString; A := ClientDataSet1.CreateBlobStream(ClientDataSet1.FieldByName(´FOTO´), BMREAD); B := ClientDataSet1.CreateBlobStream(ClientDataSet1.FieldByName(´COMENTARIOS´), BMREAD); if B.Size > 0 then begin try ClientDataSet2FOTO.SaveToStream(a); ClientDataSet2COMENTARIOS.SaveToStream(B); Finally A.Destroy; b.Destroy; end; end; ClientDataSet2.Post; ProgressBar1.Position := ProgressBar1.Position +1; ClientDataSet1.Next; end; ClientDataSet2.ApplyUpdates(0); end;
[/code]
Renatacoimbra
Curtir tópico
+ 0Posts
26/04/2006
Cabelo
você está usando o método errado.....
use assim na linha para salvar na 2ª tabela..
clientdataset2.LOADFROMSTREAM(A);
e não clientdataset2.SaveToStream(A);
dessa forma você está carregando para a variável A o conteúdo do dataset 2
um abraço
Gostei + 0
26/04/2006
Renatacoimbra
a imagem que tenho na tabela 1 é jpg, será se o erro é derivado disso ?
procedure TForm1.BitBtn1Click(Sender: TObject); var A,B : TStream; Begin ClientDataSet1.Open; ClientDataSet2.Open; ClientDataSet1.First; ProgressBar1.Position := 0; ProgressBar1.Max := ClientDataSet1.RecordCount; While not ClientDataSet1.Eof do begin ClientDataSet2.Append; ClientDataSet2ID.AsInteger := ClientDataSet1ID.AsInteger; ClientDataSet2DESCRICAO.AsString := ClientDataSet1DESCRICAO.AsString; A := ClientDataSet1.CreateBlobStream(ClientDataSet1.FieldByName(´FOTO´), BMREAD); B := ClientDataSet1.CreateBlobStream(ClientDataSet1.FieldByName(´COMENTARIOS´), BMREAD); try ClientDataSet2FOTO.LoadFromStream(a); ClientDataSet2COMENTARIOS.LoadFromStream(B); Finally A.Destroy; b.Destroy; end; ClientDataSet2.Post; ProgressBar1.Position := ProgressBar1.Position +1; ClientDataSet1.Next; end; ClientDataSet2.ApplyUpdates(0); end;
Gostei + 0
26/04/2006
Cabelo
Gostei + 0
26/04/2006
Renatacoimbra
[list:e816073acb]
BLOB sub_type 0 segment size 80[/list:u:e816073acb][/code]
Gostei + 0
26/04/2006
Cabelo
Verifique se existe realmente uma imagem no campo que você está tentando gravar... e veja se no banco de dados o campo blob não esta setado para not null.
Debug o programa desde a primeira linha desta rotina e me fale em qual linha está dando o erro...
Gostei + 0
26/04/2006
Renatacoimbra
ClientDataSet2FOTO.LoadFromStream(a); ClientDataSet2COMENTARIOS.LoadFromStream(B);
Gostei + 0
26/04/2006
Cabelo
assim :
procedure TForm1.BitBtn1Click(Sender: TObject);
var
A,B : TStream;
Begin
ClientDataSet1.Open;
ClientDataSet2.Open;
ClientDataSet1.First;
ProgressBar1.Position := 0;
ProgressBar1.Max := ClientDataSet1.RecordCount;
while not ClientDataSet1.Eof do
begin
ClientDataSet2.Append;
ClientDataSet2ID.AsInteger := ClientDataSet1ID.AsInteger;
ClientDataSet2DESCRICAO.AsString := ClientDataSet1DESCRICAO.AsString;
ClientDataSet2.ApplyUpdates(0);
ClientDataSet3.Open;
ClientDataSet3.Edit;
A := ClientDataSet1.CreateBlobStream(ClientDataSet1.FieldByName(´FOTO´), BMREAD);
B := ClientDataSet1.CreateBlobStream(ClientDataSet1.FieldByName(´COMENTARIOS´), BMREAD);
try
ClientDataSet3FOTO.LoadFromStream(a);
Finally
A.Free;
end;
clientDataSet33.ApplayUpdates;
ProgressBar1.Position := ProgressBar1.Position +1;
ClientDataSet1.Next;
end;
end;
só para testar.... se funcionar... é só implementar para os outros campos BLOB..
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)