powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DataTable to Variant
15 сообщений из 15, страница 1 из 1
DataTable to Variant
    #32863820
Azart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема в следующем: написал ДЛЛ(VB.NET) в ней есть функция
Public Function gettable(ByVal query As String) As DataTable - возвращает таблицу данных.
Подключаю ДЛЛ в .NET - всё работает нормально.

НО надо чтоб всё это работало в 6 Судии, а там нету такого типа(DataTable). Чтоб не переписывать ДЛЛ в 6 студии принято решение возвращать Variant.
Но я не знаю как конвертнуть DataTable to Variant. Может кто знает???
...
Рейтинг: 0 / 0
DataTable to Variant
    #32863853
Фотография Лиман Артём
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО так не получится, если будете возвращать вариант (он же object в .НЕТе), то все равно на получателе должен быть тзвестен тип DataTable.
Решение вижу такое - возвращать XML'ое представление таблицы, может это и изврат...
а для чего тебе в 6 васик возвращать .нетовскую таблицу?
...
Рейтинг: 0 / 0
DataTable to Variant
    #32863872
Фотография Лиман Артём
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя попробуй так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Imports System.Runtime.InteropServices
<ComClass()> _
Public Class ComTest
    <ComVisible(True)> _
           Public Function Test() As DataTable
        Return New DataTable
    End Function
end class
у меня 6 студии нет, так что пишу наабум, может проканает)
...
Рейтинг: 0 / 0
DataTable to Variant
    #32863877
Фотография Лиман Артём
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не чето я туплю, если уже в 6 студии что-то работает, то так и было сделано)))
...
Рейтинг: 0 / 0
DataTable to Variant
    #32863899
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AzartПроблема в следующем: написал ДЛЛ(VB.NET) в ней есть функция
Public Function gettable(ByVal query As String) As DataTable - возвращает таблицу данных.
Подключаю ДЛЛ в .NET - всё работает нормально.

НО надо чтоб всё это работало в 6 Судии, а там нету такого типа(DataTable). Чтоб не переписывать ДЛЛ в 6 студии принято решение возвращать Variant.
Но я не знаю как конвертнуть DataTable to Variant. Может кто знает??? Возможно стОит подумать над тем, чтобы для вызова из VS 6 отдельный метод возвращал обычный ADO (не ADO.net) Recordset, для того же самого query

Для этого придется к DLL подключить библиотеку ADO 2.X (не ADO.Net)

Не утверждаю, что это решение лучше, чем приведение DataTable к какому-то "общеупотребимому" типу или сериализация его в XML, но может быть
...
Рейтинг: 0 / 0
DataTable to Variant
    #32863948
Azart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автора для чего тебе в 6 васик возвращать .нетовскую таблицу?
возвращаю я её не в 6 Бейсике, а в 6 С++ - хотя мне кажется большой разницы нету.

Лиман Артём, в вы уверены, что Variant в 6 и 7 студии разные типы?

По ходу решения проблемы возник вопрос, а String в 6 и 7 студии одинаковые, если нет, то Public Function gettable(ByVal query As String) As DataTable - ХЗ как получать query(мне её передают из 6 студии)?

Вообще типы 6 и 7 студии совместимы???

Пока проверить выши варианты нет возможности, тоже не стоит 6 студия :).
...
Рейтинг: 0 / 0
DataTable to Variant
    #32863960
Фотография Лиман Артём
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>в вы уверены, что Variant в 6 и 7 студии разные типы?
а черт его знает, в 6 васике был такой тип вроде, равнозначный ему сделали общий тип object, кем он вылезит в 6 студии? - бес его знает, возможно, если метод помечен как сом, то враппер конвертнет его в сродный тип, но как дальше ты с ним сможешь работать я не знаю...

насчет стринга вроде должно быть все нормально, если можна из .НЕТ вставить в апи функцию строку, то думаю и возвратить в сом ее можна...
но стринг это простой тип, а вот таблица посложней будет, мне кажется, что вариант тут не поможет...
...
Рейтинг: 0 / 0
DataTable to Variant
    #32863997
Azart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Знать бы что поможет.

XML'ое представление таблицы - это мне кажется странным, вроде 6 студия не рюхает XML, там вроде даже парсера нету по нему.

