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

Компьютерный форум 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 | Цитировать


Изображения
Тип файла: jpg 3.JPG
(15.7 Kb, 13 просмотров)

Вот скрин каталогов, которые создаются при запуске bat

Отправлено: 10:21, 04-07-2011 | #31



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

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


Googler


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

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


Цитата NecroTYN:
сделают за отдельные деньги »
Скорее всего это псевдо-триггер, который реализован не движком базы данных, а кодом программы - поэтому без разработчиков тут и шагу не сделать. Единственный выход - переводить базу на SQL Server и создавать свои триггеры.

Цитата NecroTYN:
скрин каталогов, которые создаются при запуске »
параметры передаются как надо, а вот как вместо имен полей передать их значения - это вопрос уже к разработчикам и не факт что это возможно

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


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


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

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


amel27

Вот что мне ответили на соседнем форуме по поводу нашего кода:


Цитата:
2-е: 100% могу сказать что работает он с таким результатом:
<\Documents\ (0)>
+-<\Documents\Заказы\ (0)>
+-<\Documents\Заказы\qdfOrders.Address\ (0)>
+-<\Documents\Заказы\qdfOrders.Address\qdfMain.Client\ (0)>
+-<\Documents\Заказы\qdfOrders.Address\qdfMain.Client\tblOrdersProducts.Product\ (0)
т.е. делает точно то, что ты ему задал — имена папок.

Цитата:
VBS сам по себе не полезет в вашу БД и не будет считывать оттуда значения полей
Цитата:
Ну и всё верно - получено ровно то, что написано кодом. Какие проблемы? Если не понимаете, почему получается именно так - возьмите лист бумаги и пройдите по всем строкам своей программы, записывая, как по мере её выполнения изменяется содержимое переменной strPath. А заодно поймёте, что надо изменить...

Отправлено: 15:35, 04-07-2011 | #33


Googler


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

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


Цитата NecroTYN:
по поводу нашего кода »
повторюсь (в очередной раз) - проблема не в коде, а в его интеграции с конкретной программой

Синхронный запуск скрипта - это лишь половина проблемы. Вторая половина - получить эти самые (вновь введенные) данные: либо программа должна уметь их передавать в скрипт (через параметры), либо скрипт должен как-то (?) сам отбирать эти данные из таблиц (среди остальных)

Отправлено: 15:51, 04-07-2011 | #34


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


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

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


Цитата amel27:
повторюсь (в очередной раз) - проблема не в коде, а в его интеграции с конкретной программой »
Вот что мне ответили разработчики:
Цитата:
Можно передать в файл-скрипт параметр - значение любого поля текущей записи (например, поля "ID" или поля "Полный путь к файл" или поля "Папка"). Откройте файл ScriptExample3.vbs в Блокноте и посмотрите конкретный пример. Чтобы указать поле, нужно написать его внутреннее имя в квадратных скобках.
Вот содержание ScriptExample3.vbs
Код: Выделить весь код
данный код предназначен для демонстрационных целей
'вы можете писать на языке VBScript любые скрипты
'выполнение данного файла можно связать с нажатием пользовательской кнопки,
'которую можно добавить на панель инструментов любой таблицы в программе
'данный скрипт читает парамеры командной строки, с которой он был вызван
'например, если вызов был такой "C:\ScriptExample3.vbs /1 /2", то скрипт покажет "1" и "2"

Dim objArgs 'объекта для чтения параметров строки запуска файла
Dim sMsg 'текст сообщения
Dim i 'числовая переменная для цикла

Set objArgs = WScript.Arguments 'получение объекта для чтения параметров строки запуска файла

sMsg = "Всего параметров = " & objArgs.Count & vbCr

For i = 0 To objArgs.Count - 1
  sMsg = sMsg & "Параметр " & i + 1 & " = " & objArgs(i) & vbCr
Next

MsgBox sMsg, vbInformation, "Сообщение" 'показываем собщение

Отправлено: 16:02, 04-07-2011 | #35


Googler


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

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


Цитата NecroTYN:
содержание ScriptExample3.vbs »
тот же TEST.VBS только для нескольких параметров

Цитата NecroTYN:
Чтобы указать поле, нужно написать его внутреннее имя в квадратных скобках. »
ну дык проверили бы уже - вызвать из программы этот или TEST.VBS в триггере
скажем, что вернет (имя поля или значение) для таблицы qdfOrders и поля Address:
Код: Выделить весь код
TEST.VBS [Address]

Отправлено: 16:18, 04-07-2011 | #36


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


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

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


Вот еще советы с приветливого форума:
Цитата:
Но вот вам направление: написать скрипт который только определяет количество переданных параметров и сохраняет их в текстовый файл и «задать триггер на добавление на таблицу "Заказы", но в качестве команды указать не SQL-инструкцию, а запуск данного файла.» (это уже в програме/БД) А далее тупо смотреть (анализировать ), что в скрипт передаётся
Цитата:
Я думаю, кое-какие операции следует с этой переменной проделывать после создания каждой новой папки.

Отправлено: 16:55, 04-07-2011 | #37


Googler


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

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


NecroTYN, пример VBS на дабавление/изменение таблицы заказов:
Код: Выделить весь код
C:\TEST\Script.vbs /[ID]
читать дальше »
Код: Выделить весь код
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 'очищаем переменную


P.S. критерий разделения услуг/товара в топике не раскрыт
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:01, 05-07-2011 | #38


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


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

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


опять ругается, пишет вот как

Последний раз редактировалось NecroTYN, 22-01-2012 в 21:12.


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


Googler


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

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


Цитата NecroTYN:
пишет вот как »
ну сами хоть чуть подумайте - смысл ошибки тот же, номер строки в ошибке указан, примеры для экспериментов были выше - очевидно скрипт запускается без параметров


скрипт строит структуру каталогов по переданному ID из заказанного
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:54, 05-07-2011 | #40



Компьютерный форум 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




 
Переход