Форум: "Базы";
Текущий архив: 2002.08.22;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.01 c