Форум: "Базы";
Текущий архив: 2002.09.05;
Скачать: [xml.tar.bz2];
ВнизКак выташить инфу из 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c