Я знаю, что не совсем понимаю вашу модель данных. Однако попробуйте заменить таблицы BOM и BomTable на производную таблицу, подобную этой, которая даст вам по одной строке для каждой записи Child с наибольшим значением Childrev без использования GROUP BY. [112 ]
SELECT *
FROM (
SELECT *
, ROW_NUMBER() OVER (PARTITION BY Child ORDER BY Childrev DESC) AS ROW_NBR
FROM BOM
) AS x
WHERE x.ROW_NBR = 1;
Вот документация для OVER Clause .
Noel
Я корректен в вере, что не необходимо отметить тот класс как экспортируемое использование __ declspec, если Вы только собираетесь вызвать виртуальные или подставляемые функции на его экземплярах?
Да, это корректно, и это - то, что COM делают, DLL только expotys 4 метода, один из них возвращается к фабрике классов, которая все ее участники являются чистыми виртуальными функциями.
С другой стороны действительно ли необходимо экспортировать объявление класса, если Вы хотите назвать статически определенные функции членства?
Нет, просто экспортируйте статические функции членства.
Это не необходимо, только если функция/класс имеет все, с чем это является определение в заголовочном файле. Это не иждивенец на виртуальности.
Так, если Вы не экспортируете весь свой класс, это применимо клиентским кодом до него, не имеют никакого общедоступного или защищенного функционального определения в cpp файле.
Можно также объявить только, что определенные функции членства экспортируются вместо целого класса, при помощи __ declspec в объявлении функции а не в объявлении имени класса.
Я корректен в вере...
Да я думаю так, но:
Необходимо протестировать это (я не могу в данный момент),
Вы могли бы хотеть остерегаться использования встроенные методы: потому что при изменении их позже затем, необходимо восстановить любой компонент, который зависит от (был создан с), этот класс (т.е. DLL больше не вообще хорошо изолирован или автономный... встроенные методы в порядке в единственном DLL, но способствующие своего рода 'аду DLL', если используется в экспортируемом интерфейсе DLL).
С другой стороны действительно ли необходимо экспортировать объявление класса, если Вы хотите назвать статически определенные функции членства?
Если не целый класс, необходимо экспортировать, по крайней мере, те отдельные статические методы.
Изменение имен C ++ является препятствием на пути к успеху написания модулей кросс-компилятора, просто объявите класс, который вы хотите предоставить, как интерфейс, не содержащий ничего, кроме виртуальных функций. Компоновка класса с виртуальными функциями может быть «стандартизирована», подумайте о COM.