imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 15.12.2008, 17:20     # 1
7enych
Newbie
 
Регистрация: 15.12.2008
Сообщения: 11

7enych Нуль без палочки
Access front-end + Postgres back-end... kak?

Мне надо сделать не большую программу (клиенты,продукты, заказы и тд.) и она должна быть написанна в Access + Postgres база данных. В Access все должно быть в VBA (без макро). С VBA дел не имел, но формы,кнопки разные создавать вроде научился, БД настроил, но есть еще пара вопросов:

1.Как соединиться с Postgres используя *.adp пройект? (могу соединиться через *.mdp проект, но при создании adp не вижу сервера в списке)

2.Можно ли получить созданные представления (views) из postgres в Accesse? (при создании *.mdp проекта вижу только таблицы)

P.S. Пользую Access 2003, Postgres 8.3 и все на WinXP SP2. инет облазил толком ничего не нашел.

Заранее спасибо.
7enych вне форума  
Старый 16.12.2008, 11:41     # 2
EvroStandart
Full Member
 
Аватар для EvroStandart
 
Регистрация: 20.01.2004
Адрес: Таллинн
Пол: Male
Сообщения: 623

EvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собой
ODBC использовал?
EvroStandart вне форума  
Старый 16.12.2008, 15:56     # 3
7enych
Newbie
 
Регистрация: 15.12.2008
Сообщения: 11

7enych Нуль без палочки
Да, использовал. Вроде бы соединиться через .mdp проект и получить "views" тоже удалось, наверно тогда в .mdp и продолжу... Только опять возник вопрос, как сделать "views" прямыми (direct), что бы при обновлении в таблице они автоматически обновляли свои данные тоже, а то данные в таблице меняю, а "view" старые показывает. И еще... как получить данные из таблиц в VBA? я использую Dlookup() для одного значения(правильно?), а если надо получить коллекцию данных из таблицы? И как по ней перемещатся? подскажите кто знает.
7enych вне форума  
Старый 17.12.2008, 15:08     # 4
EvroStandart
Full Member
 
Аватар для EvroStandart
 
Регистрация: 20.01.2004
Адрес: Таллинн
Пол: Male
Сообщения: 623

EvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собой
ODBC должен вьюшки обновлять. Я правда только оракл пробовал.

Из VBA нужно делать Connection и Recordset.
http://www.everythingaccess.com/tuto...ith-Recordsets


ЗЫ.
.mdp - это вообще что? Може всётаки mdb?

Последний раз редактировалось EvroStandart; 17.12.2008 в 15:22.
EvroStandart вне форума  
Старый 17.12.2008, 15:48     # 5
7enych
Newbie
 
Регистрация: 15.12.2008
Сообщения: 11

7enych Нуль без палочки
Извеняюсь за ошибку зто .mdb
С "view" разобрался... обновляются. Теперь у меня вопрос по SQL: мне надо обновлять "view" который содержит данные из 3 таблиц (клиент,адрес,страна). Все они связаны. Я создал правило (rule) для обновления, но при обновлинии инфо о клиенте мне надо добавить адрес в таблицу "адрес" только в том случае если он не существует (в таблице), а если существует то просто обновить ссылку на адрес в таблице "клиент". можно ли такое это реализовать?
7enych вне форума  
Старый 17.12.2008, 15:57     # 6
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Если вьюха редактируема (editable) то можно просто в нее делать вставку, он сам разберется с ключами и внешними связями, которые прописаны. Ну если нет -то нет, реализовывайте логику в приложении, вставляйте что надо в нужные таблицы.
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 17.12.2008, 16:22     # 7
7enych
Newbie
 
Регистрация: 15.12.2008
Сообщения: 11

7enych Нуль без палочки
Она редактируема и я могу обновлять имя, телефон клиента, но насколко я знаю она не может проверять существует ли вставляемое значение в таблице или нет. И вот мне надо что бы она перед тем как вставить сделала проверку. Как я полагаю нужен INSERT с условием.

вот "view" и правило на UPDATE :

Код:
CREATE OR REPLACE VIEW view_client AS 
 SELECT client.id_cli, client.name, client.phone, addresse.id_adr, adresse.str_adr, adresse.postc_adr, adresse.loc_adr, country.name_countr
   FROM client
NATURAL JOIN addresse
NATURAL JOIN country;

CREATE OR REPLACE RULE "_UPDATE" AS
    ON UPDATE TO view_client DO INSTEAD 
    //вот здесь проверка если новый адрес, добавить и вернуть ID, если уже такой имеется просто вернуть ID 
    UPDATE client SET id_cli = new.id_cli, name = new.name, phone = new.phone, id_adr = *тут id_adr полученный из предыдущего запроса*
  WHERE client.id_cli = new.id_cli;
просто хотелось бы спрятать все проверки в базу данных а не коде реализовывать.

Последний раз редактировалось 7enych; 17.12.2008 в 16:31.
7enych вне форума  
Старый 17.12.2008, 16:42     # 8
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Цитата:
Сообщение от 7enych Посмотреть сообщение
просто хотелось бы спрятать все проверки в базу данных а не коде реализовывать.
Очень правильное решение, бесспорно.


Цитата:
Сообщение от 7enych Посмотреть сообщение
вот "view" и правило на UPDATE :
"правило на UPDATE" это триггер чтоли?

Ну и если так, то действительно, там где у Вас комментарий проверить и вернуть новый ИД, там и сделайте проверку. Вроде все стройно выходит. Вопрос-то в чём именно?

А, и еще, там в триггере, вы используете просто new.*, а если за раз будет апдейтится сразу 100 строк? Вы не хотите разве все их обработать, только одну?
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 17.12.2008, 21:49     # 9
7enych
Newbie
 
Регистрация: 15.12.2008
Сообщения: 11

7enych Нуль без палочки
Цитата:
"правило на UPDATE" это триггер чтоли?
это "rule", оно относится к "view".

Цитата:
Вопрос-то в чём именно?
Вопрос такой: как выглядит такой запрос? Так как у меня условие либо делать INSERT(если адрес новый) либо SELECT(если адрес уже существует в таблице), а насколько я знаю IF в запрос не поставишь.


Цитата:
А, и еще, там в триггере, вы используете просто new.*, а если за раз будет апдейтится сразу 100 строк? Вы не хотите разве все их обработать, только одну?
Да вроде проблем не должно быть, по крайней мере запрос "UPDATE view_client SET phone='1234567';" проходит и апдейтит все поля всех клиентов сразу.
7enych вне форума  
Старый 18.12.2008, 06:03     # 10
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Цитата:
Сообщение от 7enych Посмотреть сообщение
это "rule", оно относится к "view".
http://msdn.microsoft.com/ru-ru/library/ms188064.aspx ? Так оно же вроде только для ограничений данных столбца написано...


Цитата:
Сообщение от 7enych Посмотреть сообщение
Вопрос такой: как выглядит такой запрос? Так как у меня условие либо делать INSERT(если адрес новый) либо SELECT(если адрес уже существует в таблице), а насколько я знаю IF в запрос не поставишь.
Сделайте 2 запроса - первым проверьте, выберите ID, а вторым, если не выбралось, вставьте.

Цитата:
Сообщение от 7enych Посмотреть сообщение
Да вроде проблем не должно быть, по крайней мере запрос "UPDATE view_client SET phone='1234567';" проходит и апдейтит все поля всех клиентов сразу.
Да что он все апдейтит это понятно, запрос из триггера:
Код:
UPDATE client SET id_cli = new.id_cli, name = new.name, phone =...
отрабатывает единожда или для каждой строки? Вот в чем вопрос-то.
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 13:08.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.