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

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

Много полей в таблице???


Гость22 ©   (2005-08-30 17:06:00) 

Есть таблица Парадокс. Когда пытаюсь ввести в поле (напр 'ddd') значение, пишет, что такого поля нет. Хотя я знаю, что есть. Это поле 62-е по списку. Если ставлю тут же вместо 'ddd' любое другое поле - нормально заносит в таблицу. В чем может быть проблема? Нигде не встречал, что в таблице Парадокс должно быть только 61-о поле.


Digitman   (2005-08-31 09:25:00) [1]

ты вообще-то как формировал список объектов TFields - в дизайн-тайм или в ран-тайм ?

если в в дизайн-тайм - "ручками" добавлял по одному или ничего явно не добавлял, а доверил это эксперту ?

судя по  "FieldNo равен -1" поля ты добавлял "ручками", явно указывая их FieldKind ..

просмотри в дизайнере все поля в списке и найди среди них поле, имеющее FieldKind = fkData и FieldName = 'ddd', если не найдешь, то в ран-тайм оно уж и подавно не найдется


Гость22   (2005-08-30 20:12:00) [2]

извиняюсь. То что выше написал - проверил отдельно от приложения.
Но когда проверил в приложении, получился какой-то бред!
Есть поля, у которых FieldNo равен -1 (насколько я понял - это LookUp поля). Но почему не показывает поля 'ddd'?


Гость22   (2005-08-30 19:31:00) [3]

проверил.
FieldName всегда совпадает с DisplayName
а Field index меньше на единицу от FieldNo. Всего FieldNo - 62 (и Field index, соответсвенно - 61) Вроде так должно и быть?


Digitman   (2005-08-30 18:36:00) [4]

не путай индекс объекта TField в списке DataSet.Fields - он НЕ обязан соответствовать порядковому номеру поля в структуре подлежащего таблицы или запроса

порядковый номер поля, для доступа к которому был создан объект TField, м.б. получен чтением св-ва TField.FieldNo (нумерация здесь начинается с единицы)

проверь :

with Table1 do
for i:= 0 to Fields.Count - 1 do
 begin
  with Fields[i] do
  Memo1.Lines.Add(Format('Field index:%d FieldNo:%d FieldName:%s DisplayName:%s', [i, FieldNo, FieldName, DisplayName]));
 end;


Гость22   (2005-08-30 18:20:00) [5]


> Table1.Fields[61].FieldName

??? Ничего не понимаю. Выдало имя поля, которое идет в списке полей под номером 55!
Но ведь и общее число полей показало 71, хотя их 62!


Digitman   (2005-08-30 18:12:00) [6]

пардон, не Table1.Fields[61].Name, а Table1.Fields[61]. FieldName

?


Гость22   (2005-08-30 18:10:00) [7]


> а что говорит Table1юFields[61].Name ?


"йцук" is not a valid component name.

Где "йцук", то что я заношу в поле.


Digitman   (2005-08-30 18:01:00) [8]

а что говорит Table1юFields[61].Name ?


> когда поставил
> Table1.Fields[2].Value := ...;, почему-то записало в третье
> поле


правильно записало.
индексация полей в списке начинается с нуля, а не с единицы


stone   (2005-08-30 17:59:00) [9]


> Но, интересно - когда поставил
> Table1.Fields[2].Value := ...;, почему-то записало в третье
> поле.

Потому что счет начинается с 0.


Гость22   (2005-08-30 17:56:00) [10]


> т.е. в ответ на попытку
> SomeDataSet.FieldByName('ddd').Value := ...;
> возникает исключение ?

Совершенно верно


> SomeDataSet.Fields[61].Value := ...;

Ничего не говорит - пропускает, но записи в поле нет.
Но, интересно - когда поставил
Table1.Fields[2].Value := ...;, почему-то записало в третье поле.


> SomeDataSet.Fields.Count

равно 71. Не знаю, почему.


Digitman   (2005-08-30 17:35:00) [11]

т.е. в ответ на попытку

SomeDataSet.FieldByName('ddd').Value := ...;

возникает исключение ?

а что говорит в ответ на

SomeDataSet.Fields[61].Value := ...;

?

и чему равно

SomeDataSet.Fields.Count

?


Наверх

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