Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TDBGrid добавление поля [D5]


Страницы:   1 2

SemFLY ©   (2002-08-02 00:34:00) 

Я создаю поле с именем "Test", но мне почему то при процедуре Table1.Active := True, выдаётся ошибка
" Table1: Field "Test" not found "
Когда это поле появляется в DBGrid с именем " Test "
- - -
Добавляю поле, кликая два раза на Table1/Add Fields, потом два раза на DBGrid и в редактор DBGrid.Columns/Add New
FieldKind для поля ставлю fkData

Может в моих действиях есть ошибка, подскажите ?!


SemFLY   (2002-08-03 19:39:00) [1]

ВСЕМ СПАСИБО ! :))))
Теперь всё ясно что и как !
- - - - - - -
Особое спасибо ! ;)
Lol"e и Jeer"у

;)))


SemFLY   (2002-08-03 19:22:00) [2]

Да, я уверен что делаю и понимаю тоже !!!
"сохранить с расширением db" - это я сказал чтобы ты лучше понял мой вопрос, понятно что просто так нельзя взять и сохранить, от балды, с расширением *.db !
-----------------------------------
Во, DataBase Desktop, то что надо !

Спасибо !


Jeer   (2002-08-03 18:54:00) [3]

???
Ты уверен, что вообще понимаешь, что делаешь ?
Кого сохранить с расширением db ?
Для создания таблиц врукопашную существует DataBase Desktop/


SemFLY   (2002-08-03 18:02:00) [4]

Короче вроде я понял всё с этими полями что и как.

Теперь я хочу создать свой модуль (как DBDemos) с базой данных
через File/New/New(Закладка)/DataModule
Короче я там всё что надо в него впихиваю, а как мне его сохранить с расширением *.db и использовать ?


Jeer   (2002-08-03 17:03:00) [5]

Если у тебя нет вообще таблицы, то она создается через запрос TQuery "CREATE..." с описанием полей или через FieldsDefs для TTable.
Реструктуризация же таблицы совсем другое дело.
Чего же ты хочешь ?


SemFLY   (2002-08-03 17:01:00) [6]

Jeer,
Так это я понял, теперь спрашиваю, как использовать
CreateField.


Jeer   (2002-08-03 16:56:00) [7]

Ответ тебе уже дали !!!
Ты слушаешь или нет ?

>HELP: fkData - Field represents a physical field in a database >table.
>Это значит, что поле с данным типом должно физически >присутствовать в НД.

В твоей таблице-файле (файле !) его физически нет, поэтому и получаешь ошибку. Либо добавляй в файл-таблицу нужное тебе поле, но тогда не New а Add надо потом делать, либо создавай вычисляемое (виртуальное) поле или lookup-поле, но оно должно существовать в другой таблице.


SemFLY   (2002-08-03 16:12:00) [8]

Так, а как с CreateField
В Uses добавил Drintf

CreateField(Owner: TComponent; Dataset: TDataset); const FullName, Origin: string; const FieldID: TFieldID; const
AttrID: TAttrID): TField;

Owner: TComponent - Table1.
а остальное что чем будет ?

CreateField(Table1,nil,"Test","",TFieldID);
не работает, подскажи как надо мне заполнить ?


Lola   (2002-08-03 14:38:00) [9]

Потому что, физически поля нет. Пусть на форме у тебя компонент лежит с Table1.Active:=False. Вставь, например, в событие для формы OnCreate сначала функцию CreateField, а потом Table1.Active:=True. И дальше делай с этим полем, что хочешь.


SemFLY   (2002-08-03 14:31:00) [10]

Так лана, начнём от « печки ». ;) А то я чего-то сам уже запутался.
У меня на форме имеется DBGrid, DataSource и Table. Все я их есесно «связал».
DataBaseName – DBDEMOS
TableName – country.db
TableType – ttDefault
- - -
Я создаю( ! не вовремя выполнения программы ! ) поле с названием ‘ Test ’, кликая правой кнопкой на DBGrid и входя в Columns Editor.
Появляется 0 – Test

-
Далее клик два раза на Table1 открывается Form1.Table1 и там с помощью NewField добавляю поле ‘Test’ тип String.
FieldType – fkData
- - -
Потом всё сделав, пробую поставить Table1.Active := True; и мне пишет
< Table1 : Field ‘Test’ not found >
------------------------------------------------------
Почему не найден ? Я же его создавал !?


Lola   (2002-08-03 14:12:00) [11]

Как это "до компиляции"?


SemFLY   (2002-08-03 13:39:00) [12]

Поэтому в данной ситуации мне CreateField не нужен, т.к. поле уже создано.


SemFLY   (2002-08-03 13:35:00) [13]

Да, чтобы осталось навсегда.
- - -
P.S. Поле я создаю не вовремя работы программы, а ещё до компиляции.


Lola   (2002-08-03 11:41:00) [14]

В случае с вычисляемыми полями:

Table1.AutoCalcFields:=True;
и

procedure TForm1.Table1CalcFields(DataSet: TDataSet);
begin
// здесь пишется процедура вычисления значения поля для всех записей таблицы
end;


Только у тебя это всеравно как-то странно. Поле наверное создаешь, чтобы оно осталось навсегда? Или нет?
Если да, то посмотри CreateField.


SemFLY   (2002-08-03 00:56:00) [15]

Поле не существовало я его добавлял с помощью NewField, если выставить FieldType := Calculated, то данные из Edit.Text не появляются в поле

Table1.Edit;
Table1.FieldByName("Test").AsString := Edit1.Text;
Table1.Post;

Вот я в этом и не могу разобраться, почему не появляются данные из Edit.


Lola   (2002-08-02 23:04:00) [16]


> SemFLY ©
У тебя пытаются выяснить, до того как добавляешь поле с помощью Add New, оно в таблице уже есть или ты хочешь добавить абсолютно новоею Если оно существовало до, то добавлять надо с помощью AddFields. Если нет, то NewField и в FieldType := Calculated или LoocUp.


Val   (2002-08-02 18:51:00) [17]

HELP: fkData - Field represents a physical field in a database table.
Это значит, что поле с данным типом должно физически присутствовать в НД.


SemFLY   (2002-08-02 18:38:00) [18]

Mike Kouzmine >
Так в том то и дело, что добавляю в DBGrid поле Test.
Или ты как-то по-другому говоришь добавить ?

Table1Test : TStringField;
FieldName : Table1Test


Mike Kouzmine   (2002-08-02 12:14:00) [19]

Так в таблице его и нет. Ты объявляешь поле Test (Test : TSomeTypeField;), объявляешь его fkData, а физически в таблицу его не добавляешь. Вот об этом он тебе и говорит.


Lola   (2002-08-02 10:19:00) [20]

Может быть что в названии поля проскочила русская буква или в структуре, или в Grid-е.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо