Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2007.06.10;
Скачать: [xml.tar.bz2];

Вниз

Вычисляемое поле типа Memo   Найти похожие ветки 

 
Mmmaloy   (2007-03-19 10:32) [0]

Создавыл в DataSEt дополнительное вычисляемое поле, не существующее в базе типа String. Все было нормально, пока не настал момен, когда этих 255 символов стало не хватать. Хочу переделать тип Memo, но что бы тоже вычисляемое было - не хочет: Field ".." cannot be a calculated or lookup field. Как бороться?


 
Mmmaloy   (2007-03-19 10:38) [1]

Ах, да: ошибка вываливается в момент отрытия набора записей. До OnCalcFields дело не доходит


 
Ega23 ©   (2007-03-19 10:39) [2]

AFAIK, всё, что больше varchar(255) для DataSet считается как BLOB.


 
clickmaker ©   (2007-03-19 10:44) [3]


>  [2] Ega23 ©   (19.03.07 10:39)
> AFAIK, всё, что больше varchar(255) для DataSet

от движка зависит. В адо + ms sql можно хоть varchar(8000)


 
Ega23 ©   (2007-03-19 11:32) [4]


> от движка зависит. В адо + ms sql можно хоть varchar(8000)


А в гриде, вроде, всё равно как MEMO отображается? Или я что-то путаю?


 
clickmaker ©   (2007-03-19 11:40) [5]


> [4] Ega23 ©   (19.03.07 11:32)

ну если дашь полю тип ftMemo, то да.
Но по умолчанию varchar транслируется в ftString в АДО.
В БДЕ - да, есть ограничение в 255


 
Ega23 ©   (2007-03-19 12:22) [6]


> В БДЕ - да, есть ограничение в 255


А, точно! Это БДЕ-шный проект был.
Похоже, именно от реализации потомка TDataSet зависит...


 
Mmmaloy   (2007-03-19 18:57) [7]

Отета на свой вопрос не увидел. У меня ADO + MSAccess


 
sniknik ©   (2007-03-19 21:50) [8]

> Отета на свой вопрос не увидел.
не хотел, вот и не увидел... блюдечка с голубой каемочкой видать не было...


 
Mmmaloy   (2007-03-20 09:52) [9]

Кажется кто-то не уловил суть моего вопроса

255 для вычисляемого поля у меня оказалось недостаточным. Возможно увеличение до 500, до 1000, до 5000 и т.д. Но в любом случае, когда-нибудь пользователь может натолкнуться и на этот предел. Поэтому использование TMemoField(ftMemo) или TBlobField(ftBlob) показалось мне рациональным решением задачи. Да только студия ругается и по всей видимости не дает создавать вычисляемые поля этих типов, а вот String - пожалуйста! Вопрос был - возможно ли создать вычисляемые поля типов ftMemo и ftBlob. Если нет, о.к., буду String раздувать


 
Ega23 ©   (2007-03-20 10:29) [10]


> Вопрос был - возможно ли создать вычисляемые поля типов
> ftMemo и ftBlob. Если нет, о.к., буду String раздувать
>



A calculated field displays values calculated at runtime by a dataset"s OnCalcFields event handler. For example, you might create a string field that displays concatenated values from other fields.

To create a calculated field in the New Field dialog box:

1 Enter a name for the calculated field in the Name edit box. Do not enter the name of an existing field.
2 Choose a data type for the field from the Type combo box.
3 Enter the size of the field in the Size edit box, if appropriate. Size is only relevant for fields of type TStringField, TBytesField, and TVarBytesField.

4 Select Calculated or InternalCalc in the Field type radio group. InternalCalc is only available if you are working with a client dataset. The significant difference between these types of calculated fields is that the values calculated for an InternalCalc field are stored and retrieved as part of the client dataset"s data.
5 Choose OK. The newly defined calculated field is automatically added to the end of the list of persistent fields in the Field editor list box, and the component declaration is automatically added to the form"s or data module"s type declaration.

6 Place code that calculates values for the field in the OnCalcFields event handler for the dataset. For more information about writing code to calculate field values, see Programming a calculated field.

Note

To edit the properties or events associated with the field component, select the component name in the Field editor list box, then edit its properties or events with the Object Inspector. For more information about editing field component properties and events, see Setting persistent field properties and events.

TStringField represents a string field in a dataset.

Unit

DB

Description

TStringField encapsulates the fundamental behavior common to fields that contain string data. A value of a string field is physically stored as a sequence of up to 8192 characters. However, some table types may only support string fields of smaller dimensions. Common uses for string fields are to store text, such as names and addresses.

If you use the Fields editor at design time to create a persistent field component for the string field, you can access it by name at runtime. When using dynamic field components, you can access the TStringField instance using the dataset’s Fields property or FieldByName method.



 
Mmmaloy   (2007-03-20 10:38) [11]

Да это все ясно. Повторяю: После создания вычисляемых полей TMemoField(ftMemo) или TBlobField(ftBlob) указанными способами студия ругается при открытии данных  "Field ".." cannot be a calculated or lookup field". До События  OnCalcFields дело не доходит. Может это только шестая дельфя такая?


 
sniknik ©   (2007-03-20 10:57) [12]

> Кажется кто-то не уловил суть моего вопроса
кажется ктото считал 255 ограничением строк, изза которого и нужно использовать мемо... (первый вопрос), и когда ему указали что ограничение только у него в мозгах а не реальное, этот ктото "вильнул хвостом" и придумал другую идеологию под свой вопрос, чтобы не не признавать очевидного и не сказать "да блин, проглядел, мне оказывается того что есть за глаза хватает, а с ограничением ошибся".

если бы ты знал про 8кб то так и сказал бы "было 255 могу расширить до 8000 но считаю мало и хочу мемо". (вот тогда бы и поняли тебя именно так как ты хочеш представить позже, но говоря то что ты говорил...)

по вопросу. никогда не задумывался почему в гриде все поля как поля, со значениями, а вместо значений в мемо и блобах только надписи <memo>, <blob>?
и зачем тебе такая надпись, + программирование поведения этих типов при отдаче, сложным методом с борьбой, когда то что отдается и так уже у тебя на локали/в программе...  и отобразить это можно как угодно... а в расчетном поле для грида вывести <memo> самому, более простым методом/типом...


 
Mmmaloy   (2007-03-20 20:04) [13]

То что string допускает болше 255 символов было для меня новым, не скрываю, НО, когда я задавал вопрос, ожидал услышать ответа, почему не получается создавать вычисляемые поля типа ftMemo, а не упреки, что не умею читать между строк. Допускал, что этого нельзя делать по определению, или я чего не правильно делал. А так всем спасибо, вопрос снят



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

Форум: "Базы";
Текущий архив: 2007.06.10;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.071 c
2-1179823907
Lobach
2007-05-22 12:51
2007.06.10
Как получить число из строки


15-1179010751
ArtemESC
2007-05-13 02:59
2007.06.10
Песня из "Медведя"...


2-1179388526
Сергей_112233
2007-05-17 11:55
2007.06.10
простой вопрос


2-1179579674
dfsfd
2007-05-19 17:01
2007.06.10
Path


2-1179386405
ewer
2007-05-17 11:20
2007.06.10
bat-файл и программа на Pascal е





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский