Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.05;
Скачать: CL | DM;

Вниз

Как выташить инфу из TMemoField   Найти похожие ветки 

 
ArhAngeL2 ©   (2002-08-13 16:33) [0]

у меня проблема есть поле TMemoField. Мне нужно его обработать. Пытаюсь выташить строку через (поле).AsString или через (поле).Varible на этой строке выдаеться ошибка:
Cannot access field "text" in a filter
Таблица Paradox
Посоветуйте как мне выташить оттуда инфу...


 
Mike Kouzmine   (2002-08-13 16:39) [1]

Что значит вытащить и что значит обработать? Приведи текст


 
SaS13 ©   (2002-08-13 16:45) [2]

ArhAngeL2 © (13.08.02 16:33)
А НД отфильтрован?


 
3JIA9I CyKA ©   (2002-08-13 17:38) [3]

Assign
Ку?


 
ArhAngel2 ©   (2002-08-13 18:12) [4]

Я ищу строку в поле memo. Хочу отфильтровать таблицу.
Это происходит в OnFilterRecord TTable


 
3JIA9I CyKA ©   (2002-08-13 18:35) [5]

Assign ку или не ку?


 
ArhAngel2 ©   (2002-08-13 19:14) [6]

Assign не ку


 
3JIA9I CyKA ©   (2002-08-13 19:16) [7]

Тады ку-ку.


 
Ig Li   (2002-08-13 21:48) [8]

Кто-нибудь даст дельный совет, а то одни эмоции.


 
Виталий Панасенко   (2002-08-14 08:51) [9]

Попробуй передать его компонету TMemo и обрабатывай


 
Mike Kouzmine   (2002-08-14 09:26) [10]

Так приведи код, что спрашивать?


 
Igel ©   (2002-08-14 11:20) [11]

У меня была схожая ситуация...
Нужно было в DBGrid-e отразить содержимое поля МЕМО. Решил так:

1. Событие GetText поля TTable(думаю и TQuery пойдет)

procedure TDM_telefone.GetTextFieldMemo(Sender: TField;
var Text: String; DisplayText: Boolean);
begin
//Меняем возвращаемое полем значение
Text:=GrabMemoAsString(TmemoField(sender));
end;


2. Функция описана выше... :)) Преобразует в строку

function GrabMemoAsString(TheField:TmemoField):string;
var stream:TADOBlobStream;
MemSize:integer;
Buffer: PChar;
begin
if TheField.IsNull then Result:="" else
begin
{создаем поток от поля
Я использовал компоненты АДО, поэтому использовал
TADOBlobStream. Базовый пример был с TBlobStream
}
stream:=TADOBlobStream.Create (TheField, bmread);
with stream do
try
//Память, занимаемая потоком (размер потока)
MemSize := Size;
//На свободную
inc(MemSize);
// выделяет область памяти и возвращаем указатель
Buffer := AllocMem(MemSize);
try
//Читаем данные из потока в выделенную область памяти
Stream.Read(Buffer^, MemSize);
//Возвращаем в строковом виде
result:=string(Buffer);
finally
FreeMem(Buffer, MemSize);
end;
finally
free;
//Меняем спец символы на пробелы.
while Pos(#10, result)> 0 do result[Pos(#10, result)]:=" ";
while Pos(#13, result)> 0 do result[Pos(#13, result)]:=" ";
end;
end;
end;


З.Ы. Из базового примера кроме идеи ничего нет... Сначала не врубался пока не обратил внимания на конструкцию:
procedure TDM_telefone.GetTextFieldMemo(Sender: TField;
var Text: String; DisplayText: Boolean);
Тогда понял, как текст возвращается преобразованный ... :))
Учимся потихоньку!! :))


 
Ig Li   (2002-08-14 12:07) [12]

Отобразить МЕМО поле вобщем то не проблема. Как отфильтровать таблицу.
Ситуация такая:
Есть поле Мемо,например "Характеристика", как отобрать все данные в "Характеристике" которых встречается слово, например "Спокойный".


 
ArhAngel2 ©   (2002-08-14 21:07) [13]

Не получается все тажа самая ошибка...
Наверное Table блокирует memo во время фильтрации...
Вне этого события все нормально но именно в этой процедуре глючит...
Пришлось немного схитрить. Чтобы отфильтровать таблицу я добавил поле TBooleanField и если запись удовлетворяет условию то True иначе False
и поставил стандартную фильтрацию (таблица).Filter="(поле)=Trye"
и перебераю по каждой записи.
Потерял в производительности и в размере БД,но зато работает
ЕСЛИ КТО-ТО ЗНАЕТ ЕЩЕ СПОСОБ, ПОЖАЛУЙСТА, НАПИШИТЕ!!!




Страницы: 1 вся ветка

Текущий архив: 2002.09.05;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
1-14058
nh
2002-08-23 11:45
2002.09.05
RXLib


1-14050
КСА
2002-08-26 12:40
2002.09.05
Форматы печати в QuickReport


7-14305
sector
2002-06-26 22:31
2002.09.05
opendialog


1-13989
Mr.Kirya
2002-08-25 22:34
2002.09.05
Панель


1-14114
delphiguru
2002-08-23 19:30
2002.09.05
WinExec и ShellExecute