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

Вниз

TDBGrid добавление поля   Найти похожие ветки 

 
SemFLY ©   (2002-08-02 00:34) [0]

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

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


 
KMZ   (2002-08-02 06:54) [1]

Проверь структуру своей таблицы может действительно нет такого поля


 
Lola ©   (2002-08-02 10:19) [2]

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


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

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


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

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

Table1Test : TStringField;
FieldName : Table1Test


 
Val ©   (2002-08-02 18:51) [5]

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


 
Lola ©   (2002-08-02 23:04) [6]


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


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

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

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

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


 
Lola ©   (2002-08-03 11:41) [8]

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

Table1.AutoCalcFields:=True;
и

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


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


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

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


 
SemFLY ©   (2002-08-03 13:39) [10]

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


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

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


 
SemFLY ©   (2002-08-03 14:31) [12]

Так лана, начнём от « печки ». ;) А то я чего-то сам уже запутался.
У меня на форме имеется 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:38) [13]

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


 
SemFLY ©   (2002-08-03 16:12) [14]

Так, а как с 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);
не работает, подскажи как надо мне заполнить ?



 
Jeer ©   (2002-08-03 16:56) [15]

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

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

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


 
SemFLY ©   (2002-08-03 17:01) [16]

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


 
Jeer ©   (2002-08-03 17:03) [17]

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


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

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

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



 
Jeer ©   (2002-08-03 18:54) [19]

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


 
SemFLY ©   (2002-08-03 19:22) [20]

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

Спасибо !


 
SemFLY ©   (2002-08-03 19:39) [21]

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

;)))



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

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

Наверх




Память: 0.52 MB
Время: 0.025 c
3-70969
Leyler
2002-07-25 09:06
2002.08.22
из Excel в базу


14-71324
MIFI
2002-07-22 19:37
2002.08.22
Запуск скрипта на сервере


7-71409
Лёха
2002-06-08 18:38
2002.08.22
Как можно отлавливать иконки которые грузятся в tray?


1-71147
Cr@sh
2002-08-13 13:21
2002.08.22
Помоготи с использованием процедуры.


4-71442
Arick
2002-06-20 14:15
2002.08.22
HICON->HBITMAP