#1 2015-06-28 14:34:32

Celso
Member
Registered: 2013-05-14
Posts: 55

SetFieldvalue with blob field

ab, I am using the following code to update my data:

         v_sqlrc := TSQLMyRecord.Create;
         for v_count := 0 to v_CadastroCDS[tbc_Cadastro.ActiveTab.Index].FieldCount - 1 do
         begin
            v_value := v_CadastroCDS[tbc_Cadastro.ActiveTab.Index].Fields[v_count].AsString;
            v_sqlrc.SetFieldValue(v_CadastroCDS[tbc_Cadastro.ActiveTab.Index].Fields[v_count].FullName,
                                  PUTF8Char(v_value));
         end;
         v_CadastroCDS[tbc_Cadastro.ActiveTab.Index].FieldByName('ID').Value := frmDM.fRestClient.Add(v_sqlrc,True,False);

But I have a blob field (picture). How do I save this field correctly?

Offline

#2 2015-06-28 16:58:05

ab
Administrator
From: France
Registered: 2010-06-21
Posts: 14,655
Website

Re: SetFieldvalue with blob field

See TSQLRest.UpdateBlob/UpdateBlobFields methods
and  http://synopse.info/files/html/Synopse% … l#TITLE_59

BTW, use a local variable to store v_CadastroCDS[tbc_Cadastro.ActiveTab.Index], your code would be much more readable, and also faster.

Offline

#3 2015-07-02 15:21:35

Celso
Member
Registered: 2013-05-14
Posts: 55

Re: SetFieldvalue with blob field

ab, good morning.

Wonder. I managed to save. I did so and it worked:

v_sqlrc := TSQLMyRecord.Create;
for v_count := 0 to v_CadastroCDS[tbc_Cadastro.ActiveTab.Index].FieldCount - 1 do
begin
   if v_CadastroCDS[tbc_Cadastro.ActiveTab.Index].Fields[v_count].DataType <> TFieldType.ftBlob then
   begin
      v_value := v_CadastroCDS[tbc_Cadastro.ActiveTab.Index].Fields[v_count].AsString;
      v_sqlrc.SetFieldValue(v_CadastroCDS[tbc_Cadastro.ActiveTab.Index].Fields[v_count].FullName,
                                    PUTF8Char(v_value));
   end;
end;
v_CadastroCDS[tbc_Cadastro.ActiveTab.Index].FieldByName('ID').Value := frmDM.fRestClient.Add(v_sqlrc,True,False);
for v_count := 0 to v_CadastroCDS[tbc_Cadastro.ActiveTab.Index].FieldCount - 1 do
begin
   if v_CadastroCDS[tbc_Cadastro.ActiveTab.Index].Fields[v_count].DataType = TFieldType.ftBlob then
   begin
      v_ms := TMemoryStream.Create;
      TGraphicField(v_CadastroCDS[tbc_Cadastro.ActiveTab.Index].Fields[v_count]).SaveToStream(v_ms);
      v_ms.Position := 0;
      frmDM.fRestClient.UpdateBlob(v_sqlrc.RecordClass,
                                              v_CadastroCDS[tbc_Cadastro.ActiveTab.Index].FieldByName('ID').AsInteger,
                                              S2U(v_CadastroCDS[tbc_Cadastro.ActiveTab.Index].Fields[v_count].FullName),
                                              v_ms);
      v_ms.free;
end;

Now I have another problem. To consult, do this:

   v_ressql := AProps.ExecuteInlined('SELECT * FROM MYTABLE',True);
   v_table := v_ressql.FetchAllAsJSON(False);
   JSONToClientDataSet(v_CadastroCDS[v_count],v_table,nil,cdsReplace);

In variable v_table, the blob is Base64. But when running JSONToClientDataSet, he is transforming the blob field to RawUTF8, giving error.

v_table variable:
'{"fieldCount":9,"values":["ID","IDPRODUCT","PRODUCT_PHOTO","INC_DATE","MOD_DATE","INC_USER","INC_NAME","MOD_USER","MOD_NAME",5,1,"￰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'...

Offline

Board footer

Powered by FluxBB