| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Как програмно создать TField ? |
| Автор: P&$ 16.12.2002, 22:25 |
| Привет! Озадачиваю! 1. Для Query, во время выполнения программы, надо создать дополнительное поле (вычисляемое). Делаю так: var ADR:TStringField; begin ............ Query1.FieldDefs.Add('ADR',ftString,256); ADR:=TStringField.Create(Self); ADR.FieldKind:=fkCalculated; ADR.FieldName:='ADR'; ADR.Calculated:=True; Query1.Fields.Add(ADR); ........ END; При открытии запроса возникает ошибка, мол: Field 'ADR' has no dataset ! Вышел из положения тем, что создаю все поля в конструкторе, а затем ненужные Destroy. Но это, по моему, корявый выход. Как создать поле? Решение нужно какможно скорее! (т.к. иначе предется пользоваться корявыми ) И исче: 2. Как из программы (exe) выполнять скрипты InterBase? |
| Автор: Medved 16.12.2002, 23:16 |
| Не знаю, у меня твой код работает...... и открывает, и закрывает.... |
| Автор: Medved 16.12.2002, 23:32 | ||
Что ты хочешь этим сказать? Абослютно непонятно.... Если ты хочешь выполнить скрипт из приложения, написанного тобой, то просто весь скрипт загоняешь в свойство SQL компонента TQuery, а затем выпоняешь метод Execute (Query1.Execute). |
| Автор: P&$ 17.12.2002, 14:39 |
| Да загоняю! Пример скрипта: CREATE TABLE TovarGr ( kod SMALLINT NOT NULL PRIMARY KEY, name VARCHAR(20) NOT NULL ); CREATE GENERATOR k_TovarGr; SET GENERATOR k_TovarGr TO 0; SET TERM ^; CREATE TRIGGER id_TovarGr FOR TovarGr ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.kod IS NULL) THEN NEW.kod=GEN_ID(k_TovarGr,1) ; END^ SET TERM ;^ Он выполняет только первую, а на остальные ругается. Я подозреваю в нем синтаксис изменяется, но как?! |
| Автор: Medved 18.12.2002, 02:25 |
| Попробуй убрать "SET TERM ^"; и знак "^"; //Хотя однозначно не могу гарантировать, что будет работать....
|
| Автор: P&$ 18.12.2002, 19:14 |
| Да он ругается уже на CREATE GENERATOR, т.е. я так понимаю, что разделитель SQL команд в скрипте не как в самом IB ; а какой-то другой. |
| Автор: Fantasist 19.12.2002, 03:46 |
| Возможно стоит востпользоваться компонентами IB (IBQuery,IBSQL). |
| Автор: P&$ 19.12.2002, 21:46 |
| Дык я ими и пользуюсь! Delphi 5 IB 5 ? Но ругаетси! |
| Автор: Medved 20.12.2002, 04:53 | ||
А на что именно он у тебя ругается? Запости сообщение об ошибке... |
| Автор: P&$ 20.12.2002, 17:59 |
| Dynamic SQL Error SQL error code = -104 Token unknown - line 7 char -1 CREATE. Мол не знает он команды create! (Но это-ж отмаз ) Если "скармливаю" скрипт isql то все зашибись. А Вы вообще такое делали? Еще вопрос назрел, тут по дури установил Delphi и IB 6 - потом решил вернуть 5 (ну на работе 5, а дома "решил поэксперементировать"), теперь IB5 не работает, я уже все файлы, что в ib_install.log принес с рабочего компа (тат то все в норме) - нифига - делает вид что работает, а при попытке создать таблицу пишет мол нет коннекта с базой ( IBGuard в левом углу аж краснеет) err - 901. Это смертельно? (То бишь Win сносить, или в реестре можно поковыряться?) |
| Автор: Medved 21.12.2002, 04:52 |
| Это конечно не смертельно, но лучше все переустановить.... ИМХО самый быстрый способ.... |