Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как загрузить Exel таблицу в таблицу Access c последующим обновлением таблицы Access
 
 автор: Edward   (23.12.2007 в 08:20)   личное сообщение
16 Кб.
 
 

Нужно загружать в таблицу Access данные из Excel таблицы в которой идет первой строкой наименование склада а в следующих строках номенклатура товаров ( остатков) на нем
Нужно сделать что бы "поле" наименование склада прикреплялось к каждой строке номенклатуры товара, причем разумеется только к номенклатуре товара который находится на данном складе.
Для того что бы делать в отчете группировку по полю склад, для вывода остатков товара на каждом складе, а склодов много
Версия Access 2003

  Ответить  
 
 автор: osmor   (23.12.2007 в 11:20)   личное сообщение
 
 

перед импортом программно через OLE преобразутей Excel файл к виду "плоской" таблицы т.е.

Склад         Номенклатура     ед.   Начальный остаток ....................

только потом импортируйте.

  Ответить  
 
 автор: Edward   (23.12.2007 в 21:16)   личное сообщение
 
 

Так в этом и заключался мой вопрос, как это сделать !!!!
Как преобразовать Exel файл к такому виду. К сожалению я кодом не владею.
Можно увидеть код такой программы?

И еще возникла проблема. Есть две таблицы Accеss. В них есть одно и то же поле "наименование товара" . Беда в том, что я не могу построить отношение один ко многим, так как в "большой таблице" (около 11000 записей) все таки не достает каких то записей, которые есть в малой, о чем сообщает Access при попытке построения такой связи . Нужно найти записи, которые есть в малой таблице и которых нет в большой.
Если бы с справочнике номенклатуры не было бы задвоенных записей, можно было бы использовать его для построения связи один ко многим, а так приходится создавать искуственный эталонный файл номенклатуры товара где нет повторений, но зато его теперь нужно искуственно пополнять записями из файлов инвентаризации товаров на складах иначе могут выпасть из отчета новые товары.
Помогите пожалуйста.

  Ответить  
 
 автор: час   (24.12.2007 в 09:22)   личное сообщение
 
 

А названия складов - все начинаются с буквы -Х-,
Я имею ввиду что .s программе можно было сказать если Х тогда это склад иначе - номенклатура...
и если можно выложите не картинку, а живой листок прайса.

  Ответить  
 
 автор: Edward   (24.12.2007 в 22:40)   личное сообщение
 
 

Нет не все некоторые начинаются на О
Это не прайс а ведомость остатков на складах .
цвет строки где склад отличается от остальных
первая строка склад потом идут товары
потом строка склад потом опять идут товары и так 14 раз.
Я решил проблему если выгружвть один склад , потом другой,
но тогда нужно делать 14 выгрузок из 1С и всю цепочку до получения отчета выполнять 14 раз.
Хотелось бы обходится одной выгрузкой.

  Ответить  
 
 автор: osmor   (24.12.2007 в 10:53)   личное сообщение
 
 

ПО Excel
создаете Объект Excel (см. CreateObject)
Открываете в нем нужный файл и лист и анализируете его перенося данные на новый лист. Определять что у вас в даннй ячейке склад а не товар можно либо по цвету ячейки либо по тому что она объединенная (см. методы и свойства Excel в справке по программированию Excel)

по вопросу таблиц
создавте мастером построения запросов "запрос без подчичненнных" посмотрите как он устроен

  Ответить  
 
 автор: Edward   (24.12.2007 в 22:54)   личное сообщение
 
 

Да я тоже думал по поводу таблиц что этим воспользуюсь, но у меня случай когда, в малой таблице могут быть записи которых нет в главной, и построить отношение между таблицами один ко многим нельзя.
Я уже с этим разобрался. Нужно сделать внешнюю правую связь, тогда получается выбрать те записи которые есть в подчиненной таблице, но которых нет в основной.
Где смотреть? и самое главное когда, у меня на сон времени не остается, новая работа в другом конце города, приезжаю домой в 21 час , а в 6 утра нужно вставать что бы не опоздать на работу.
Если вам жалко написать , так и скажите буду просить помощи в другом месте.
У меня цейтнот, мне нужен кусок кода который можно будет вставить а процедуру Do cmd
Я потом разберусь обязательно. Честное слово !!!

  Ответить  
 
 автор: час   (25.12.2007 в 12:07)   личное сообщение
 
 

и если можно выложите не картинку, а живой кусок-листок прайса

  Ответить  
 
 автор: час   (25.12.2007 в 12:56)   личное сообщение
 
 

