Проблема с чтением данных из таблиц Sql

Тема в разделе "Lotus - Программирование", создана пользователем Darker, 30 окт 2009.

  1. Darker

    Darker Гость

    Написал "синхронизатор" между базами Lotus и таблицами SQL. Данные из лотуса закидываются нормально, но затем не могу прочитать то что закинул. Из лотуса кидаю следующим образом:

    [codebox]Sub Click(Source As Button)

    Dim v As Variant
    Dim sqlfields As Variant
    Dim sqlfields1 As Variant

    Dim item As NotesItem
    sf="Select "
    For i=Lbound(doc.Forms) To Ubound(doc.Forms)
    sf=sf+{form="}+doc.Forms(i)+{" |}
    Next
    sf=Left(sf,Len(sf)-1)

    Set col=db.Search(sf,Nothing,0)
    If col.Count=0 Then
    Msgbox "Ничего не найдено!"
    End
    End If
    count=col.Count
    Msgbox Cstr(count)+" документов"

    sqlfields1=doc.sqlfields
    Dim sfields As Variant
    Dim fieldsTypes As Variant
    If doc.AllFields(0)<>"" Then sqlfields1=doc.SQLfieldsList_1
    Redim sqlfields(Ubound(sqlfields1))
    Redim fieldsTypes(Ubound(sqlfields1))
    For i=Lbound(sqlfields1) To Ubound(sqlfields1)
    sqlfields(i)=Strleftback(sqlfields1(i),"^")
    fieldsTypes(i)=Strrightback(sqlfields1(i),"^")
    Next
    sfields=Join(sqlfields,",")
    con.ConnectTo(doc.Server1(0))
    Set qry.Connection=con
    Set result.Query=qry
    ' result.Execute
    Dim g
    For i=1 To col.Count
    Set doc1=col.GetNthDocument(i)
    v=""
    For j=Lbound(sqlfields) To Ubound(sqlfields)
    If doc1.HasItem(sqlfields(j)) Then
    g=""
    Set item=doc1.GetFirstItem(sqlfields(j))
    If Isarray(item.Values) Then g=Trim(Cstr(item.Values(0)))
    If g="" Then
    v=v+"NULL,"
    Else
    Select Case fieldsTypes(j)
    Case 11:
    d=Cdat(g)
    v=v+"'"+Cstr(Year(d))+"-"+Cstr(Month(d))+"-"+Cstr(Day(d))+"',"
    Case -9, -10:v=v+"'"+g+"',"
    Case Else:
    v=v+""+g+","
    End Select
    End If
    Else
    v=v+"NULL,"
    End If
    Next
    qry.SQL={Insert INTO }+doc.Tables(0)+{(}+sfields+{) Values(}+Left(v,Len(v)-1)+{)}
    result.Execute
    If i=100 Then Goto next1
    Next
    next1:
    Msgbox "Закончено"
    ' result.Execute
    result.Close(DB_CLOSE)
    con.Disconnect
    End Sub[/code]

    Затем пытаюсь подсчитать кол-во закинутых мною записей. В свойствах таблицы написано реальное кол-во, но при программном чтении он возвращает 1.
    Код ( (Unknown Language)):
    Sub Click(Source As Button)
    Dim ws As New NotesUIWorkspace
    If doc.Tables(0)="" Then
    Msgbox "Укажите в какой таблице нужно произвести подсчет"
    ws.CurrentDocument.GotoField("Tables")
    End
    End If
    con.ConnectTo(doc.Server1(0))
    Set result.Query=qry
    qry.SQL="SELECT * FROM "+doc.tables(0)

    Msgbox (result.Execute)
    i=0
    If result.Execute Then
    Do
    result.NextRow
    i=i+1
    Loop Until result.IsEndOfData
    End If
    Msgbox Cstr(i)
    result.Close(DB_CLOSE)
    con.Disconnect
    End Sub[/codebox]

    Помогите, пожалуйста, найти решение


    через qry.SQL="SELECT COUNT(*) FROM "+doc.tables(0) подсчитывается.
     
  2. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Доступ к данным в SQL есть?
    Как пытаетесь прочитать данные?
     
  3. Darker

    Darker Гость

    Доступ есть, читаю через классы ODBCConnection
     
  4. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Что именно не так читается?
    Нет соединения? Данные не видятся?
    Код в студию
    и проверьте туда ли вы стучитесь при получении данных
     
Загрузка...
Похожие Темы - Проблема чтением данных
  1. MarinaMarina
    Ответов:
    1
    Просмотров:
    1.081
  2. c0de3r
    Ответов:
    5
    Просмотров:
    127
  3. DobermannTT
    Ответов:
    10
    Просмотров:
    136
  4. SoulPaladin
    Ответов:
    4
    Просмотров:
    133
  5. Artael
    Ответов:
    1
    Просмотров:
    110

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