Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Campo Memo en bases de datos Access (https://www.clubdelphi.com/foros/showthread.php?t=24647)

DarkByte 29-08-2005 17:21:07

Campo Memo en bases de datos Access
 
Buenas.

Estoy intentando currarme un programa de bases de datos.... supongo que bastante sencillo para lo que se habrán tenido que enfrentar otros integrantes del club.

La base de datos está hecha en MSAccess, y tiene dos tablas: Vendedoras y Clientas.

En la tabla de Clientas hay un campo llamado "Regalos", donde ha de contener los regalos que ha recibido dicha clienta como comisión por una venta. El caso es que la longitud del campo puede ser mayor a 255 carácteres, por lo que ponerlo como Texto no me vale.

Había pensado en ponerlo como Memo, pero no se implementarlo al hacer el post de datos... ni que en un DBGrid me muestre el camo en vez de '(memo)';

Muchísimas gracias, aunque se solamente por haberme leido :)

jmariano 29-08-2005 18:36:11

Para editar campos Memo tendrás que usar el control DBMemo. También podrás usar para modificar los datos de un campo Memo:

- el método "FieldByName" o la propiedad "Fields" del DataSet
- la propiedad "Value" del mismo campo Memo.

(Es decir, los campos Memo son tratados igual que cualquier campo normal)

En un DBGrid no podrás editar los campos Memo pero si podrás hacer que aparezca el contenido en vez de "(memo)". Para ello has de especificar en el evento "OnGetText" del campo Memo el valor para el mismo campo, por ejemplo:

Código Delphi [-]
procedure TDataModule1.ClientDataSet1ObservacionesGetText(Sender: TField;
  var Text: String; DisplayText: Boolean);
begin
  Text := ClientDataSet1Observaciones.Value;

  // Otra alternativa: Text := ClientDataSet1.FieldByName('Observaciones').AsString
end;

(La única limitación es que no te interpretará los saltos de línea, etc., por eso es mejor usar el DBMemo para visualizar estos campos)

Saludos!

DarkByte 29-08-2005 19:14:40

Aja, muchísimas gracias jmariano, ya puedo implementar el campo tranquilamente

Alfredo 29-08-2005 21:18:57

tambien...
 
Como te comenta el compañero, puedes visualizar como texto el contenido de un campo memo el el grid...

Yo lo tengos configurados asi y puedo editarlos tambien:

Código:

procedure TForm1.q1memoGetText(Sender: TField; var Text: String;
  DisplayText: Boolean);

Text:= Trim (Sender.asString);

end;


Código:

procedure TForm1.q1MemoSetText(Sender: TField; const Text: String);
begin

 Sender.AsString:=Text;
end;


Alfredo 29-08-2005 21:41:07

y como Tmemo:::
 
Si ademas:

Código:

//...
cadena := editNombre.Text+', '+editApellido.Text;

    //esto añade nombre y apellido desde Tedit a una variable 
    // y se guarda en mayusculas y sin saltos de parraro en el Memo1.
Form1.Memo1.Text:= form1.Memo1.Text+AnsiUpperCase(trim(cadena))

    // si se usa en metodo ADD, lo guarda en otra linea...jeje
    //asi se guarda en la tabla con campos persistentes:

tablaPersonajes.value := Form1.Memo1.Text;



La franja horaria es GMT +2. Ahora son las 00:53:57.

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