unit4
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Что то я не понимаю, все работало, а сейчас вылетает на строчке AtxtSIC = Left(AtxtSIC, Len(AtxtSIC) - 1) Вот код: Код: Public Sub XMLtoTXT() Dim xmlDoc As MSXML2.DOMDocument Dim objNode As IXMLDOMNode Dim SIC, OQ, OUGP As IXMLDOMNodeList Dim db As ADODB.Connection Dim rec As ADODB.Recordset Dim txtSIC, AtxtSIC, xmlFileName, txtFileName As String Dim objFSO As FileSystemObject Dim objFolder As Folder Dim objFiles As Files Dim objFile As File Set xmlDoc = New DOMDocument Set db = New ADODB.Connection Set rec = New ADODB.Recordset Set objFSO = New FileSystemObject Set objFolder = objFSO.GetFolder("D:\trash\") Set objFiles = objFolder.Files txtFileName = "D:\trash\test.txt" date_ord = Cells(2, 1) date_ord = sd(date_ord) xmlFileName = "ORDER_" + date_ord + ".xml" For Each objFile In objFiles If objFSO.GetFileName(objFile.Name) = xmlFileName Then xmlFileName = objFSO.GetFileName(objFile.Name) End If Next MsgBox xmlFileName AtxtSIC = "" txtSIC = "" '-------------------Parsing XML file and fiend SIC,OQ and OUGP------------------ xmlDoc.async = False xmlDoc.validateOnParse = False xmlDoc.Load (xmlFileName) xmlDoc.setProperty "SelectionLanguage", "XPath" Set SIC = xmlDoc.selectNodes("//SupplierItemCode") Set OQ = xmlDoc.selectNodes("//OrderedQuantity") Set OUGP = xmlDoc.selectNodes("//OrderedUnitGrossPrice") For Each txtSIC In SIC AtxtSIC = AtxtSIC + txtSIC.Text + "," MsgBox AtxtSIC Next AtxtSIC = Left(AtxtSIC, Len(AtxtSIC) - 1) '-----------------Request Suplier Item Code from IS Pro ------------------------ Call db.Open("Provider='sqloledb';Data Source='Server';Initial Catalog='Pro_Sklad'", "sa", "") sqlq = "select skln_cd, NmEi_QtOsn, skln_statrep from skln" + _ " left join sklnomei on skln_rcd=nmei_rcdnom" + _ " where nmei_cd=3 and skln_rcdgrp in (257,259,260,261,275)" + _ " and skln_statrep in(" + AtxtSIC + ")" rec.Open sqlq, db Open txtFileName For Output As #1 '-----------------Write in file ----------------------- If (SIC.Length = OQ.Length) And (OUGP.Length = OQ.Length) Then For i = 0 To SIC.Length - 1 Print #1, rec!skln_cd & ";" & OQ(i).Text & ";" & OUGP(i).Text Next End If Close #1 rec.Close Set rec = Nothing db.Close Set db = Nothing Set objFSO = Nothing Set objFolder = Nothing Set objFiles = Nothing Set objFile = Nothing End Sub | Где я лажанул, не понимаю. Может кто то взглянет, да ткнет носом. Спасибо. Добавлено: Я кажется нашел косяк. Код: If objFSO.GetFileName(objFile.Name) = xmlFileName Then xmlFileName = objFSO.GetFileName(objFile.Name) | Я думал оно сможет по части имени найти файл, а видимо необходимо указывать полное название, что не возможно, потому что имя файла состоит из ORDER_датавремя, где время неизвестно. Может кто подскажет как можно реализовать мою задумку? Добавлено: Добавил небольшую проверку по дате создания файла... Код: xmlFileName = "ORDER_" + date_ord last = "01.01.1900" For Each objFile In objFiles If CDate(objFSO.GetFileName(objFile.DateCreated)) > last Then MsgBox last If Left(CStr(objFSO.GetFileName(objFile.Name)), _ Len(CStr(objFSO.GetFileName(objFile.Name))) - 13) = xmlFileName Then xmlFileName = CStr(objFSO.GetFileName(objFile.Name)) MsgBox xmlFileName End If End If last = CDate(objFSO.GetFileName(objFile.DateCreated)) MsgBox last Next | Но опять что то не нравиться ему во втором условии... |