Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос на добавление записей... / 14 сообщений из 14, страница 1 из 1
15.05.2004, 13:21
    #32519138
denter
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление записей...
Здравствуйте!

Прошу помочь советом, тк не хватает пока опыта в работе с реляционной БД...

Есть БД предприятия состоящая из таблиц:
Companyes, Regions, Products, Main

Поля таблиц:
Companyes - ID, Company
Regions - ID, Region
Products - ID, Product

Main - ID_reg, ID_prod, Date, Rates, ID_comp,

Main связанна с Company по ID_comp, соответственно с Region по ID_reg и тд...

Данные мне присылают извне в Ексель-файлах со следующими полями:
Region, Product, Date, Rates, Company
Тк обьем данных огромный, от 1000 до 5000 записей, то я столкнулся с необходимостью быстрого импорта их из екселя. Обычный импорт ч/з "файл" -"внешние данные" и тд не проходит..

Я создал связь с внешним Ексель-файлом, куда я копирую приходящие данные(поля те же). Далее попытался осуществить Запрос на добавление записей из связаной таблицы Ексель (Import) в таблицу БД Main.

В запросе я связал поля Region, Product, Company из Import, с полями таблиц Companyes, Regions, Products cледующим образом: - Import LEFT JOIN Regions ON Import.Region = Regions.Region - и тд...

В результате я без проблем получаю добавление записей в Main, по полям Date и Rates, а вот по остальным полям я получаю значение NULL и "ошибку преобразования типа"...
В F1 я не нашел толкового обьяснения...

Вопрос: каким образом я могу осуществить импорт из екселя, чтобы названия полей заменялись на ID из Companyes, Regions, Products...

Надеюсь что я доступно обьяснил суть своей проблемы...
Заранее благодарен.
...
Рейтинг: 0 / 0
15.05.2004, 15:04
    #32519176
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление записей...
Возможно, при присоединении файла Экселя некоторые поля были восприняты Аксессом как поля "не того" типа. Это легко проверить, открыв в конструкторе присоединенную таблицу.
...
Рейтинг: 0 / 0
15.05.2004, 15:22
    #32519188
denter
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление записей...
Здравствуй Владимир Саныч! (я на ты, тк это пожелание написанно у тебя в примечание)
Я уж боялся что сегодня ты выходной :))

По делу:
Так оно и есть - в присоед. Экселе эти поля как текстовые, а Айдишники у меня числовые.....

Раньше я использовал Аксесс как Ворд :(, те почти все данные хранил в текстовом формате и в одной таблице.. И осуществлял примитивный импорт экселя в эту таблицу. И все было ок, пока...
Пока кол-во записей не достигло 80 000! И любой мой запрос просто умирал или нещадно врал!
Пока до меня не дошло что базу нужно проанализировать и разделить.
После ее разделения и вроде правильного создания индексов и ключей(делаю все по книжке Роджера Дженнингса) я столкнулся с проблемой внесения данных в таблицу Main!!!
Уже пару дней я никак не могу дойти каким образом в запросе на добавление указать какие типы данных и куда должны добавляться????

Каким образом заносяться данные в основную таблицу?????
С Аксессом недавно, поэтому прошу прощения за дилетанский подход к делу
Если есть возможность подскажите!
...
Рейтинг: 0 / 0
15.05.2004, 15:29
    #32519193
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление записей...
Я и есть выходной. :^)

Если поле X текстовое, а поле Y числовое, то предлагаю в запросе вместо X=Y писать Val(X)=Y. Правда, запрос при этом станет открываться только в режиме строки SQL, а не графического конструктора, но это не страшно.
...
Рейтинг: 0 / 0
15.05.2004, 15:36
    #32519200
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление записей...
2 denter
А поля Id в таблицах Companyes ,Regions ,Products определены как счетчики?
...
Рейтинг: 0 / 0
15.05.2004, 15:49
    #32519208
denter
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление записей...
Да, как счетчики!
...
Рейтинг: 0 / 0
15.05.2004, 15:57
    #32519211
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление записей...
Делаешь так ( при условии что Id во всех трех таблицах -счетчики)
1)
Код: plaintext
1.
2.
Insert into Products 
select imports.product
from imports left join Products on Products.product=imports.product
аналогичные запросы пишешь для Companyes и для Regions
2)
Код: plaintext
1.
2.
3.
4.
5.
Insert into main
select regions.id,products.id,imports.date,imports.rates,companies.id
from imports inner join regions on imports.region=regions.region
inner join products on imports.product=products.product
inner join companies on imports.company=companies.company
...
Рейтинг: 0 / 0
15.05.2004, 16:55
    #32519232
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление записей...
Sorry, в 1) конечно же должно быть
Код: plaintext
1.
2.
3.
Insert into Products (Product)
select imports.product 
from imports left join Products on Products.product=imports.product
where Products.product is null
...
Рейтинг: 0 / 0
15.05.2004, 16:55
    #32519233
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление записей...
А в 2) вроде скобок недостает?
...
Рейтинг: 0 / 0
15.05.2004, 17:25
    #32519245
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление записей...
А в 2) вроде скобок недостает?
Непонял?
...
Рейтинг: 0 / 0
15.05.2004, 17:36
    #32519248
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление записей...
Insert into main
select regions.id,products.id,imports.date,imports.rates,companies.id
from ((imports inner join regions on imports.region=regions.region)
inner join products on imports.product=products.product)
inner join companies on imports.company=companies.company

SQL сервер без этих скобок поймет, а Аксесс нет.
...
Рейтинг: 0 / 0
15.05.2004, 17:51
    #32519255
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление записей...
Ох уж этот Аксесс ... :)
...
Рейтинг: 0 / 0
17.05.2004, 16:30
    #32520782
denter
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление записей...
2 (c)VIG
2 Виктор Саныч

Спасибо!!
Все получилось!
...
Рейтинг: 0 / 0
17.05.2004, 16:46
    #32520818
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление записей...
Сам ты Виктор.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос на добавление записей... / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]