Текущий архив: 2005.07.18;
Скачать: CL | DM;
ВнизWideString actual: Integer - Почему Найти похожие ветки
← →
alex-drob (2005-06-01 23:44) [0]Есть две таблицы, одна отображается на экране в DBGrid и в ней есть поле lookup типа String. При выборе в нём значения, в другое поле должно занестись в id второй таблицы, в обоих таблицах поля типа integer. При выполнении ADODataSet2.activate:=true; происходит ошибка WideString actual: Integer. Если в первой таблице поменять тип поля id на String то всё работает. В чём ошибка?
← →
Reindeer Moss Eater © (2005-06-02 00:08) [1]В статически созданных экземплярях полей TField
← →
alex-drob (2005-06-02 00:16) [2]
> ADODataSet2
ADODataSet1
В базе данных
← →
Reindeer Moss Eater © (2005-06-02 00:19) [3]В базе данных
А я и говорил про БД, а не про БТР.
← →
alex-drob (2005-06-02 00:26) [4]
> Reindeer Moss Eater © (02.06.05 00:08) [1]
Я не понял о чем вы.
← →
Reindeer Moss Eater © (2005-06-02 00:31) [5]В чем ошибка был вопрос.
Ответ:
Ошибка в экземплярах полей TField, созданных статически в design time.
Все они получают конкретный тип в время создания.
Одно из них получило тип WideString.
В то время как в БД это поле Integer;
← →
alex-drob (2005-06-02 00:32) [6]А как это можно исправить?
← →
Reindeer Moss Eater © (2005-06-02 00:37) [7]Сделать оба типа одинаковыми.
← →
alex-drob (2005-06-02 00:38) [8]А как? В таблицах они одинаковы.
← →
Reindeer Moss Eater © (2005-06-02 00:40) [9]Они разные.
У экземпляра TField и у физического поля в таблице БД.
← →
alex-drob (2005-06-02 00:42) [10]А как можно изменить тип экземпляра TField?
← →
Reindeer Moss Eater © (2005-06-02 00:44) [11]Мышкой.
← →
alex-drob (2005-06-02 00:48) [12]
> Мышкой.
Ну до этого я сам додумался. А вот где мышкой шёлкнуть не знаю. Если в свойстве FieldDefs, то там типы у одного поля ftinteger а у другого ftautoinc.
← →
Reindeer Moss Eater © (2005-06-02 00:54) [13]Щелкай мышкой туда, где поле ftWideString
← →
alex-drob (2005-06-02 00:59) [14]Такого поля нет.
← →
Reindeer Moss Eater © (2005-06-02 01:00) [15]Значит и ошибки уже нет.
← →
alex-drob (2005-06-02 01:05) [16]Ошибка есть.
← →
Reindeer Moss Eater © (2005-06-02 01:07) [17]Ошибка есть потому что читай все сначала.
← →
alex-drob (2005-06-02 01:24) [18]Непомогает.
Поле первой таблицы integer
Поле второй таблицы счётчик (пробывал integer)
Поле экземплятора 1 таблицы ftinteger
Поле экземплятора 2 таблицы ftautoinc
Ошибка: Type mismatch for field "pred", expecting: WideString actual: Integer.
("pred" поле в первой таблице)
lookup:
name = predmet
component = ADODataSet1predmet
Type = String
Size = 15
field type = lookup
key fields = pred (integer)
dataset = ADODataSet2
lookup keys = id (autoinc)
Result field = name (string 15)
← →
Reindeer Moss Eater © (2005-06-02 01:45) [19]Еще раз и в последний раз:
Читай все сначала.
Или сразу с поста номер пять.
← →
alex-drob (2005-06-02 23:04) [20]Не чего не получается, переделал всё заново, таже ошибка. Единственное поле для которого я не могу найти значение типа TFild это само поле lookup. Но у него тип String оно не должно влиять.
← →
ANB © (2005-06-02 23:34) [21]Значит не все или неправильно указал в настройках локапового поля.
← →
alex-drob (2005-06-02 23:45) [22]Type в lookup поле это тип поля который будет отображён в DBGrid там хоть string хоть integer ставлю работает одинаково.
Если я правельно понял свойства lookup поля:
key fields - поле в которое в первую таблицу будет внесено значение со второй (integer)
dataset - это dataset второй таблицы
lookup keys - поле второй таблицы которое будет вставлено в первую (integer)
Result field - поле второй таблицы, текст которого будет в lookup поле lookup keys
то всё должно работать ведь type поля key fields = type поля lookup keys
← →
alex-drob (2005-06-03 00:33) [23]Всё заработало. Так и не понял в чём ошибка! Несколько раз всё переделал и работает.
Спасибо всем.
Страницы: 1 вся ветка
Текущий архив: 2005.07.18;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.039 c