Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2013, 17:55   #1
pakusya
Пользователь
 
Регистрация: 17.10.2008
Сообщений: 23
По умолчанию связь SQL

Здравствуйте, Подскажите как правильно сделать:
Мне надо чтобы при добавлении или редактировании данных в форме 2, эти данные при закрытии этой формы сразу же отображались в форме 1 в таблице. Все данные сохраняются в нескольких таблицах Access.
Запрос для вставки значений в таблицу написала:
Код:
INSERT INTO Gurnal

SELECT  Trud.[Дата приема], Trud.[Структурное подразделение],  
ObSved.[Фамилия], ObSved.[Имя],   ObSved.[Отчество],   ObSved.[Таб №]
FROM  Trud inner  join  ObSved ON Trud.id = ObSved.id
но выходит ошибка: ADOQueri: commandText does not return a result set.
Хотя при запуске программы данные отобразились, но при добавлении данных новые не отображаются, помогите пожалуйста

Projects.rar

Последний раз редактировалось Stilet; 13.05.2013 в 19:51.
pakusya вне форума Ответить с цитированием
Старый 13.05.2013, 18:04   #2
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

проэкт не смотрел, но подозреваю что проблема в том что ты запрос открываешь
Код:
ADOQueri.Open;
, а нужно
Код:
ADOQueri.ExecSQL;
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 14.05.2013, 00:08   #3
pakusya
Пользователь
 
Регистрация: 17.10.2008
Сообщений: 23
По умолчанию

Спасибо, но у меня БД соединена через ADO, а с помощью SQL просто сделала запрос, значит так не правильно?
А если ставить код ADOQueri.ExecSQL; то куда, в procedure TForm1.FormCreate(Sender: TObject);?
pakusya вне форума Ответить с цитированием
Старый 14.05.2013, 08:31   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А если ставить код ADOQueri.ExecSQL; то куда
Где у тебя в коде этот запрос поставлен?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.05.2013, 10:52   #5
pakusya
Пользователь
 
Регистрация: 17.10.2008
Сообщений: 23
По умолчанию

три таблицы в Access: Gurnal (ФИО, Должность), Trud(Должность, дата приема), ObSved(ФИО, дата рождения) и две формы 1 и 2. Gurnal отображается на форме1 в DBGrid. В таблицы Trud и ObSved данные заносятся через форму2 - редактирования и сохраняются (это я сделала).
Не знаю как сделать так чтобы при редактировании или добавлении данных на форме1- редактирования, данные сразу отображались на форме2 в DBGrid. И если я выделяю строку и кликну по ней два раза, должна открыться форма заполненная нужными данными. Как все это сделать не знаю
Код записывала в форму1, выходит ошибка так не ставится Activ в True в ADOQwueri, уже совсем запуталась. Если в ADOQwueri ставлю просто одну таблицу Gurnal ,то Activ включается, а если делаю запрос с тремя таблицами, то нет.
Сам запрос: 'INSERT INTO Gurnal select trud.[Дата приема], Trud.[Структурное подразделение],ObSved.[Фамилия], ObSved.[Имя],ObSved.[Отчество],ObSved.[Таб №]'
From Trud inner join ObSved on Trud.id = ObSved.id;
pakusya вне форума Ответить с цитированием
Старый 14.05.2013, 11:28   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

вы пишете запрос, который должен ДОБАВИТЬ записи в таблицу Gurnal !
Вы это понимаете, надеюсь?..

Если да, тогда Вы должны определиться, по какому событию нужно производить данную операцию (добавление).
Это зависит от ваших условий: это может быть, например, назначено на определённую кнопку (TButton) на форме (помещаете кнопку, на клик назначете событие, где вы выполняете ADOQwueri.ExecSQL;

Как Вам уже неоднократно сказали, для запросов, которые ИЗМЕНЯЮТ данные (а так же удаляют или добавляют) делать Active - НЕЛЬЗЯ!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.05.2013, 13:01   #7
pakusya
Пользователь
 
Регистрация: 17.10.2008
Сообщений: 23
По умолчанию

Ну по идее мне надо чтобы данные добавлялись (Например я добавляю данные нового сотрудника, сохраняю и выхожу из формы редактирования, эти данные должны сразу отобразится в первой форме в таблице, а потом если вдруг мне надо будет отредактировать эти данные, я выделяю строку в таблице и нажимаю на кнопку редактировать или двойной клик по строке и должна открыться форма редактирования с заполненными полями) вот чего я добиваюсь. Получается данные в первой таблице не редактируются, а просто отображаются из таблиц Access. Но эти данные я не могу отобразить в этой таблице об этом я и спрашиваю как их отобразить?
pakusya вне форума Ответить с цитированием
Старый 14.05.2013, 13:25   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Но эти данные я не могу отобразить в этой таблице об этом я и спрашиваю как их отобразить?
приведённый вами код добавления данных (кстати, не уверен, что он корректен) в таблицу никакого отношения к ОТОБРАЖЕНИЮ данных не имеет.

Вы напоминаете человека, который пытается бросить монетку в копилку, чтобы увидеть содержимое копилки! Вам не кажется это странным?!
Для отображения данных используйте запрос вида
SELECT <нужные_поля> from <НУЖНЫЕ_ТАБЛИЦЫ> where <условия отбора данных>
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как восстановить связь программы с сервером Sql 2005 Studentka123 Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 3 10.04.2012 22:13
[SQL] Связь нескольких таблиц Never74 БД в Delphi 5 20.01.2012 17:27
Связь с SQL Maksimuz БД в Delphi 1 15.12.2010 21:50
SQL - связь между таблицами. Сергей089 Microsoft Office Access 1 05.10.2010 11:49
Связь таблиц в SQL через Delphi Edelweiss Помощь студентам 1 09.11.2009 12:44