PDA

Ver la Versión Completa : Insertar una imagen a la BD


kainchu3102
17-07-2021, 19:07:59
Buenas gente! necesito ayuda no puedo insertar una imagen a la base datos:
Tengo este codigo pero me este error:
[dcc32 Warning] Fabmturnos.pas(472): W1050 WideChar reduced to byte char in set expressions. Consider using 'CharInSet' function in 'SysUtils' unit.
En esta linea:

params.ParamByName('IMA_TUR').LoadFromStream(AStream,ftblob);


Este es el codigo:

procedure TFORMABMTURNOS.BTBA_TURClick(Sender: TObject);
var
AStream : TMemoryStream;
begin

BitBtn4.Click;

if (EditAP_TU.Text <> '') and (EditNO_TU.Text <> '') and (EditDO_TU.Text <> '') and (EditTI_TU.Text <> '') and (EditCO_TU.Text <> '')then
begin

with DataModule1.FDQINSERT_TUR do
begin
Params.ParamByName('FEC_TUR').AsDate := DateTimePicker1.Date;;
Params.ParamByName('HOR_TUR').AsTime := DateTimePicker2.Time;
Params.ParamByName('DNI_TUR').AsInteger := StrToInt(EditDO_TU.Text);
Params.ParamByName('APE_TUR').AsString := EditAP_TU.Text;
Params.ParamByName('NOM_TUR').AsString := EditNO_TU.Text;
Params.ParamByName('EDA_TUR').AsString := EditED_TU.Text;
Params.ParamByName('OBR_TUR').AsString := COBOX1.Text;
Params.ParamByName('MED_TUR').AsString := COBOX2.Text;
Params.ParamByName('COD_TUR').AsInteger := StrToInt(EditCO_TU.Text);
Params.ParamByName('TIP_TUR').AsString := EditTI_TU.Text;
Params.ParamByName('COS_TUR').AsFloat := StrToFloat(EditCOS_TU.Text);
Params.ParamByName('ABO_TUR').AsFloat := StrToFloat(EditAB_TU.Text);
Params.ParamByName('SAL_TUR').AsFloat := StrToFloat(EditSA_TU.Text);
Params.ParamByName('TOT_TUR').AsFloat := StrToFloat(EditTO_TU.Text);
Params.ParamByName('EMP_TUR').AsString := FORMPRINCIPAL.Label5.Caption;
AStream := TMemoryStream.Create;
Image1.Picture.Graphic.SaveToStream(AStream);
AStream.Position := 0;
params.ParamByName('IMA_TUR').LoadFromStream(AStream,ftblob);
//Params.ParamByName('EMP_TUR').AsString := FORMPRINCIPAL.Label3.Caption;
Params.ParamByName('ASI_TUR').AsString := 'SI';

ExecSQL;

if RowsAffected = 1 then
begin
DataModule1.FDTTURNOS.Refresh;

FORMTURNOS.RadioButton1.Checked := false;
FORMTURNOS.RadioButton1.Checked := True;

ShowMessage('EL TURNO FUE AGREGADO CON EXITO!.');

ecfisa
17-07-2021, 19:50:16
Hola.

Lo que mencionas no es un error, es una advertencia que te aconseja usar la función CharInSet y no pareciera tener que ver con el problema que mencionas. ¿ No aparece ningún mensaje de error además de esta advertencia ?

Por otro lado: ¿ Que base de datos estas usando ?, ¿ Que componentes usas para la conexión ?

Saludos :)

Pd: Recuerda usar las etiquetas DELPHI cuando incluyas código en tus mensajes.

kainchu3102
17-07-2021, 20:59:00
Estoy usando base datos mysql Workbench y Fdconection en en Data module

kainchu3102
17-07-2021, 21:08:05
Despues tengo otro codigo pero directamente me tira este mensaje3921





despues tengo este otro codigo donde me tira ese error:

var
jp : TJPEGimage;
begin
jp :=TJPEGimage.Create;
jp.LoadFromFile(opendialog1.FileName);
//Timage.Picture.Assign(Jp);
BitBtn4.Click;

if (EditAP_TU.Text <> '') and (EditNO_TU.Text <> '') and (EditDO_TU.Text <> '') and (EditTI_TU.Text <> '') and (EditCO_TU.Text <> '')then
begin

with DataModule1.FDQINSERT_TUR do
begin
Params.ParamByName('FEC_TUR').AsDate := DateTimePicker1.Date;;
Params.ParamByName('HOR_TUR').AsTime := DateTimePicker2.Time;
Params.ParamByName('DNI_TUR').AsInteger := StrToInt(EditDO_TU.Text);
Params.ParamByName('APE_TUR').AsString := EditAP_TU.Text;
Params.ParamByName('NOM_TUR').AsString := EditNO_TU.Text;
Params.ParamByName('EDA_TUR').AsString := EditED_TU.Text;
Params.ParamByName('OBR_TUR').AsString := COBOX1.Text;
Params.ParamByName('MED_TUR').AsString := COBOX2.Text;
Params.ParamByName('COD_TUR').AsInteger := StrToInt(EditCO_TU.Text);
Params.ParamByName('TIP_TUR').AsString := EditTI_TU.Text;
Params.ParamByName('COS_TUR').AsFloat := StrToFloat(EditCOS_TU.Text);
Params.ParamByName('ABO_TUR').AsFloat := StrToFloat(EditAB_TU.Text);
Params.ParamByName('SAL_TUR').AsFloat := StrToFloat(EditSA_TU.Text);
Params.ParamByName('TOT_TUR').AsFloat := StrToFloat(EditTO_TU.Text);
Params.ParamByName('EMP_TUR').AsString := FORMPRINCIPAL.Label5.Caption;

params.ParamByName('IMA_TUR').AsSign(jp);
//Params.ParamByName('EMP_TUR').AsString := FORMPRINCIPAL.Label3.Caption;
Params.ParamByName('ASI_TUR').AsString := 'SI';

ExecSQL;

if RowsAffected = 1 then
begin
DataModule1.FDTTURNOS.Refresh;

kurono
18-07-2021, 05:05:56
¿que tipo de datos declaraste en la base de datos para guardar la imagen? para guardar imagen o otro tipo de archivo los campo deben declarase como BLOB yo siempre lo hago con este codigo


// De archivo en disco a campo BLOB

TBlobField(ADOTable1.FieldByName('pdf')).LoadFromFile('archivo.pdf');

// De campo BLOB a archivo en disco

TBlobField(ADOTable1.FieldByName('pdf')).SaveToFile('archivo.pdf');