Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Создание поля у AdoQuery


Автор: Nowichok 29.7.2009, 20:15
Собственно, сабж - программно добавить поле к AdoQuery. Гуглил, нашёл решение. Сделал, работает, но при выходе из программы выдаёт ошибку памяти (Exception EInvalidPointer) ((
В растерянности, что к чему. Видать ошибка простая...а найти всё не могу.
Вот частично код:

Код

var
Field:TField;
.....
   Field:=TIntegerField.Create(DM.Query_prosto); // компонент в форме DM находится
   Field.FieldKind:=fkData;
   Field.FieldName:='N_Smeti';
   Field.Name:='Query_prostoField'+Field.FieldName;
   Field.DataSet:=DM.Query_prosto;

   DM.Query_prosto.Fields.Add(Field);
   DM.Query_Prosto.Open;
......


На этом основное всё. Если что - БД Access.
Надеюсь на вашу помощь )

Автор: Akella 29.7.2009, 21:02
http://www.google.com.ua/search?q=%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE+%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2%D0%B8%D1%82%D1%8C+%D0%BF%D0%BE%D0%BB%D0%B5+access&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox

Добавлено через 7 минут и 59 секунд
http://www.google.com.ua/search?hl=ru&client=firefox&rls=org.mozilla%3Aru%3Aofficial&q=access+alter+table&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&meta=


http://office.microsoft.com/ru-ru/access/HA012314311049.aspx

Добавлено через 11 минут и 1 секунду
http://www.google.com.ua/search?q=TAdoQuery+%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2%D0%B8%D1%82%D1%8C+%D0%BF%D0%BE%D0%BB%D0%B5&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox

Автор: Nowichok 29.7.2009, 21:27
O_o
Спасибо, конечно. Но причём тут запросы с изменением структуры самой таблицы?
Я уже писал, что искал в интернете. Решение по сути НАЙДЕНО.Поле динамически СОЗДАЁТСЯ. Но при выходе из программы выдаётся ошибка памяти. Не могу понять, на каком основании она получается ?
Чуток больше информации:
Код

var
New_f:TField;
....
New_f:=TIntegerField.Create(nil);
   New_f.FieldKind:=fkData;
   New_f.FieldName:='N_Smeti';
   New_f.Name:='Query_prostoField'+New_f.FieldName;
   New_f.DataSet:=DM.Query_prosto;

   DM.Query_prosto.Fields.Add(New_f);

   DM.Query_Prosto.SQL.Clear;
   DM.Query_Prosto.SQL.Add('Select N_smeti,Vid_rabot_opisanie,Summa_vozvrata From Smeta Where Id_uch='+id);

   DM.Query_Prosto.Open;
....


Если ставлю комментарий на строку DM.Query_prosto.Fields.Add(New_f); -  то всё работает без ошибок.  То есть загвозда в этой строчке. Почему, что не так делаю ?

Автор: Romikgy 29.7.2009, 21:32
Цитата(Nowichok @  29.7.2009,  20:27 Найти цитируемый пост)
Но причём тут запросы с изменением структуры самой таблицы?

потому как саму суть искажаешь ... Query это запросы , и решать что либо надо запросами языка sql !
хочешь таким способом юзай ADOTable и какие траблы...

Автор: Nowichok 29.7.2009, 21:37
Спортивный интерес. Такой уж я - привык решать проблемы.
Вроде и сделано верно...а где-то ошибка (

Закомментил DM.Query_Prosto.Open; - опять выдал ошибку.
Т.е. даже без открытия QUERY получается глюк (

Автор: Nowichok 29.7.2009, 21:54
Кажись, решение найдено.
Как видно даже из запроса - я в запросе выбирал поле N_smeti и сам добавлял поле N_smeti. Вот из-за повторения могло и глючить.
А моя проблема была решена строчкой 
Код

 DM.Query_prosto.Fields[0].DisplayLabel:='№ сметы';


Всё легко и просто и даже без динамического добавления поля )

Автор: Akella 30.7.2009, 10:13
Цитата(Nowichok @  29.7.2009,  21:27 Найти цитируемый пост)
причём тут запросы с изменением структуры самой таблицы?


Цитата(Nowichok @  29.7.2009,  20:15 Найти цитируемый пост)
программно добавить поле к AdoQuery

Ну я тебя совсем не понимаю, чего же тебе нужно-то?

"Так его, Царь-батюшка понять не мудрено". (С) Иван Васильевич меняет профессию  smile

Добавлено через 2 минуты и 20 секунд
Цитата(Nowichok @  29.7.2009,  21:27 Найти цитируемый пост)
Не могу понять, на каком основании

Да, потребуй у своего кода отчёт  smile  на каком основании smile 

Автор: Akella 30.7.2009, 10:30
Цитата(Nowichok @  29.7.2009,  21:54 Найти цитируемый пост)
Как видно даже из запроса - я в запросе выбирал поле N_smeti и сам добавлял поле N_smeti. Вот из-за повторения могло и глючить.

 smile

Добавлено через 32 секунды
Nowichok, Пометь вопрос, как решённый. smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)