powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос на добавление записей...
14 сообщений из 14, страница 1 из 1
Запрос на добавление записей...
    #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
Запрос на добавление записей...
    #32519176
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Возможно, при присоединении файла Экселя некоторые поля были восприняты Аксессом как поля "не того" типа. Это легко проверить, открыв в конструкторе присоединенную таблицу.
...
Рейтинг: 0 / 0
Запрос на добавление записей...
    #32519188
denter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуй Владимир Саныч! (я на ты, тк это пожелание написанно у тебя в примечание)
Я уж боялся что сегодня ты выходной :))

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

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

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

Если поле X текстовое, а поле Y числовое, то предлагаю в запросе вместо X=Y писать Val(X)=Y. Правда, запрос при этом станет открываться только в режиме строки SQL, а не графического конструктора, но это не страшно.
...
Рейтинг: 0 / 0
Запрос на добавление записей...
    #32519200
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 denter
А поля Id в таблицах Companyes ,Regions ,Products определены как счетчики?
...
Рейтинг: 0 / 0
Запрос на добавление записей...
    #32519208
denter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, как счетчики!
...
Рейтинг: 0 / 0
Запрос на добавление записей...
    #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
Запрос на добавление записей...
    #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
Запрос на добавление записей...
    #32519233
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А в 2) вроде скобок недостает?
...
Рейтинг: 0 / 0
Запрос на добавление записей...
    #32519245
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в 2) вроде скобок недостает?
Непонял?
...
Рейтинг: 0 / 0
Запрос на добавление записей...
    #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
Запрос на добавление записей...
    #32519255
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ох уж этот Аксесс ... :)
...
Рейтинг: 0 / 0
Запрос на добавление записей...
    #32520782
denter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 (c)VIG
2 Виктор Саныч

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


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