• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Import From Excel To Lotus

  • Автор темы xKlonx
  • Дата начала
X

xKlonx

Народ пытаюсь вытянуть некоторые данные из Excel в Лотус.Подключаюсь с помощью ODBC драйвера,в панель управления->администрирование ->Источники данных (ODBC) ->Пользовательский DSN добавляю настройки Microsoft Excel Driver(.xls).Пытаюсь приконектится:
Код:
Dim con As New ODBCConnection
Dim qry As New ODBCQuery
Dim result As New ODBCResultSet
Dim Session As New NotesSession
Dim Db As NotesDatabase
Dim COView As NotesView
Dim CODoc As NotesDocument
Dim BillDirectionDoc As NotesDocument
Dim Row As Integer
Dim BillDirection As String


Set Db = Session.CurrentDatabase
Set COView = Db.GetView(	"BillDirections:DirCode" )		

Set qry.Connection = con
Set result.Query = qry
con.ConnectTo( "STAT2" )
qry.SQL = "SELECT * FROM STAT2"
result.Execute

Do
result.NextRow
Row = Row + 1
.............................................
result.Execute вылетает ошибка:

Может кто-то знает как правильно настроить драйвер?Заранее благодарен
 

NetWood

Lotus Team
17.04.2008
545
93
BIT
8
Я мучился с ODBC - плюнул. Ну не работает, хоть тресни.
Все через COM делаю. Дешево и сердито.
Еще через DB2 можно.
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
из екселя в лотус это не кошерно
сначала из екселя преобразовать в XML а уже потому DXML отработать на раз
обещаю что скорость минимум в 100 раз будет больше :)
 
X

xKlonx

ToxaRat
Тут скорость не нужна так как это единоразовый импорт,особо извращатся неохота
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
xRomax
Я тоже пытался вытянуть с ODBC... не понравилось и сделал так
Код:
Function ConnectToXLS As Variant
Dim ProfileDoc As NotesDocument
Dim ADOConnection As Variant


On Error GoTo OnErr

Set ProfileDoc = GetProfileDocument
If ProfileDoc Is Nothing Then
ConnectToXLS = "1"
Exit Function
End If	

Set ADOConnection = CreateObject("ADODB.Connection")

With ADOConnection
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source="+ ProfileDoc.ExcelDebet( 0 ) + ";Extended Properties=Excel 8.0;"
.Mode = 1
.Open
End With

Set ConnectToXLS = ADOConnection

Exit Function

OnErr:
Print Error
Set ConnectToXLS = Nothing
Set ADOConnection = Nothing
Resume Rez

Rez:

End Function
и так
Код:
	Set XLSConnection = ConnectToXLS

If XLSConnection Is Nothing Then
GoTo OnErr
End If

Set RecordSet = CreateObject("ADODB.Recordset")
RecordSet.LockType = 3
RecordSet.CursorType = 2
RecordSet.Open "Select * from [Sheet1$] where F2 <> '' " , XLSConnection

While RecordSet.EOF = False
..... делаем то что надо
Wend
и настраивать ничего не надо
 
X

xKlonx

NickProstoNick
"Microsoft JET Database Engine:обьект "STAT2" не найден ядром базы данных Microsoft Jet. Проверьте существование обьекта и правильность имени и пути"
Вылетает ошибка на строке выборки
Код:
	RecordSet.Open "Select * from STAT2 " , XLSConnection

Функция коннекта проходит нормально,получаю обжекты
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
STAT2 - это страница в xls-файле?
И вообще, покажи сам файл.
А вообще, попробуй написать [Sheet1$] или какая у тебя там страница
 
X

xKlonx

NickProstoNick
STAT2 - это страница в xls-файле?
И вообще, покажи сам файл

Да,страница,файл также называется.Файл не могу показать так как это телефонный справочник компании
 
K

Klido

так как это телефонный справочник компании
коллеги, разовый экспорт из экселя в таком простом случае - просто импортнуть :) какой такой код??? в крайнем случае, сделать форму+вьюху и тупо импортнуть... плюс там есть такие .COL файлы - параметризируют импорт...
 
