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

Вниз

fkCalculated ???   Найти похожие ветки 

 
barkot   (2004-09-27 14:06) [0]

Есть некий DataModule. В нем есть Query у которого SQL = "select * from table". В таблице table есть мемо поле fMemo.
Нужно в данном query создать вычисляемое поле(или какое-либо другое) чтобы получить из fMemo 50 первых символов. Как?
В каких свойствах и методах TField что писать?

З.Ы. никогда не пользовался вычисляемыми полями, всегда все решал посредством sql-запросов, а тут пришлось залесть в чужие дебри.


 
Денис   (2004-09-28 11:08) [1]

А вроде можно в SQL запросе задать длину получаемых данных с Memo


 
IZON   (2004-09-28 18:15) [2]

select cast(memo as varchar(50)) from table


 
Johnmen ©   (2004-09-28 18:24) [3]

Иногда очень полезно перед ответом испробовать его на себе. Или, в кр. случае, на кошечках...:)


 
sniknik ©   (2004-09-28 20:16) [4]

Johnmen ©   (28.09.04 18:24) [3]
а почему бы не предположить что в какомто из sql серверов запрос рабочий?
раз в вопросе неуказана база/sql сервер, имеем же право. ;о)) вопрос в общем - ответ в частном случае, неуказано там зачем указывать здесь? пусть вычисляет.

p.s. как минимум один скуль сервер поддерживает данную форму запроса -> [2] (счас только проверил)


 
Johnmen ©   (2004-09-29 09:18) [5]

>sniknik ©   (28.09.04 20:16) [4]

Упоминание fMemo весьма недвусмысленно говорит о Парадоксе/Дибейсе. Так что сервера нету...:)


 
serg128   (2004-09-29 10:16) [6]

Делаешь так:
1) Заводишь в своём Query поле типа fkCalculated
2) В его обработчике OnDataRead пишешь: Text := Substr(Query.FieldByName("fld").AsString, 1, 50);

Всё.


 
Johnmen ©   (2004-09-29 10:32) [7]

>OnDataRead

Это откуда ?


 
Johnmen ©   (2004-09-29 10:34) [8]

>Substr

Чё за ф-ия ?

>serg128

Вдумчиво читаем пост [3].


 
serg128   (2004-09-29 10:45) [9]

> Johnmen

Substr, Которая подстроку возвращает (сорри за неточность, я пишу C++)

OnDataRead там у поля (TField) обработчик есть.


 
Johnmen ©   (2004-09-29 10:54) [10]

>serg128   (29.09.04 10:45) [9]

Здесь дельферы живут, однако...:)

>OnDataRead там у поля (TField) обработчик есть.

Тебе показалось...


 
serg128   (2004-09-29 10:58) [11]

OnGetText, извиняюсь

только не говори, что его тоже нет


 
msguns   (2004-09-29 10:59) [12]

Насколько я понял, надо мемо как-то показать в визуальном контроле (к примеру, в гриде). Для этого никаких Calc-полей в датасет добавлять не надо и тем более тискать, как солдат толстую титьку, беззащитный SQL-запрос, попутно выясняя к чему (серверу или лок.БД) он сделан. "Собачка" зарыта в обработчике OnGetText соотв.полевого объекта (TField), который "прикручен" к TDataSet`у - папаньке большинства компонент доступа.

А вообще попутно (чтоб нне засорять форум хилыми отростками):
в каких случаях вообще-то надо пользоваться мемо ? Я, например, бегу от него как черт от ладана, заменяя везде где можно простым CHAR/VARCHAR. Хотя, конечно, если там надо романы Л.Н.Толстого запоминать.. А серьезно, практически любой список (мемо удобно именно для спископодобных данных в том числе) можно запихнуть в достаточно длинный стринг. А мемо - это куча доп. и не очень приятных приключений.
Во всяком случае у меня сложилось впечатление, что многие часто-густо юзают это самое мемо безо всякой на то нужды. Или я неправ ?

А как думают мастера ?


 
sniknik ©   (2004-09-29 10:59) [13]

> Johnmen ©   (29.09.04 09:18) [5]
несогласен.
скорее бы об этом говорило бы Query, table (без приставок ADO) и само то что неуказан используемая база (начинающие обычно полагают что то с чем они столкнулись единственно возможное, а сталкиваются естественно с BDE, парадокс, дбейс)
но это догадки, игра в телепатов ;о)).

а с полем ftMemo ...
вот например использую

procedure TMainForm.ShowMemo;
var TitName, RecNo, RecSize: string;
   i, Size: integer;
   Buf: array of byte;
   ChBuf: String;
   Stream1: TStream;
begin
 if not DBGrid.DataSource.DataSet.Active then Exit;
 case DBGrid.SelectedField.DataType of
   ftMemo, ftFmtMemo: begin

     if not Assigned(MemEdit) then begin
       Application.CreateForm(TMemEdit, MemEdit);
       MemEdit.Left:= MemEditPos.Left;
       MemEdit.Top:= MemEditPos.Top;
       MemEdit.Width:= MemEditPos.Width;
       MemEdit.Height:= MemEditPos.Height;
     end;

     MemEdit.DBMemo1.Font.Assign(DBGrid.Font);
     ....

работает это в ADO, процедура(начало) отображения различных типов полей.
прога для тестов практически всех провайдеров ADO (те которые к базам относятся), на всех это работает, тип распознается, независимо sql сервер это или движок локальной базы.

(если я правильно понял твою мысль)


 
Johnmen ©   (2004-09-29 12:11) [14]

>sniknik ©   (29.09.04 10:59) [13]
>но это догадки, игра в телепатов ;о)).

Ну да. Именно игра :)
Ещё сильная фишка с моей стороны: >В таблице table есть мемо поле



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

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

Наверх




Память: 0.5 MB
Время: 0.029 c
3-1095861438
Koala
2004-09-22 17:57
2004.10.24
Hint в выпадающем списке DBLookUpComboBox


3-1096446216
Михалыч
2004-09-29 12:23
2004.10.24
Как можно сделать inner join если БД загружается из файлов?


14-1096264817
Slavian
2004-09-27 10:00
2004.10.24
Вирус?


9-1087721018
Falcon(TFsoft)
2004-06-20 12:43
2004.10.24
DelphiX, снова detectionCollision....


1-1097235292
Vir
2004-10-08 15:34
2004.10.24
Анализ кода