Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-71196
anod
2002-08-09 22:55
2002.08.22
Bitmap


4-71422
Izyum
2002-06-17 11:51
2002.08.22
Работа с посторонними окнами


1-71136
dmtr
2002-08-13 11:10
2002.08.22
Коммандная строка


1-71238
amochkin
2002-08-11 20:43
2002.08.22
Прорисовка на desktop


6-71297
airs
2002-06-10 18:00
2002.08.22
Передача данных класса





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский