Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Доработка скрипта VBS / 15 сообщений из 15, страница 1 из 1
27.11.2012, 23:54
    #38055639
NecroTYN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доработка скрипта VBS
Добрый вечер господа форумчане !!!
В очередной раз нуждаюсь в Вашей помощи, задача стоит следующая:
Есть скрипт для импорта данных из файла 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
29.11.2012, 07:26
    #38057323
NecroTYN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доработка скрипта VBS
Блин парни!!!
...может я чего то ни так написал, или никому не интересно ???
...
Рейтинг: 0 / 0
29.11.2012, 08:20
    #38057341
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доработка скрипта VBS
а в чем прблема?

Код: 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
29.11.2012, 10:09
    #38057436
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доработка скрипта VBS
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
29.11.2012, 11:48
    #38057573
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доработка скрипта VBS
Antonariy,

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

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

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

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

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


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