Форум: "Базы";
Текущий архив: 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