Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > автоматическое Создание папок из имен полей ....


Автор: NecroTYN 29.6.2011, 22:36
Есть база данных включающая в себя следующие таблицы: ... Заказы,клиенты,продукты....

...А интерресует меня вот какой вопрос: Мне нужно чтобы при создании ЗАКАЗА автоматически создавалась группа папок в определенном месте диска (D:\Documents\Заказы\...), а имена этих папок создавались бы из определенных полей таблиц. Например:
после создания заказа должны появится папки по указанному пути с таким вот именем:
D:\Documents\Заказы\ул.Красная\Сергеев\
где ул.Красная это адрес клиента, Сергеев это Фамилия клиента,
 В папке "Сергеев" в свою очередь создаются папки (Стойка компьютерная,Стол письменный,Шкаф купе), имена которых берутся из подтаблицы "продукты" (в которой мы собственно и составляем заказ), каждая из которых   содержит в себе еще 4 папки с неизменными названиями(Замер,Модель,Раскрой,Эскизы)....

С нетерпением жду ответа   

Скрин прилагаю http://s1.ipicture.ru/]user posted image

Автор: Akina 30.6.2011, 08:27
Цитата(NecroTYN @  29.6.2011,  23:36 Найти цитируемый пост)
Мне нужно чтобы при создании ЗАКАЗА автоматически создавалась группа папок в определенном месте диска (D:\Documents\Заказы\...), а имена этих папок создавались бы из определенных полей таблиц. 

Ну и делай - какие проблемы? Получи программно список полей из TableDef, и вперёд...

Автор: NecroTYN 30.6.2011, 17:13
Цитата(Akina @  30.6.2011,  08:27 Найти цитируемый пост)
Ну и делай - какие проблемы? Получи программно список полей из TableDef, и вперёд...


 smile 

...извините, но я не являюсь програмистом, потому и прошу помощи у знающих...

Вообще то, речь идет не о простой базе данных, а о программе работающей с БД Access. 
 http://www.simple-soft.ru/ClientsCount.htm довольно таки гибкая в настройках - настраиваются все поля таблиц

Вот что мне ответили в техподдержке

Цитата

Вам надо написать файл-скрипт .VBS, который будет создавать папки в файловой системе, основываясь на переданные в него параметры.
Подробности - типовой вопрос №14
Далее нужно задать триггер на добавление на таблицу "Заказы", но в качестве команды указать не SQL-инструкцию, а запуск данного файла.



может поможете ????

Автор: Akina 30.6.2011, 17:17
Вы правда полагаете, что я буду допиливать коммерческий софт?

Заодно спросите, как они себе представляют триггеры на Аксессовской базе... и нам расскажите - чертовски интересно.

Автор: NecroTYN 30.6.2011, 20:29
Цитата(Akina @  30.6.2011,  17:17 Найти цитируемый пост)
Вы правда полагаете, что я буду допиливать коммерческий софт?


Я не полагаю что ВЫ будете ДОПИЛИВАТЬ, я просто прошу помощи в создании этого самого скрипта о котором мне говорят

порылся в гугле, нашел вот это : 

Цитата

Set FSO = CreateObject("Scripting.FileSystemObject")

 If Not FSO.FolderExists("C:\Program Files\Symantec AntiVirus") Then 
 FSO.CreateFolder("C:\Program Files\Symantec AntiVirus")
 End If


как я понимаю это для проверки и создания папок с конкретным именем....
В таком случае меня интересует вот какой вопрос: какой командой создавать папку из имен полей нескольких таблиц ???


Цитата(Akina @  30.6.2011,  17:17 Найти цитируемый пост)
Заодно спросите, как они себе представляют триггеры на Аксессовской базе... и нам расскажите - чертовски интересно.


http://img6.imageshack.us/slideshow/webplayer.php?id=65822889.jpg






Автор: Akina 1.7.2011, 12:29
Цитата(NecroTYN @  30.6.2011,  21:29 Найти цитируемый пост)
 какой командой создавать папку из имен полей нескольких таблиц ???

Сначала надо эти имена получить. Это делается, как я сказал выше, через TableDef. Пример найдёте во встроенной справке или на МСДН по указанному термину.
А затем просто укажете содержащую добытое имя переменную в приведённом Вами коде.

Автор: NecroTYN 1.7.2011, 19:28
Цитата(Akina @  1.7.2011,  12:29 Найти цитируемый пост)
Сначала надо эти имена получить.


имя 1ой папки-берется из таблицы qdfOrders - Address
  имя 2ой папки-берется из таблицы qdfMain - Client
  имя 3ей папки-берется из таблицы tblOrdersProducts - Product

