O erro JPEG 42 é relatado quando o fluxo é truncado. Por exemplo, se você tentar carregar um arquivo de comprimento zero em um
TJPEGImage
então o erro 42 é o resultado final. Se algumas imagens forem exibidas, mas não todas, a explicação mais provável é que os dados de alguma forma não estão fazendo a viagem de ida e volta para o banco de dados.
Verifique o tamanho do campo BLOB ao escrevê-lo. Verifique se ele corresponde ao tamanho do arquivo ao gravá-lo em um arquivo de disco. Verifique se o arquivo do disco é um JPEG válido. Em seguida, confirme se o campo BLOB tem exatamente o mesmo comprimento quando você o lê novamente. Talvez haja algo errado com seu código de banco de dados e o fluxo esteja sendo truncado.
Portanto, o primeiro passo aqui é confirmar que você pode recuperar exatamente os mesmos dados que colocou originalmente no banco de dados.
O único outro pensamento que tenho é que o gráfico no controle de imagem nem sempre é um JPEG. O código que você usa para carregar a imagem,
Image1.Picture.Graphic.LoadFromStream()
assume que os dados são um JPEG. Se você salvou algo diferente de um JPEG, então LoadFromStream()
falharia.