Если строковый тип одинаковый, то можно взять все Row из Datatable и попробывать запихать в строку и передавать эти строки. Хотя тоже изврат.
...
Рейтинг: 0 / 0
DataTable to Variant
    #32864009
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AzartЗнать бы что поможет.
Почему вам не последовать совету AlexeyKudinov?
Ведь примеров работы с ADO2х из .NET много.
А вот примера работы с Variant я не видел.
Когда-то изучал структуру этого типа, и ссылку обязательно бы заметил.
...
Рейтинг: 0 / 0
DataTable to Variant
    #32864021
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AzartXML'ое представление таблицы - это мне кажется странным, вроде 6 студия не рюхает XML, там вроде даже парсера нету по нему.
"Рюхает"
Достаточно подключить к проекту библиотеку MSXML.dll (есть несколько версий)
...
Рейтинг: 0 / 0
DataTable to Variant
    #32864024
Azart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВозможно стОит подумать над тем, чтобы для вызова из VS 6 отдельный метод возвращал обычный ADO (не ADO.net) Recordset, для того же самого query
Для этого придется к DLL подключить библиотеку ADO 2.X (не ADO.Net)

Мне не совсем понятно, что сдесь к чему. ADO 2.X я должен подключить к своей ДЛЛ и возвращать не DataTable, а Recordset. И в 6 студии Recordset не будет проблем с Recordset?

P.S: Я пиш ДЛЛ в 7 студии, а её будут юзать другие люди из 6 студии. Причём им эти данные ещё надо будет модифицировать.
...
Рейтинг: 0 / 0
DataTable to Variant
    #32865382
Azart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где можно взять ADO 2.X?
Может возможно подключить к 6 студии библиотеку, которая описывает DAtaTable, так чтобы её стал известен этот тип данных и тогда проблема должна исчезнуть.
...
Рейтинг: 0 / 0
DataTable to Variant
    #32865387
Azart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Microsoft ADO Ext 2.x for DDL and Security это оно? :)
...
Рейтинг: 0 / 0
DataTable to Variant
    #32865574
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AzartMicrosoft ADO Ext 2.x for DDL and Security это оно? :) Нет, не оно.
Оно - Microsoft ActiveX Data Objects 2.x Library
Поставляется с Mdac и бывает разных версий. Mdac обычно появляется на машине вместе с IE, но его ставят и другие программы
AzartМожет возможно подключить к 6 студии библиотеку, которая описывает DAtaTable, так чтобы её стал известен этот тип данных и тогда проблема должна исчезнуть. Нет, DataTable не описывается в ActiveX библиотеке, подключить не удастся.

Еще раз, мне кажется, что вы не совсем понимаете его вы хотите добиться. " Я пиш ДЛЛ в 7 студии, а её будут юзать другие люди из 6 студии. Причём им эти данные ещё надо будет модифицировать " - спросите у "других людей" в каком виде они хотят данные. Возможно, что Recordset им и не к чему совсем.
В общем случае - .net понимает и относительно неплохо работает с ActiveX объектами, которые можно создать в VB6 (например). Vb 6 же .Net объекты не понимает совсем (если они не "обернуты" как ActiveX)

П.э. для совместной работы скорее всего придется использовать в .Net объекты, созданные в 6 студии. Объясните это "другим людям", пусть они выдадут вам класс или интерфейс, который им нужен, этот класс положат в ActiveX библиотеку, которую вы подключите к своей .Net библиотеке. Затем в своем методе создадите экземпляр этого класса, наполните данными и вернете назад.
...
Рейтинг: 0 / 0
DataTable to Variant
    #32865820
Azart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поговорил с "этими людьми". Они мне придоставляют свой Variant, я его . Оконверчу в строкубрабатываю получаю DataTable.
И в ответ они хотят получать массив Вариантов. Который потом используют для своих целей.

До изменений они получали Ройсеты, обрабатывали и заполняли ими списки. Наверно проще будет сесть на VB6 и всё там написать!
Но мне сказали пиши хоть на 6 Бейсики, но возвращай нам массив вариантов - хз где их проще создавать??? Но зато они мне могут сразу кидать Стринг, а не Вариант. Хотя это не облегчает задачу :)
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DataTable to Variant
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]