2013-02-03 3 views
2

일부 데이터를 내 Access 데이터베이스에 저장하고 있는데, 하나의 매개 변수는 BLOB 필드입니다.이 경우 이미지는 Timage에로드됩니다.기록 할 이미지 저장

var 
AStream : TMemoryStream; 
begin 
AStream := TMemoryStream.Create; 
    try 
Image1.Picture.Graphic.SaveToStream(AStream); 
AStream.Position := 0; 
if Adotable1.Active then 
begin 
    Adotable1.Edit; 
    TBlobField(Adotable1.FieldByName('Termograma')).LoadFromStream(AStream); 
    Adotable1.Post; 
end; 
    finally 
    AStream.Free; 

adotable1.Append; 
adotable1['Data']:= datetimepicker1.Date; 
adotable1['Temax']:= edit4.Text; 
adotable1['Temin']:= edit5.Text; 
adotable1['Descrição da Posição']:= memo1.Text; 
adotable1['Comentários']:= memo2.Text; 
adotable1.Post; 

를하지만 나 또한 내가 "추가"부분처럼 같은 버튼을 클릭하여 저장하고있어 다른 정보를 가지고 : 나는이 코드를 사용하고

를 저장합니다.

저장 단추를 누르면이 정보가 데이터베이스의 동일한 ID에 저장되지 않습니다.

이 문제를 어떻게 해결할 수 있습니까?

답변

5

현재 레코드를 편집하고, 이미지를 저장하고, 새 레코드를 추가하고, 나머지 정보를 새 레코드에 저장합니다. 전적으로 새로운 기록을 추가하고 새로운 기록과 데이터를 추가 한 다음 변경 사항을 저장하려고합니다. ,

var 
    AStream : TMemoryStream; 
begin 
    if not AdoTable1.Active then 
    AdoTable1.Open; 

    Adotable1.Append; 

    AStream := TMemoryStream.Create; 
    try 
    Image1.Picture.Graphic.SaveToStream(AStream); 
    AStream.Position := 0; 
    TBlobField(Adotable1.FieldByName('Termograma')).LoadFromStream(AStream); 
    finally 
    AStream.Free; 
    end; 

    adotable1['Data']:= datetimepicker1.Date; 
    adotable1['Temax']:= edit4.Text; 
    adotable1['Temin']:= edit5.Text; 
    adotable1['Descrição da Posição']:= memo1.Text; 
    adotable1['Comentários']:= memo2.Text; 
    adotable1.Post; 
end; 
+0

가이 일을 내가 .JPEG 이러한 이미지를 저장하고있어 – Ammadeux

+0

:) 감사합니다,하지만 난이 점점 오류 "비트 맵 이미지 것은 유효하지 않습니다"유지 :

대신 사용해보십시오. 다음과 같이 이미지를로드합니다. OpenPictureDialog1.Execute (Self.Handle) then Image1.Picture.LoadFromFile (OpenPictureDialog1.FileName); – Ammadeux

+4

이것은이 질문과는 완전히 별개이며 질문을 받아야합니다. :-) 이것은 이미지를 데이터베이스에 저장하는 것에 관한 것으로 답변되었습니다. –