Lazarus 2.0.6x64 - Zeos 7.1.4-stable - SQLite3
Buonasera,
oggi ho scoperto che la copia del contenuto di un campo memo da una tabella in un'altro campo memo di altra tabella dello stesso database non avviene completamente, il secondo campo memo è circa la metà del primo.
In SQLite sono entrambi - TEXT - e in FPC entrambi - ftMemo -
per prova faccio questo:
mcod:='28.A05.D05.005'; // ArticoliCODICE.Text;
if not TotArti.Locate('CODICE', mcod, []) then informa('codice non trovato') else
if Articoli.Locate('CODICE', mcod, []) then
begin
Totarti.Edit;
Totarti.FieldValues['annotazion']:=Articoli.FieldValues['annotazion'];
Totarti.Post;
end;
ho provato molti modi ma non ho trovato la soluzione, il testo copiato è sempre circa la metà di quello originale.
Anche copiando manualmente l'intero testo nel secondo memo il risultato non cambia, ne viene memorizzato solo la metà.
Cosa mai potrà essere?
Prova qualcosa tipo:
var
stream: TMemoryStream;
...
mcod := '28.A05.D05.005'; // ArticoliCODICE.Text;
if not TotArti.Locate('CODICE', mcod, []) then
informa('codice non trovato')
else
if Articoli.Locate('CODICE', mcod, []) then
begin
stream := TMemorySTream.Create;
try
BlobField(Articoli.FieldByName('annotazion')).SaveToStream(stream);
stream.Position := 0;
Totarti.Edit;
BlobField(Totarti.FieldByName('annotazion')).LoadFromStream(stream);
// Totarti.FieldValues['annotazion'] := Articoli.FieldValues['annotazion'];
Totarti.Post;
finally
FreeAndNil(stream);
end;
end;
Edit:
commentata istruzione da sostituire
ho trovato e capito che il campo memo viene completamente riempito con:
Totarti.FieldValues['annotazion'] := Articoli.FieldValues['annotazion'];
o con:
TotartiAnnotazion.Text:=ArticoliAnnotazion.AsString;
ma poi viene visualizzato in misura ridotta (circa la metà) sia a schermo che in stampa