"третьих" папок должно создаваться столько, сколько заказано продуктов, за исключением услуг(которые кстати тоже находятся в таблице tblOrdersProducts), в каждой из них создаются следующие папки: 

Замер
Модель
Раскрой
Эскизы
Документы


Цитата

А затем просто укажете содержащую добытое имя переменную в приведённом Вами коде.

 smile 
...а вот из этого я ничего не понял.. smile 



Автор: NecroTYN 4.7.2011, 13:15
Akina Доброго дня !!!

по поводу вышеизложенного вопроса создали вот такой вот код

Цитата

MakeDir.VBS qdfOrders.Address qdfMain.Client tblOrdersProducts.Product


MakeDir.VBS:

Цитата

Код:
Set FSO = CreateObject("Scripting.FileSystemObject")

strPath="C:\Documents"
If Not FSO.FolderExists(strPath) Then FSO.CreateFolder(strPath)
strPath=strPath & "\Заказы"
If Not FSO.FolderExists(strPath) Then FSO.CreateFolder(strPath)
strPath=strPath &"\"& WScript.Arguments(0)
If Not FSO.FolderExists(strPath) Then FSO.CreateFolder(strPath)
strPath=strPath &"\"& WScript.Arguments(1)
If Not FSO.FolderExists(strPath) Then FSO.CreateFolder(strPath)
strPath=strPath &"\"& WScript.Arguments(2)
If Not FSO.FolderExists(strPath) Then FSO.CreateFolder(strPath)


работает вот с таким результатом может подскажете что не так ????

Автор: Akina 4.7.2011, 14:22
Ну и всё верно - получено ровно то, что написано кодом. Какие проблемы?
Если не понимаете, почему получается именно так - возьмите лист бумаги и пройдите по всем строкам своей программы, записывая, как по мере её выполнения изменяется содержимое переменной strPath. А заодно поймёте, что надо изменить...

Автор: Данкинг 4.7.2011, 14:23
Цитата(NecroTYN @  4.7.2011,  15:13 Найти цитируемый пост)
вот 

Так правильно: strPath наращивается и в результате создаётся такое вот дерево каталогов. smile 

Автор: NecroTYN 4.7.2011, 14:37
Цитата(Akina @  4.7.2011,  14:22 Найти цитируемый пост)
А заодно поймёте, что надо изменить...


да в том то идело, что Я не могу всего этого понять, будте добры, подскажите

Автор: Данкинг 4.7.2011, 15:18
Цитата(NecroTYN @  4.7.2011,  15:37 Найти цитируемый пост)
подскажите

Тебе подсказали же:
Цитата(Akina @  4.7.2011,  15:22 Найти цитируемый пост)
 как по мере её выполнения изменяется содержимое переменной strPath

 smile Я думаю, кое-какие операции следует с этой переменной проделывать после создания каждой новой папки. smile 

Автор: NecroTYN 5.7.2011, 09:46
посмотрите пожалуйста это:

Код

Dim sDbPath 'путь к файлу БД
sDbPath = CreateObject("Wscript.Shell").SpecialFolders("MyDocuments") & "\Учет клиентов\DemoDatabase.mdb"

Dim Con 'объект Connection
Set Con = CreateObject("ADODB.Connection") 'создание объекта Connection
Con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sDbPath & ";Persist Security Info=False" 'открываем соединение с базой данных

Dim sSql 'SQL инструкция
sSql = "SELECT o.Address,m.Client,op.Product FROM tblOrdersProducts op,tblOrders o,tblMain m WHERE m.ID=o.ClientID AND o.ID=op.OrderID AND 

op.ID="& Mid(WScript.Arguments(0),2)
Set oRec = Con.Execute(sSql)  'выполняем SQL инструкцию

Dim FSO 'объект FileSystemObject
Set FSO = CreateObject("Scripting.FileSystemObject")

Dim strPath 'путь к папке
strPath="C:\Documents"
If Not FSO.FolderExists(strPath) Then FSO.CreateFolder(strPath)
strPath=strPath & "\Заказы"
If Not FSO.FolderExists(strPath) Then FSO.CreateFolder(strPath)
strPath=strPath &"\"& Replace(oRec.Fields(0).Value,"""","")
If Not FSO.FolderExists(strPath) Then FSO.CreateFolder(strPath)
strPath=strPath &"\"& Replace(oRec.Fields(1).Value,"""","")
If Not FSO.FolderExists(strPath) Then FSO.CreateFolder(strPath)
strPath=strPath &"\"& Replace(oRec.Fields(2).Value,"""","")
If Not FSO.FolderExists(strPath) Then FSO.CreateFolder(strPath)

Con.Close 'закрываем Connection
Set Con = Nothing 'очищаем переменную
http://s2.ipicture.ru/uploads/20110705/RRUzmo4W.jpg

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)