X

xKlonx

Klido
А можно конкретнее,так как етого не делал раньше?
 
K

Klido

File-Import... ну и там далее... в хелпе про importing files - в клиентском и дизайнерском

насколько помню, если вьюха точно совпадает со столбцами экселя + форма нормальная - в 3 клика делается прекрасно импорт...
 
X

xKlonx

NickProstoNick
Я правильно понял что ProfileDoc.ExcelDebet( 0 ) - поле с путем к файлу?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
178
Klido
поддерживаю

из-за одного раза устраивать такой гимор... - этож надо так себя не уважать :)
КОМ, ОДБЦ... - кто больше вспомнит МСпердуляторов усложняющих жисть? ;)

делаем CSV файл (экспорт из хехеля), переименовываем его в txt, составляем col файл (примеры в хэлпе нотусей)
импортим в нотуса (да хоть кодом) - стандартный пункт меню и соответ. собака
col файл для задания типа полей и разделителей
 
K

Klido

lmike
ну я обычно ограничиваюсь вьюхой и формой - при импорте там сразу спрашивает что да как... вооще не вопрос - даже если что не так, то ctrl+a Del, поправил формовьюшку - и повтор... куда как быстрее код писать....
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
178
ну я обычно ограничиваюсь вьюхой и формой - при импорте
у мя в кажной базе есть вьюшка ($All) - столбецы дата создания, модификации, форма, с возможностью сортировки
col файл позволяет отлавливать несоответ. типов и кол-ва данных (колонок)
 
X

xKlonx

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

Klido

xRomax
ды кглянь в хелпе формат - в экселе должны столбцы называться как поля в форме.. ну и там галочками ещё потыцкать... при импорте
 

NetWood

Lotus Team
17.04.2008
545
93
BIT
8
Господа! Штож товорицца то. Надо человеку помочь решить разовую задачу. Все начали пальцы загибать. :)
В хелп тыкать. XML? DXL? И прочее. А нахрена спрашивается?


Код:
Sub ImportFromExcel

Dim session As New NotesSession
Dim ws As New NotesUIWorkspace

Set db = Session.currentdatabase

filename = Inputbox$ ("Drive\Path\FileName.xls for the docs будут загружены.", "Укажите расположение файла импорта " ,"c:\export.xls")
If filename = "" Then
Exit Sub
End If	

formname = Inputbox$ ("Форма для загрузки?", "Enter ... " ,"Topic")
If formname = "" Then
Exit Sub
End If	

Set xlApp = CreateObject("Excel.application")
Set ws = New NotesUIWorkspace	
' Установка видимости Excel -------------------------------------------------
Watch = "No"
If Watch = "Yes" Then YesNo = True Else YesNo = False 
xlApp.Visible = YesNo	
' открытие книги ------------------------------------------------------------

Call xlApp.Workbooks.Open(filename, 0, True) 
Set xlsheet = xlApp.Workbooks(1).Worksheets(1)
xlsheet.Activate

Dim RowName As String	
With xlsheet
i=1 '' начинаем со второй строчки
Do
RowName = Trim(Str(i + 1))
' ---------------------------------------------------------
' создать			
Set CurrDoc = New NotesDocument (db)
CurrDoc.Form=formname
CurrDoc.Category3=.Range("A" & RowName).Value '  
CurrDoc.Category2=.Range("B" & RowName).Value '  
CurrDoc.CatalogNumber=.Range("C" & RowName).Value '  Артикул
Call CurrDoc.ComputeWithForm(True, True)	
Call CurrDoc.Save(True, True)
' ---------------------------------------------------------
Print i			
i = i +1
Loop While (Trim(.Range("A" + RowName).Value)<>"") 	''пока колонка "A" Category непустое :)	
End With

xlapp.activeworkbook.close
xlapp.quit
Set xlapp = Nothing

Messagebox("Import file Excel " & FileName & " is complete. Всего создано " & i & " записей. ")
Call ws.ViewRefresh	

End Sub

By кто-то: "Мне не нужен совершенный код, мне нужен код который решает задачу..."
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!