использование текстовой базы даных (*.loa)

Автор dimuch, 01.10.03, 12:11:52

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

dimuch

Подскажите начинающему но дающему надежды. При работе с текстовой базой данных. В методе ksCondition можно указывать фыльтр отбара записей в виде строчки, например: ’d>14 && l<30’
А если на перед неизвесно какое условие, то есть пользователь указывая ряд параметров как бы формирует его как тогда быть???

Пробовал через строковую переменную не вышло
iDataBase.ksDoStatement( dbRef, resRecord, ’1 2 3 4 5 6 7 8 9 ’ );
iDataBase.ksCondition(dbref,resRecord,???);

P.s.:за ошибки не ругайте

Logovaz

Смотрим справку по ksDataBaseObject::ksCondition
Примечание:

....Поскипано....

Следует отметить, что при работе с текстовыми базами данных не обрабатывается вложенность условий (например, "where d > 10 and d < 14").

Обратите внимание на последнюю строку.

logovaz

Называется сам дурак..не внимательно прочитал условие...

olden

Развиваем тему. У меня такая проблема.

1.loa содержит:
/*
idName  h       b
*/
5       50      32
6.5     65      36

дальше в классе:
'создаем базу
    Dim Data As Kompas6API5.DataBaseObject
    Base.db = Data.ksCreateDB("TXT_DB")
    If ConnectDB_(Base.db, "1.loa") Then
      Base.r = Data.ksRelation(Base.db)
        Data.ksRChar "idName", 10, 0      '0- idName
        Data.ksRFloat ("h")                          '1- h
        Data.ksRFloat ("b")                          '2- b
      Data.ksEndRelation
      If Data.ksDoStatement(Base.db, Base.r, "") Then    ' TXT_ALL
        OpenDataBase = True
      End If
'считываем данные
If Data.ksCondition(Base.db, Base.r, "idName=5") = 1 Then
    i = Data.ksReadRecord(Base.db, Base.r, paramTmp)
    If i > 0 Then
      Dim item As Kompas6API5.LtVariant
      Dim arr As Kompas6API5.DynamicArray
      Set item = iKompasObject.GetParamStruct(ko_LtVariant)
      Set arr = paramTmp.GetUserArray()
      If (Not item Is Nothing) And (Not arr Is Nothing) And arr.ksGetArrayCount() >= 3 Then
        item.init
        arr.ksGetArrayItem 0, item  '0- idName
        tmp.idName = item.strVal
        arr.ksGetArrayItem 1, item  '1- h
        tmp.h = item.floatVal
        arr.ksGetArrayItem 2, item  '2- b
        tmp.b = item.floatVal
      End If
    End If

Так вот в первом случае при idName=5 параметры считываются правельно. При втором случае idName=6.5 остальные данные считываются как при idName=5. Вчем ошибка - не пойму. Ответьте пожалуйста.

olden