![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Много полей в таблице???
Гость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
?