Модератор: Модераторы
Logo писал(а):Какого типа база данных?
Vadim писал(а):WAYFARER
Для показа мемо есть отдельный компонент.
WAYFARER писал(а):К сожалению задача такова, что поле должно быть показано в гриде.
WAYFARER писал(а):Logo писал(а):Какого типа база данных?
Программа использует несколько СУБД на выбор Sqlite, PostgeSQL, FireBird.
Собственно без разницы, что подключено, результат один и тот же.
Logo писал(а):WAYFARER писал(а):Logo писал(а):Какого типа база данных?
Программа использует несколько СУБД на выбор Sqlite, PostgeSQL, FireBird.
Собственно без разницы, что подключено, результат один и тот же.
Разница есть, по разному решается.
Отображаться должно одной строкой или несколько?
Vadim писал(а):А в этом мемо-поле буковок много? Сколько?
WAYFARER писал(а):Да собственно надо то первые 50-70 знаков показать.
Очень много:) ~3-10 кб текста.
SELECT fld_memo::text AS new_fld_memo
Logo писал(а):тоесть, BLOB поле запрашиваем, как текстовое.
SUBSTR(поле, 0,50)
Vadim писал(а):Logo писал(а):тоесть, BLOB поле запрашиваем, как текстовое.
В запросе надо ограничить количество символов.
Для FireBird и SQLite это можно сделать так:
- Код: Выделить всё
SUBSTR(поле, 0,50)
Для Postgre не знаю.
substr
cast(adr_distr as varchar(10)),
adr_city
FROM
address;
substr
adr_distr::varchar(10),
adr_city
FROM
address;
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
P: array [0..1023] of Char; { MemoField buffer }
//BS: TBlobStream;
S: string;
begin
if dbf1.FieldByName('R') is TMemoField then
begin
with (Sender as TDBGrid).Canvas do
begin
{Table1Notes является TMemoField}
//BS := TBlobStream.Create(Table1Notes, bmRead);
FillChar(P, SizeOf(P), #0);
//BS.Read(P, SizeOf(P));
//BS.Free;
S := StrPas(P);
{удаляем возврат каретки и перевод строки}
while Pos(#13, S) > 0 do S[Pos(#13, S)] := ' ';
while Pos(#10, S) > 0 do S[Pos(#10, S)] := ' ';
{очистка ячейки}
FillRect(Rect);
{заполнить ячейки с данными памятки}
TextOut(Rect.Left, Rect.Top, S);
end;
end;
end;
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16