Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Автоматическое создание папок из полей таблицы c помощью VBS

Ответить
Настройки темы
VBS/WSH/JS - [решено] Автоматическое создание папок из полей таблицы c помощью VBS

Пользователь


Сообщения: 56
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здравствуйте Господа программисты!!!

Очень нужна ваша помощь в следующем вопросе:

Есть программа работающая с базой данных Access, включающая в себя следующие таблицы: ... Заказы,клиенты,продукты....

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

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

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

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



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

Отправлено: 19:41, 02-07-2011

 

Пользователь


Сообщения: 56
Благодарности: 0

Профиль | Отправить PM | Цитировать


amel27,
Спасибо, все заработало

Отправлено: 09:10, 06-07-2011 | #41



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 56
Благодарности: 0

Профиль | Отправить PM | Цитировать


ВСЕМ Привет!!!

Цитата amel27:
P.S. критерий разделения услуг/товара в топике не раскрыт »
Раскрываю критерий разделения услуг/товара:
Все товары и услуги находятся в таблице tblOrdersProducts и делятся на категории - товары и услуги (поле ProductsCategoryCalc), так вот, нужно сделать выборку чтобы папки не создавались на категорию "УСЛУГИ"

Отправлено: 20:24, 10-07-2011 | #42


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата NecroTYN:
поле ProductsCategoryCalc »
Нет такого поля в таблице tblOrdersProducts - откройте базу данных в MS Access и убедитесь в этом, а суффикс CALC говорит о том, что это поле (скорее всего) рассчетное. Тип товара есть в tblProducts и я не вижу никаких идентификаторов для связи с tblOrdersProducts кроме наименования товара, но оно не является уникальным со всеми вытекающими последствиями.
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:45, 11-07-2011 | #43


Пользователь


Сообщения: 56
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата amel27:
Нет такого поля в таблице tblOrdersProducts »
Цитата amel27:
а суффикс CALC говорит о том, что это поле (скорее всего) рассчетное »
это то все правильно говорите, я его сам туда назначил из таблицы tblProducts, так не получится ????

Отправлено: 10:19, 11-07-2011 | #44


Пользователь


Сообщения: 56
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата amel27:
Нет такого поля в таблице tblOrdersProducts »
...Ну а если путем перечисления "услуг" -- их всего то 5...

Отправлено: 10:48, 11-07-2011 | #45


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата NecroTYN:
я его сам туда назначил из таблицы tblProducts, так не получится ???? »
Цитата NecroTYN:
а если путем перечисления "услуг" -- их всего то 5... »
да мне в общем-то всё равно - вам решать, можно и по наименованию сравнить... только ни один из этих способов не является идеальным, так что сначала взвесьте все "за" и "против", с расчетом "на перспективу"
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:05, 11-07-2011 | #46


Пользователь


Сообщения: 56
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата amel27:
только ни один из этих способов не является идеальным »
а какой есть идеальный ???

Цитата amel27:
так что сначала взвесьте все "за" и "против", с расчетом "на перспективу" »
...ну а ВЫ что посоветуете ???

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

Последний раз редактировалось NecroTYN, 11-07-2011 в 11:25.


Отправлено: 11:08, 11-07-2011 | #47


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата NecroTYN:
какой есть идеальный ??? »
нормализованный, когда в таблицах стоит ID из справочника (tblProducts), а не имя
Цитата NecroTYN:
а ВЫ что посоветуете ??? »
Ваша база данных, вам и решать...
вариант с именем, имя продукта должно быть уникальным и присутствовать в справочнике:
читать дальше »
Код: Выделить весь код
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 Top 1 p.ProductType FROM tblOrdersProducts op,tblProducts p WHERE op.Product=p.ProductName AND op.ID="& Mid(WScript.Arguments(0),2)
Set oRec = Con.Execute(sSql)  'выполняем SQL инструкцию
If oRec.EOF Then WScript.Quit 'если продукта нет в справочнике, то выход

sType = oRec.Fields(0).Value  'тип товара
If Left(sType,6)="Услуга" Then WScript.Quit 'если Услуга, то выход

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 'очищаем переменную

P.S. Сравнение идет с учетом регистра: "Услуга"<>"УСЛУГА"
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:34, 11-07-2011 | #48


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата NecroTYN:
а какой есть идеальный ??? »
Идеальных не бывает. На практике обычно считается достаточным, если таблицы базы нормализованы в соответствии с нормальной форме Бойса — Кодда.
Цитата amel27:
нормализованный, »
Поставил бы три благодарности, кабы можно было.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:52, 11-07-2011 | #49


Пользователь


Сообщения: 56
Благодарности: 0

Профиль | Отправить PM | Цитировать


---------------------------
Windows Script Host
---------------------------
Сценарий: C:\Program Files (x86)\ClientsCount\makedir.vbs
Строка: 9
Символ: 1
Ошибка: Индекс выходит за пределы допустимого диапазона
Код: 800A0009
Источник: Ошибка выполнения Microsoft VBScript

---------------------------
ОК
---------------------------

Отправлено: 18:32, 11-07-2011 | #50



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Автоматическое создание папок из полей таблицы c помощью VBS

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
MSFT SQL Server - создание таблицы точнее проблемма с созданием таблицы GAROD Программирование и базы данных 4 02-12-2010 00:58
Автозаполнение полей с помощью программы AutoHotkey xexe09 Хочу все знать 1 09-07-2010 07:36
7 / 2008 R2 - Создание структуры папок windows 7 / Touch установка с помощью MDT 2010 pashtil Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista 0 12-02-2010 07:04
Как в проводнике настроить вид папок в виде таблицы ? Cricket Хочу все знать 13 30-04-2006 02:15
Создание таблицы Vadikan Вебмастеру 19 30-10-2004 02:26




 
Переход