Проблемма получения набора данных возвращаемого API-функцией

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
slaz
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 02.06.2004 (Ср) 15:54

Проблемма получения набора данных возвращаемого API-функцией

Сообщение slaz » 02.06.2004 (Ср) 16:15

Уважаемые господа, помогите плиз! :!:

Тема такая:

Некоторый программный продукт, извините не указываю какой (это САПР), отечественной разработки, имеет программные интерфейсы COM+. Они возвращают наборы данных двоичного формата, вытащенных COM+ сервером САПР-приложения из SQL-сервера, типа TClientDataSet (Это для Delphi), под видом Variant. В Дельфе их получение проходит без особых проблем объектом типа TClientDataSet. Затем они запросто отображаются через DBGrid и вообще можно делать с данными всё что угодно, они уже не в БД, а в объекте ClientDataSet.

Как это организовать на VB к сожалению в документации API функций не описано, да и разработчики не знают, так как оно им без надобности.
Я скоренько попробовал на Басике из .NET воспользоваться элементом DataSet - не вышло, да он похоже и отличается от Дельфовского.

Мне очень хотелось бы найти решение этого вопроса на VB6 или .NET, так как иначе придется осваивать Дельфи, чего, честно говоря, я не очень хочу. :cry:

Если кто с чем-то подобным сталкивался или имеет идеи по данному поводу, пожалуйста помогите!

slaz
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 02.06.2004 (Ср) 15:54

Сообщение slaz » 08.06.2004 (Вт) 14:07

Ну неужели никто ничего не может посоветовать ??? :'(

Отличие от БД вроде и не так велико.
Просто нужно Variant представить как набор структурированных данных. По сути методы COM+ сервера возвращают результаты выборок.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 08.06.2004 (Вт) 14:52

Хм. А как можно давать советы, если неизвестно, по сути, ничего? Одним только COM+ здесь не обойдешься...
Готового решения ты, скорее всего, не найдешь. Ну получи ты этот бинарный поток, сохрани на диск, открой в шестнадцатиричном редакторе, расковыряй формат и напиши парсер. Как тут еще можно сделать, я, признаться, не представляю.

slaz
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 02.06.2004 (Ср) 15:54

Сообщение slaz » 09.06.2004 (Ср) 9:45

Довать советы мог бы человек одинаково неплохо знающий Дельфу и Басик. Собственно на помощь такого специалиста я и расчитываю.
По сути мне нужно только найти Басиковский аналог Дельфовского класса TDataSet или TClientDtaSet, причем я подразумеваю не наличие такого же класса, его в Басике нет, а компонента с аналогичными функциями управления доступа к данным и обладающего схожим по структуре с DataSet источником данных. Возможно даже проблемма разрешима посредствам ADODB, но я не знаю как, поэтому и спрашиваю советов.
Если кто из читающих хотябы немного знаком с Дельфой, то разъясню чуть подробнее:
результат выполнения данных API-шек я присваиваю объекту типа TClientDataSet свойству Data

type TD: TClientDataSet;
TD.Data := САПР_Object.API-шка;

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 09.06.2004 (Ср) 9:55

Нет такого контрола. Если только ты сам его не напишешь. Предупреждаю сразу: писать собственные компоненты доступа к данным - задача, за которую, надеюсь, мне не придется браться никогда в жизни. В смысле, реализация новой технологии (а TClientDataSet для Басика - это именно новая технология).

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 09.06.2004 (Ср) 13:39

Есть компромисный вариант. Напиши на Делфях компонент / приложение / библиотеку (нужное подчеркнуть) с использованием TDataSet, который будет получать данные и транслировать их во что-нибудь удобоваримое... А с компонентом работай уже на VB. Если com-интерфейс изначально затачивался под делфийские компоненты, ИМХО, работать с ним на чем-нибудь другом - проще удавиться.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 10.06.2004 (Чт) 12:04

Четырехслойная архитектура... Да еще и ActiveX COM/СОМ+ объект на дельфях ваять... Slaz, учил бы ты лучше Дельфи. Сразу, просто и без извратов :) .

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 11.06.2004 (Пт) 10:34

Ну, если напрямую с сервера данные не выцепить... Я так думаю, что писать интерфейс надо на знакомом языке. Гимора меньше. А то, как программа получает данные, юзверю знать не положено. Главное, что она работает :)

slaz
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 02.06.2004 (Ср) 15:54

Сообщение slaz » 16.06.2004 (Ср) 14:39

Все ясно, тему будем считать закрытой.

Цельну неделю отплевываясь пишу на Дельфях.
Лично для меня сравнение Дельфы с Басиком как блокнот с Word'ом - до хрена ручной работы... вспоминается дедушка VC++.

Что ж...
Всем спасибо за участие!

А тем кто пишет интерфейсы, ориентированные на один конкретный компилятор, должно быть стыдно!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.06.2004 (Чт) 10:03

Какой он нафиг дедушка :)

Интерфейсы бывают поддерживающие IDispatch и не поддерживающие. Не поддерживающих больше :)
Проблема в получении данных? Или в невозможности работы с уже полученными?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList