Два запроса, связанных в UniObjects для.NET
контекст
У меня есть интерфейс в VB.NET, который извлекает данные из UniVerse, используя UniObjects для.NET
проблема
Из файла COB мне нужно получить все ключи, где поле FEC.COB равно определенной дате, а поле SEC равно 04.
Эксперт в базе данных UniVerse сказал мне, что я могу выполнить следующие запросы:
SELECT COB WITH FEC.COB > “31/10/2013”
SELECT.ID 1 2 04
Но я не знаю, как я могу сделать это с библиотекой UniObjects. Может кто-нибудь мне помочь?
1 ответ
Я не использую UniObjects, поскольку мой магазин обычно получает данные нашего UniVerse через ODBC. Кроме того, мой VB плох, поэтому у меня нет для вас большого метакода, но основная идея заключается в том, чтобы сделать что-то подобное.
1.) Создайте сеанс UV. Надеюсь, у вас так много получилось, что я почти не помог вам.
2.) Как только сессия установлена, выполните ваш запрос, выполнив что-то вроде этого
session.Command.Text = "SELECT COB WITH FEC.COB > '31/10/2013'"
session.Command.Exec
(Я преобразовал ваши двойные кавычки в одинарные, и Вселенная не будет возражать).
3.) Если вам просто нужны идентификаторы, вы можете получить их, просматривая список выбора, который возвращает ваш запрос. Запрос командной строки всегда вернется к списку 0, если вы не укажете иначе в своем UV-запросе. В большинстве случаев ваши результаты будут в сеансе.SelectList (0)
Dim objSelect As object
Set objSelect = objSession.SelectList(0)
4.) Похоже, что у объекта SelectList есть метод ReadList, который возвращает объект динамического массива, который вы должны иметь возможность перебирать, используя обычные циклы массива. Кроме того, вы можете использовать цикл while и next, чтобы делать то, что вам нужно.
Dim someObject as Object
someObject = objSelect.Next ' Get first ID
Do While Not objSelect.LastRecordRead
' Do something here with someObject. Maybe ToString it or something
someObject = objSelect.Next' Get next ID
Loop
Надеюсь, что это несколько полезно.