Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Tabla dbf y campo memo (https://www.clubdelphi.com/foros/showthread.php?t=93903)

Carmelo Cash 02-05-2019 04:35:38

Tabla dbf y campo memo
 
Hola Foro:

Esta consulta es medio "Fuera de época"... pero es que siempre trabajé con bases de datos y nunca usé tablas dbf.

Ahora tengo que hacer una aplicación que grabe y lea una tabla dbf y necesito un campo de observaciones que cargue un Tmemo.

Estoy utilizando el mismo método que para firebird pero no me funciona, porque si en el memo estribo:

AAAAAAAAAAAA
BBBBBBBBBBBB
CCCCCCCCCCCCCC

Cuando lo recupero me devuelve:

???????????????

Estoy utilizando Delphi 10 y me conecto con ADO

Bueno, a continuación dejo los pasos que estoy haciendo.

Desde ya muchas gracias.



--- sql para crear tabla -----

Create Table Articul6.dbf (
ID Integer,
CD char(25),
Articulo char(120),
Obs memo
);

--- sql para insert ----------------

Insert into
Articul6.dbf
(
ID,
CD,
Articulo,
Obs
)
values
(
:ID,
:CD,
:Articulo,
:Obs
)

El campo Obs es BlobType:ftWidwmemo

--- para grabar --------------------

var
MS: TMemoryStream;
begin
MS := TMemoryStream.Create;
Memo3.Lines.SaveToStream(MS);
Q_Ins.Parameters.ParamByName ('ID').Value:= StrToInt(Edit4.Text);
Q_Ins.Parameters.parambyname('CD').Value:= Edit5.Text;
Q_Ins.Parameters.parambyname('Articulo').Value:= Edit6.Text;
Q_Ins.Parameters.ParamByName('Obs').LoadFromStream(MS,ftBlob);
Q_Ins.ExecSQL;
ms.Free;
end;

--- para recuperar -----------------

Memo3.lines.Add(Q_Ver.FieldByName('Obs').AsString);

Casimiro Notevi 02-05-2019 09:19:19

Puede que sea por el unicode, prueba a grabar y a leer con ansistring en lugar de string.

newtron 02-05-2019 10:01:49

¿Los campos memo en .dbf no se tratan como string?

cloayza 02-05-2019 19:21:13

Estimado Carmelo Cash, si requiere trabajar con archivos DBase (.DBF) le sugiero utilizar el componente TDBF, es muy buena alternativa para la manipulación de estos viejos y queridos archivos de datos.

Acá puede descargar TDBF 7.01 que es la última versión.

Saludos cordiales

Carmelo Cash 03-05-2019 00:48:34

Solucionado
 
Hola Foro:

En primer lugar, como siempre muchas gracias por sus aportes.
Al finall la solucion fué cambiar el método de grabación y quedó bien.

Quedó así.

Código Delphi [-]
procedure TForm1.Button8Click(Sender: TObject);
begin
  Q_Ins.Parameters.ParamByName ('ID').Value:= StrToInt(Edit4.Text);
  Q_Ins.Parameters.parambyname('CD').Value:= Edit5.Text;
  Q_Ins.Parameters.parambyname('Articulo').Value:= Edit6.Text;
  Q_Ins.Parameters.ParamByName('Obs').VALUE:=(Memo3.Text);
  Q_Ins.ExecSQL;
end;

Otra vez, muchas gracias :cool:

ElKurgan 06-05-2019 07:35:05

Gracias por compartir la solución

Saludos


La franja horaria es GMT +2. Ahora son las 08:16:06.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi