powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Доработка скрипта VBS
15 сообщений из 15, страница 1 из 1
Доработка скрипта VBS
    #38055639
NecroTYN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер господа форумчане !!!
В очередной раз нуждаюсь в Вашей помощи, задача стоит следующая:
Есть скрипт для импорта данных из файла xls в таблицу Б/Д Access
скрипт
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
Код (VBScript):

' VB Script Document
option explicit
' константы для работы с ADO
Const adDouble = 5, adDate = 7, adCurrency = 6, adBoolean = 11, adVarWChar = 202, adLongVarWChar = 203
Const adUseClient = 3, adOpenStatic = 3, adLockOptimistic = 3, adCmdText = &H1
Const adSchemaTables = 20, adSchemaColumns = 4
 
'1. получаем ID заказа:
Dim oArgs 'объекта для чтения параметров строки запуска файла
Set oArgs = WScript.Arguments 'получение объекта для чтения параметров строки запуска файла

Dim OrderID
OrderID = Trim(Replace(oArgs(0),"/","")) 'trim на всякий пожарный

'2. получаем путь к файлу
Dim oConMDB
Set oConMDB = CreateObject("ADODB.Connection")
'http://www.connectionstrings.com/access
With oConMDB
  .Provider = "Microsoft.Jet.OLEDB.4.0"
  .Open "D:\Documents\Склад и торговля\Backups\2012-01-13.mdb"
End With
 
Dim oRs, File
Set oRs = oConMDB.Execute("Select [FileEstimates] from [qdfOrders] Where ID = " & OrderID)
File = oRs("FileEstimates").Value
 
'3. открываем таблицу
Dim oConXLS
Set oConXLS = CreateObject("ADODB.Connection")
'http://www.connectionstrings.com/excel
With oConXLS
  .Provider = "Microsoft.Jet.OLEDB.4.0"
  .Properties("Extended Properties").Value = "Excel 8.0;IMEX=1;Hdr=Yes;Mode=Read;"
  .CursorLocation = adUseClient
  .Open File
End With
Dim oRsX
Set oRsX = oConXLS.Execute("Select * from [Общая$]")
Dim sSomeName, sUnit, sCalculatedQuantity, sAccompaniment, sManualAmount, sFactor, sTotalQuantity, sPrice, sTheCost,sOrderID
sOrderID = OrderID
 
'4. проходим по записям таблицы и забрасываем данные в MDB:
Do While Not (oRsX.EOF)
  sSomeName = oRsX("Наименование").Value
  sUnit = oRsX("Ед#из").Value
  sCalculatedQuantity = oRsX("Расч#кол").Value
  sPrice = oRsX("Цена").Value
  sTheCost = oRsX("Стоимость").Value
  sTotalQuantity = oRsX("Сум#кол").Value
  sAccompaniment = oRsX("Сопутствие").Value
  sManualAmount = oRsX("Ручн#кол").Value
  sFactor = oRsX("К-ф").Value
 
 
  Set oRs = oConMDB.Execute("INSERT INTO [tblComponents] " & _
  "(Component, Unit, CalculatedQuantity, Accompaniment, ManualAmount, Factor, TotalQuantity, Price, TheCost,OrderID
) " & _
  "VALUES (CStr('" & sSomeName & "'), CStr('" & sUnit & "'), CDbl('" & sCalculatedQuantity & "'), CStr('" & sAccompaniment & "'), " & _
  "CCur('" & sManualAmount & "'), CDbl('" & sFactor & "'), CDbl('" & sTotalQuantity & "'), CInt('" & sOrderID & "'),CCur('" & sPrice & "'),CCur('" & sTheCost & "'))")
  oRsX.MoveNext
Loop


Работает он следующим образом:
Имеем базу данных Access со своими таблицами. Есть таблица "Заказы" и подчиненная ей "Смета заказа", имеется также и программа которая выдает нам *xls файл сметы...
В таблице "Заказы" имеется поле "Файл сметы" которое имеет статус ссылка на файл. При указании пути к файлу сметы, скрипт считывает путь к файлу из поля и записывает данные из файла Excel в таблицу "Смета заказа"

Алгоритм в VBS-файле должен быть таким:
1. Цикл по всем записям (строкам файла Excel).
2. В рамках каждой записи, нужно сделать запрос на существование компонента (в таблицу tblMain) по наименованию. Если оно уже есть, получить его ID. Если его нет, добавить, и тут же получить его ID.
3. Полученный ID компонента записать в таблицу "Компоненты" (tblComponents), в поле ComponentProductID.
...
Рейтинг: 0 / 0
Доработка скрипта VBS
    #38057323
NecroTYN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блин парни!!!
...может я чего то ни так написал, или никому не интересно ???
...
Рейтинг: 0 / 0
Доработка скрипта VBS
    #38057341
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а в чем прблема?

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
'запрос на существование компонента (в таблицу tblMain) по наименованию 
Set NewRs =  oConMDB.Execute("Select [ID ] from [tblMain] Where Name = '" & sSomeName & "'")
If NewRS.EOF Then
    'добавить, и тут же получить его ID.
    Set rst = oConMDB.Execute("Insert Into tblMain ...;SELECT SCOPE_IDENTITY() AS Id")
    Set rst = rst.NextRecordset
    If (rst.State <> adStateClosed) Then            
        If Not rst.EOF Then                
          NewIdentity = rst.Fields(0)             
        End If        
    End If    
Else
  а тут уже Ваш инсерт
End If




не проверял, взято на основе статьи
...
Рейтинг: 0 / 0
Доработка скрипта VBS
    #38057436
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HandKotа в чем прблема?

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
'запрос на существование компонента (в таблицу tblMain) по наименованию 
Set NewRs =  oConMDB.Execute("Select [ID ] from [tblMain] Where Name = '" & sSomeName & "'")
If NewRS.EOF Then
    'добавить, и тут же получить его ID.
    Set rst = oConMDB.Execute("Insert Into tblMain ...;SELECT SCOPE_IDENTITY() AS Id")
    Set rst = rst.NextRecordset
    If (rst.State <> adStateClosed) Then            
        If Not rst.EOF Then                
          NewIdentity = rst.Fields(0)             
        End If        
    End If    
Else
  а тут уже Ваш инсерт
End If




не проверял, взято на основе статьи SCOPE_IDENTITY это MSSQL, а не аксесс.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
oConMDB.CursorLocation = adUseClient
oConMDB.Open ...
rs.Open "select * from tblComponents where 1=2", cn, adOpenStatic, adLockBatchOptimistic 
rs.AddNew
rs("Component").Value = sSomeName 
...
rs.UpdateBatch
MsgBox rs("ComponentID").Value
...
Рейтинг: 0 / 0
Доработка скрипта VBS
    #38057573
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

я же сразу сказал, что не проверял
в любом случае по запросу в гугле выдает кучу ссылок на решение данной проблемы
...
Рейтинг: 0 / 0
Доработка скрипта VBS
    #38059331
NecroTYN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariy, HandKot , Спасибо огромное !!!
Еще вопрос - а куда именно мне вставить приведенные вами примеры в свой код ???
(Извините, но я не сведущий в данных вопросах)
...
Рейтинг: 0 / 0
Доработка скрипта VBS
    #38059580
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам что, не понятен смысл написанного?

rs.Open — rs.UpdateBatch вместо oConMDB.Execute("INSERT INTO [tblComponents]
...
Рейтинг: 0 / 0
Доработка скрипта VBS
    #38059724
NecroTYN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariyВам что, не понятен смысл написанного?
...нет, я не програмист
...
Рейтинг: 0 / 0
Доработка скрипта VBS
    #38059753
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если вы не в состоянии воспользоваться помощью, не просите ее. Просите оказать услугу. Намек понятен?
...
Рейтинг: 0 / 0
Доработка скрипта VBS
    #38059783
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем модераторское, но все же примечание:

Antonariy, думаю, ты слишком резок сейчас. Все же к нам пришел не зеленый студент, который забыл поучиться, а завтра сдача курсового, а реальный человек с реальной рабочей проблемой, который просто никогда не работал со скриптами, так как это не его профиль. Думаю, что ему вполне может кто-то сделать готовый скрипт в ответ на его вежливую просьбу. А если нет - тогда уж и сам предлолжит какое-то вознаграждение.
...
Рейтинг: 0 / 0
Доработка скрипта VBS
    #38059877
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro+
Не совсем модераторское, но все же примечание:

Antonariy, думаю, ты слишком резок сейчас. Все же к нам пришел не зеленый студент, который забыл поучиться, а завтра сдача курсового, а реальный человек с реальной рабочей проблемой, который просто никогда не работал со скриптами, так как это не его профиль. Думаю, что ему вполне может кто-то сделать готовый скрипт в ответ на его вежливую просьбу. А если нет - тогда уж и сам предлолжит какое-то вознаграждение.
Чего это вдруг?
11970844
С тех пор разве что-то изменилось?
...
Рейтинг: 0 / 0
Доработка скрипта VBS
    #38059889
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Масштаб задачи
...
Рейтинг: 0 / 0
Доработка скрипта VBS
    #38059922
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше бы подход к решению. Человек берется за не своё дело, уже рассчитывая, что за него это сделает кто-то другой.

С масштабом же коррелирует лишь стоимость.
...
Рейтинг: 0 / 0
Доработка скрипта VBS
    #38060135
NecroTYN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Благодарю всех за помощь...
...
Рейтинг: 0 / 0
Доработка скрипта VBS
    #38060673
NecroTYN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProAntonariy, думаю, ты слишком резок сейчас. Все же к нам пришел не зеленый студент, который забыл поучиться, а завтра сдача курсового, а реальный человек с реальной рабочей проблемой, который просто никогда не работал со скриптами, так как это не его профиль. Думаю, что ему вполне может кто-то сделать готовый скрипт в ответ на его вежливую просьбу. А если нет - тогда уж и сам предлолжит какое-то вознаграждение.
... Shocker.Pro спасибо за поддержку...
в реалии прогу доделываю сам, уже долгое время, учиться программированию просто некогда, да и моск в 35 лет всё это не хотит воспринимать...
... в действительности находятся люди которые готовы помочь безвозмездно, и при малейшей возможности я и сам готов помочь - только в пределах своей компетенции
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Доработка скрипта VBS
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]