1. Уважаемые участники и гости, 19 октября codeby будет работать в режиме "Только чтение". Регистрация новых участников будет закрыта. 20 октября портал продолжит работу в прежнем режиме.

Не Работает Getdocumentbykey(

Тема в разделе "Lotus - FAQ", создана пользователем gwarlock, 14 мар 2013.

  1. gwarlock

    gwarlock Member

    Репутация:
    0
    Регистрация:
    14 мар 2013
    Сообщения:
    5
    Симпатии:
    0
    Добрый день.

    Вопрос у меня абсолютно идиотский, но все книги по Лотусу ведут на ссылки, устаревшие в 2003 году, а первое место в поиске по слову Домино занимает сайт Кришнаитов.
    Как просмотреть данные в базе Лотус 7? В администраторе я нашел эту базу, но при клике на нее открывается интерфейс, а мне именно содержимое таблиц нужно.

    Объясняю вопрос - у нас уже лет 6 лежит Лотус на одном из серверов. Получает письма от партнеров, раз в месяц мы заходим на него и печатаем реестр по пришедшим письмам и прикреплениям.
    Как он работает - мы вообще без понятия. А в январе один из партнеров прислал нам письмо с прикрепленным файлом с пробелом в имени файла. И печать по нему перестала работать. Скрипт я нашел, который печатает реестр, там все вроде очевидно

    Код:
    	Set db = Session.CurrentDatabase
    
    Set View = db.GetView("(IncomingByFile)")
    If View Is Nothing Then
    Msgbox "Не найден вид (IncomingByFile)"
    End
    End If
    Set Doc = View.GetDocumentByKey(Ucase(FileFromRetailArr(i).FName), True)
    If Doc Is Nothing Then
    Msgbox "Не найден документ с файлом " + FileFromRetailArr(i).FName
    FileFromRetailArr(i).FName - это и есть наше имя файла "xxx001 002.txt"
    Я даже View нашел, оно таблицу открывает, в которой есть это имя, но поправить там я, конечно, ничего не могу.

    Подскажите, что еще можно сделать?
     
  2. hosm

    hosm * so what *

    Репутация:
    0
    Регистрация:
    18 май 2009
    Сообщения:
    2.442
    Симпатии:
    8
    А точно именно GetDocumentByKey не находит документ? Посмотрите, может в сортированной колонке представления (IncomingByFile) стоит Multi-value separator - Space?
     
  3. gwarlock

    gwarlock Member

    Репутация:
    0
    Регистрация:
    14 мар 2013
    Сообщения:
    5
    Симпатии:
    0
    Еще бы знать, как это проверить.

    Я зашел во Views, нашел нужный, два раза щелкнул на ViewSelection.
    Там 4 колонки - Файл, От, Дата, Время. Если правой кнопкой на заголовке выбрать ColumnProperties, то у первой и четвертой колонки Multi-value separator = none.
    У второй и третьей колонки = Comma.

    А вообще таблица выглядит нормально и это имя файла там правильно записано.
     
  4. Kee_Keekkenen

    Kee_Keekkenen Well-Known Member

    Репутация:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    639
    Симпатии:
    6
    а у колонки файл (в свойствах) включена сортировка ?
     
  5. gwarlock

    gwarlock Member

    Репутация:
    0
    Регистрация:
    14 мар 2013
    Сообщения:
    5
    Симпатии:
    0
    На второй закладке - Sort: Ascending. Все остальное на закладке вроде отключено.
    Кстати, сама колонка, как я понимаю, так образуется - тип Формула @UpperCase(@Trim(FileName))

    Обидно, блин, столько лет все работало, программист лотуса уволился в 2006м и тут такое из-за одного пробела.
     
  6. susinmn

    susinmn Well-Known Member

    Репутация:
    0
    Регистрация:
    16 окт 2007
    Сообщения:
    529
    Симпатии:
    8
    1. Попробовать заменить
    Set Doc = View.GetDocumentByKey(Ucase(FileFromRetailArr(i).FName), True)
    на
    Set Doc = View.GetDocumentByKey(Trim(Ucase(FileFromRetailArr(i).FName)), True)
    т.к. @UpperCase(@Trim(FileName)) заменяет 2 и более пробелов внутри названия на 1.

    Если не поможет, то
    Это вся формула в колонке?
    Как образуется FileFromRetailArr(i)? Можно полный код, если это не секретная информация...
     
  7. gwarlock

    gwarlock Member

    Репутация:
    0
    Регистрация:
    14 мар 2013
    Сообщения:
    5
    Симпатии:
    0
    1. Пробовали, не помогает, там вообще пробел всего один - посередине.
    2. Да, это вся формула в колонке. Я пробовал вообще формулу убирать - без толку, только имена файлов в таблице не все в верхнем регистре становятся.
    3. FileFromRetailArr(i) читается из текстового файла, пришедшего из другой системы.
    Код:
    	
    filenames = ws.OpenFileDialog( False, "Select file ...", "*.txt", LoadDirName)
    If Isempty(filenames) Then
    Msgbox "Вы не выбрали файл !!!"
    End
    End If
    
    LoadFileName = filenames(0)
    
    Call GetArrayFromFile (LoadFileName, FileFromRetailArr, NumInFileFromRetailArr)
    
    i = 0
    
    While (i < NumInFileFromRetailArr)
    Set Doc = Nothing
    Set Doc = View.GetDocumentByKey(Ucase(Trim(FileFromRetailArr(i).FName)), True)
    If Doc Is Nothing Then
    Msgbox "Не найден документ с файлом " + Ucase(Trim(FileFromRetailArr(i).FName))
    строка там вида XXX^XXX002 001.TXT^31.01.2013^ООО
     
  8. hosm

    hosm * so what *

    Репутация:
    0
    Регистрация:
    18 май 2009
    Сообщения:
    2.442
    Симпатии:
    8
    1) нужен код ф-ции GetArrayFromFile - похоже, в ней заполняется FileFromRetailArr , выше вы написали только диалог выбора файла и ее вызов. И уточните, ошибка именно после GetDocumentByKey, т.е. выводится именно "Не найден документ с файлом "?
    2) надо так, если проблема таки в нескольких пробелах: Set Doc = View.GetDocumentByKey(FullTrim(Ucase(FileFromRetailArr(i).FName)), True)
    т.к. @Trim заменяет 2 и более пробелов внутри названия на 1, а Trim убирает только пробелы в начале и конце
     
  9. gwarlock

    gwarlock Member

    Репутация:
    0
    Регистрация:
    14 мар 2013
    Сообщения:
    5
    Симпатии:
    0
    1. Ошибка именно в "Не найден документ". Функция вроде работает
    Код:
    Public Function DostoWin (st As String) As String
    '	 Функция возвращае преобразованную строку из формата DOS 866 в формат Windows 1251
    '	 строка для преобразования	 
    Dim i As Long, dl As Long
    Dim simvol As String, st1 As String
    
    dl=Len(st)
    For i=1 To dl
    simvol=Asc(Mid$(st,i,1))
    Select Case simvol
    Case 193
    simvol=45
    Case 194
    simvol=45
    Case 196
    simvol=45
    Case 195
    simvol=124
    Case 197
    simvol=124
    Case 179
    simvol=124
    Case 240
    simvol=168
    Case 241
    simvol=184
    Case Else			  
    If simvol>=128 And simvol<176 Then 
    simvol=simvol+64
    Else
    If simvol>=224 And simvol<240 Then
    simvol=simvol+16
    End If
    End If
    End Select
    st1=st1+Chr(simvol)
    Next
    DostoWin=st1	 
    End Function
    
    Public Function GetArrayFromFile (FName As String, Arr() As FileData, NumInArr As Long)
    
    Dim filenum As Integer
    Dim ILINE As String, TmpILINE As String
    Dim Count As Integer
    Dim FileName As String, CodCompany As String, DateDoc As String, CompanyName As String
    
    NumInArr = 0 
    Redim Arr(NumInArr)
    
    fileNum=Freefile()
    Open FName For Input As fileNum
    Do While Not Eof(fileNum)
    Line Input #fileNum, ILINE
    If Trim(ILINE) <> "" Then
    
    ILINE = DostoWin(ILINE)
    
    TmpILINE = ILINE
    
    FileName = ""
    CodCompany = ""
    DateDoc = ""
    CompanyName = ""
    
    Count = Instr(1, ILINE, "^" , 1) 		
    If Count <> 0 Then
    CodCompany = Left (ILINE, Count - 1)
    ILINE = Mid (ILINE, Count + 1)
    End If
    
    Count = Instr(1, ILINE, "^" , 1) 		
    If Count <> 0 Then
    FileName = Left (ILINE, Count - 1)
    ILINE = Mid (ILINE, Count + 1)
    End If
    
    Count = Instr(1, ILINE, "^" , 1) 		
    If Count <> 0 Then
    DateDoc = Left (ILINE, Count - 1)
    ILINE = Mid (ILINE, Count + 1)
    End If
    
    CompanyName = ILINE
    
    If FileName <> "" And 	CodCompany <> "" And DateDoc <> "" And CompanyName <> "" Then
    Redim Preserve Arr(NumInArr) 
    Arr(NumInArr).FName = FileName
    Arr(NumInArr).CodCompany = CodCompany
    Arr(NumInArr).DateDoc = DateDoc
    Arr(NumInArr).CompanyName = CompanyName
    NumInArr = NumInArr + 1
    Else
    Msgbox "Некорректная строка в файле из Retail " + TmpILINE
    End If
    End If
    Loop
    Close fileNum
    
    End Function
    2. Не помогло, один там пробел посередине имени файла.
     
Загрузка...
Похожие Темы - Не Работает Getdocumentbykey(
  1. abdurtim
    Ответов:
    8
    Просмотров:
    275
  2. ghostphisher
    Ответов:
    26
    Просмотров:
    665
  3. seoman2
    Ответов:
    5
    Просмотров:
    279
  4. lemuriez
    Ответов:
    0
    Просмотров:
    244
  5. zehrx
    Ответов:
    5
    Просмотров:
    493

Поделиться этой страницей