Cоздание папок из полей таблицы c помощью VBS

Программирование на Active Server Pages и VBScript.
NecroTYN
Начинающий
Начинающий
 
Сообщения: 1
Зарегистрирован: 11.07.2011 (Пн) 18:47

Cоздание папок из полей таблицы c помощью VBS

Сообщение NecroTYN » 11.07.2011 (Пн) 19:11

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

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

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

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

Все товары и услуги находятся в таблице tblOrdersProducts и делятся на категории - товары и услуги (поле ProductsCategoryCalc), была сделана выборка, чтобы на категорию "УСЛУГИ" папки не создавались...

Код: Выделить всё
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 'очищаем переменную


При запуске скрипта вылетает окно ошибки:

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

---------------------------
ОК
---------------------------
Подскажите пожалуйста, как с этим бороться ???

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

Вернуться в ASP и VBScript

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20

    TopList