сделайте импорт excel таблицы в access
правой кнопкой мыши, где обычно лежат таблицы в access, щёлк,
импорт-указать файл и вот уже у вас таблица внутри access базы,
затем с этой таблицой делаем что хотим
Можно создать запрос на создание таблицы, и выбрав нужное и задав условия
создать новую таблицу на основе excelевской.
вы бы прислали кусочек своей excel книги.

  Ответить  
 
 автор: час   (25.12.2007 в 13:01)   личное сообщение
 
 

вот функция импорта
Function ImportExelFile(MyPatch, novoeIMYA)
'Где MyPatch = "C:\Temp\MyExelFile.xls" полное имя файла
'novoeIMYA-имя будущей таблы
On Error Resume Next ' Выключение обработчика ошибок.
    DoCmd.DeleteObject acTable, novoeIMYA
    Err = 0 ' Очистка кода ошибки.

DoCmd.TransferSpreadsheet acImport, 8, novoeIMYA, MyPatch, True, ""
End Function

  Ответить  
 
 автор: час   (25.12.2007 в 13:10)   личное сообщение
7 Кб.
 
 

Вощем получится вот так

  Ответить  
 
 автор: час   (25.12.2007 в 13:31)   личное сообщение
17 Кб.
 
 

потом

  Ответить  
 
 автор: час   (25.12.2007 в 13:37)   личное сообщение
15 Кб.
 
 

потом так
ну а дальше разберётеся.....

  Ответить  
 
 автор: час   (25.12.2007 в 13:41)   личное сообщение
15 Кб.
 
 

И в конце концов
готова прога........

  Ответить  
 
 автор: Edward   (25.12.2007 в 23:28)   личное сообщение
33 Кб.
 
 

К сожалению функция импорта не работает
Выдает сообщение, что процедура не является макросом, не является функциией и т..


Я сделал кнопку и поместил этот код программы туда.
и сразу полезли синтактические ошибки.
В частности ругалась на знак : После С
С:\jurnal\akt.xls
имя таблицы которая должна получится в результате вед_ост1

Я попробовал загружать макросом, все получилось, в макросе прописываю полный путь и таблицу
и все загружается.
Что значит коментарий , это просто разьяснение или нужно в программе менять Mypach на полный путь C:\jurnal\import\akt.xls
Но все равно ругается на оба варианта
Вы можете написать код, который можно вставить в процедуру нажатия кнопки?

А вот ваша процедура модификации таблицы "Лист" работала пока была таблица "лист 2", как только я её стер стала выходить ошибка. Но ведь вопрос и заключается в том, что бы из таблицы вида лист получить лист2
А не делать её вручную что бы потом работала Ваша программа, только я уже тогда не понимаю для чего. Если файл лист 2 уже сделать вручную. Понимаете там ведь еще куча файлов, прайсы, расшифровка номенклатуры, фасовка в коробки и короба, я все сделал отчет нормальный в разрезе всего что нужно руководству.
Но беда в том что я это сделал исходя из того что я выгружал 1 склад, тогда посредством связи со справочником складов я запросом делаю таблицу состоящую из одного поля склад и потом запросом на модификацию добавляю это поле к таблице.
А когда складов много этот фокус не проходит
Вот опять через 3 часа вставать на работу, а я не в чем не разобрался.
Я вам вышлю файл, это кусок из того что будет . Вы можете
написать с обьяснениями, как и что делать подробно что бы из этого файла akt.xls
Который будет находится физически в каталоге C:\jurnal\import\akt.xls
получить таблицу " вед_ост1" в которой наименование склада будет в каждой строке номенклатуры соответствующего склада.
Очень прошу помочь.
Только обьясните что на каком этапе получается.
А то не понятно откуда взялась таблица Лист2

  Ответить  
 
 автор: час   (26.12.2007 в 07:34)   личное сообщение
 
 

Вы шутник?
Или правда ничё не понимаете?
Я же всё попорядку выложил - как всё создавалось и что в итоге получилось.
Лист2 создаётся ручками таким какой он нужен - это может быть и вед_ост1.
этапы в хронологическом порядке лежат на форуме.(сверху вниз)
В функцию передаётся значение "C:\jurnal\import\akt.xls" - переменной "Mypach"

  Ответить  
 
 автор: час   (26.12.2007 в 08:02)   личное сообщение
20 Кб.
 
 

Ну вот тода поподробнее.

  Ответить  
 
 автор: час   (26.12.2007 в 08:31)   личное сообщение
24 Кб.
 
 


К сожалению функция импорта не работает 

надо вот так...

  Ответить  
 
 автор: Edward   (26.12.2007 в 21:28)   личное сообщение
