Форум: "Базы";
Текущий архив: 2002.09.05;
Скачать: [xml.tar.bz2];
ВнизДинамически добавить поля в TQuery Найти похожие ветки
← →
snv-soft (2002-08-07 16:12) [0]Мастера!!! Помогите на нижеследующий код ругается
Field "ID" has no dataset....
RxDBGrid1.DataSource:=DS_AreaTab;
Query_AreaTab.Close;
Query_AreaTab.SQL.Clear;
Query_AreaTab.SQL.ADD("SELECT ID FROM PF.AREAS_TAB WHERE AREA_TYPE >=3");
Query_AreaTab.Open;
Query_AreaTab.Fields.Clear;
Query_AreaTab.Fields.Add(TFloatField.Create(Query_AreaTab));
Query_AreaTab.Fields[0].DisplayWidth:=15;
Query_AreaTab.Fields[0].FieldKind:=fkData;
Query_AreaTab.Fields[0].FieldName:="ID";
Query_AreaTab.Fields[0].Visible:=True;
Query_AreaTab.Fields[0].Required:=True;
← →
Mike Kouzmine (2002-08-07 16:13) [1]fkData не то, другой fk
← →
snv-soft (2002-08-07 16:32) [2]а какой fk надо, подскажи пожалуйста!
← →
Mike Kouzmine (2002-08-07 16:36) [3]fkCalculated не помню как пишеться. А значение присваивай в OnCalcFields. fkData - это поля физически присутствующие в таблице или в SQL запросе.
← →
Val (2002-08-07 16:38) [4]>snv-soft © (07.08.02 16:12)
а каков смысл?
← →
snv-soft (2002-08-08 06:14) [5]>Val©(07.08.02 16:38)
В задаче есть необходимость динамически добавлять справочники(не изменяя код проги).
Поэтому структура спровочников (поля,ширина полей,размер, SQL для справочников и тд.) хранится в отдельной таблице...
Для вызова справочника, нужно добавить в TQuery SQL запрос, создать поля, нужным образом настроить их(прочитав параметры из таблицы справочников), и связать с DBGridом...
Таким образом, все должно реализоваться через одну форму, один Грид и один Query....
----------------
Ну вот, че то пока не могу доехать где глюк...
мож кто поможет???
← →
ЮЮ (2002-08-08 06:29) [6]Если в Запросе и в Гриде в Designе не создавать поля, то не надо будет их и в RunTime определять - все, что вернет запрос, отразится и в Гриде :-)
← →
snv-soft (2002-08-08 14:05) [7]ЮЮ © (08.08.02 06:29)
Не все так просто....
А допустим надо будет мне добавить справочник с
полем LookUp....
Тогда его 100 пудов создавать в рунтиме придется...
если было бы все так просто, конечно я бы вообще ничего не создавал :))))
← →
ЮЮ (2002-08-09 07:15) [8]Xорошо, пусть будет так, но тогда у тебя непорядок с последовательность действий, правда ты не указал в какой строке кода вылетает ошибка.
Полагаю следует:
1)вместо
RxDBGrid1.DataSource:=DS_AreaTab;
поставить RxDBGrid1.DataSource:=nil, а подключать после открытия запроса
2) Query_AreaTab.Open;
Query_AreaTab.Fields.Clear;...
Предлагаю сначала определить Поля, а затем открывать запрос
← →
ShuraGrp (2002-08-09 10:34) [9]Насчет одного Query Ты возможно погорячился вполне хватит одного DataSource. Со статическими полями работать удобнее.
Может идея бредовая, но попробуй создавать поля до Open.
← →
lmatveev (2002-08-12 03:51) [10]Я постоянно использую справочники именно по этой схеме. Ошибка действительно в последовательности действий. Сейчас точно не вспомню, но должно быть что-то в этом духе:
Query1.Close;
Query1.FieldDefs.Clear;
Query1.Fields.Clear;
Query1.SQL.Text := "SELECT ID FROM MyTabale";
with Query1.FieldDefs.AddFieldDef do begin
Name := AFieldName;
DataType := ftFloat;
Size := 0;
CreateField(Query1);
end;
Query1.Open;
Lookup-поля создаются также, но в конце указываются необходимые атрибуты:
....
AField := CreateField(Query1);
AField.FieldKind := fkLookup;
AField.LookupDataSet := Query2;
AField.KeyField := "ID";
....
end;
....
← →
snv-soft (2002-08-18 09:03) [11]> lmatveev (12.08.02 03:51)
Спасибо, обычные поля получились...
Щас пробую Lookup-поля.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.09.05;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.231 c