28 Кб.
 
 

Спасибо большое за помощь, остался один нюанс, когда я выгрузил из 1С реальную выборку то при выполнении последнего пункта выдается такая ошибка.
поля F4 F7 становятся числовыми, 3 знака отбрасываются, остается в ячейках только целые числа
непонятно почему возникает такая ошибка .
Поменял в настройках системы, языки и стандарты, запятую на точку( как разделитель целой и дробной части числа ), но ошибка осталась

  Ответить  
 
 автор: час   (26.12.2007 в 22:45)   личное сообщение
 
 

Я извиняюся за ламерство , но лучше не картинку, а живое что там

выгрузилось из 1С.
Там в 1С всегда после запятой три ноля какой.....эт придумал.

если не трудно киньте кусочек выгрузки.

  Ответить  
 
 автор: Edward   (05.01.2008 в 19:50)   личное сообщение
 
 

Поздравляю с прошедшим Новым Годом, с Наступающим Рождеством !!!
Желаю всег самого доброго и светлого в наступившем году !!!
Спасибо за помощь. Я сам разобрался, просто поля начинающиеся с цифр Ассеss определял как числовые, а там не все было заполнено, вот и получалось что числовое поле и пустое. Непорядок !!!!
Вот и Access возмущалси
Подскажи а есть способ что бы выгружать отчет Access в файл Excel? что бы сохранялись не только данные, но и все оформление ???

  Ответить  
 
 автор: akkorn   (05.01.2008 в 20:00)   личное сообщение
 
 

http://hiprog.com/forum/read.php?id_forum=1&id_theme=2795&page=1

  Ответить  
 
 автор: Edward   (05.01.2008 в 20:49)   личное сообщение
 
 

И еще вопрос, как можно воспользоваться календарем в ворме что бы в поле не забивать данные а заносить их из календаря.
То же самое относится к запросам, когда выбираешь период например с 01.01.01по 02.02.02
это возможно в запросе ?

  Ответить  
 
 автор: час   (06.01.2008 в 12:19)   личное сообщение
 
 

Не совсем в запросе...
На форме два поля с датами
заносишь даты и жмёшь кн. ОК
Запускается запрос и в условиях его отбора, указаны эти поля из етой формы...

  Ответить  
 
 автор: час   (06.01.2008 в 12:21)   личное сообщение
28 Кб.
 
 

Пользуйся календарём...
Хотя многие говорят - чем мышкой тыкать - я быстрее наберу на клаве- как тока фокус окажется в нужном поле...

  Ответить  
 
 автор: Edward   (08.01.2008 в 09:21)   личное сообщение
 
 

Это календарь еще с 97 Ассess ?
У меня база ругалась что нужен конвертор 2000, у меня 2003 стоит
открылся с горем попалам , но там ничего не работает, на кнопки нажимаю но ничего не меняется.

У меня сейчас более важная задача появилась, очень срочно, нужно что бы при вводе данных
в некоторые поля новой записи переносились значения из других полей предыдущей записи.
Так например в поле (начальный пробег) значение поля(конечный пробег) предыдущей записи
и в поле (остаток на начало дня) значение поля (остаток на конец дня) предыдущей записи.
Можно даже сделать , что бы вся запись целиком копировалась в новую, это не страшно
пользователь потом подредактирует необходимое.
В строке есть поле дата, можно сделать месяц и число, но все равно выходные дни, праздники, число дней в месяце, то суббота переносится на понедельник или еще что, поэтому решил не привязываться к дате, а просто копировать данные с предыдущей записи, она и будет предыдущем рабочим днем данные которой как раз и нужно переносить в новую строку
Очень надеюсь, что это возможно сделать.

  Ответить  
 
 автор: час   (08.01.2008 в 10:16)   личное сообщение
21 Кб.
 
 

попробуй другой...
Запускай Fo_Demo (open me) и пробуй

  Ответить  
 
 автор: Edward   (08.01.2008 в 21:28)   личное сообщение
 
 

А как все таки на счет копирования данных из последней записи в новую при вводе данных ?

  Ответить  
 
 автор: час   (09.01.2008 в 16:25)   личное сообщение
24 Кб.
 
 

Извиняюся просмотрел вопрос.
вот посмотри подойдёт?

  Ответить  
 
 автор: час   (09.01.2008 в 16:32)   личное сообщение
 
 

ты ба новую ветку начал , а то тута мы с тобой понаписали ......................

  Ответить  
 
 автор: Edward   (12.01.2008 в 22:23)   личное сообщение
 
 

Хорошо начну, спасибо за поддержку.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList