Вопросы по Team Developer
2.0. Общие сведения
2.1. Проблемы и их решения
- Как при работе с АХ WORD получить автора документа? При работе с классами BuildInProperties Document мы не можем найти в описании нужного класса. Что делать?
- Можно ли с Gupta Report Builder работать с помощью АХ механизмов из приложений, созданных с помощью Gupta TD?
- Можно ли настроить среду разработки Centura так, чтобы повысить продуктивность нашего коллектива?
- Как создавать WEB - приложения с помощью GTD?
- Я строю распределенное приложение для Internet. Следует ли мне создать приложения Web apps для Web App Manager или компоненты COM для MTS?
- До сих пор я ни разу не создавал COM-объект на каком-нибудь языке программирования. Трудно ли это?
- Я уже создавал COM-объекты с помощью Visual Basic. Похоже ли на это создание COM-объектов с помощью CTD 2000?
- Присутствует ли в ПО, поставляемом нашей компанией, в "генераторах отчетов" Centura/Gupta "интеграция с Active Directory" или необходимо приобретать данный сервис отдельной статьей?
- Прошу Вас выяснить, можно ли заставить старые 16-разрядные exe-приложения на Gupta 5.xx, а также утилиту Quest 3.0 работать с локальным однопользовательским сервером Centura SQLbase 7.50 и выше?
- На семинаре представители ГУПТы говорили о возможности использования технологии XML при формировании отчетов с помощью RB. Как это можно применить в информационных системах?
- На одном компьютере установлена клиентская часть CTD2000 и TD3. Если запускать приложение из под TD30, а потом CTD2000 - ломается приложение под CTD2000, если CTD2000, а потом TD30 - ломается приложение TD30( ломается - cdlliXX.dll ). Что делать?
- Как при форматировании цифровых (Number) (GTD) полей ввода данных сохранить лидирующие нули? (Например, для ввода номера паспорта.)
- Как в DataBaseExplorer можно выгрузить таблицу из одной базы в текстовый файл, чтобы потом загрузить в таблицу другой базы?
- Можно ли из программы на TD передавать структуры данных в DLL, созданных в среде СИ/СИ++?
- Можно ли из-под CTD запустить фоновый процесс?
- Меня интересует возможность публикации сложных отчетов на корпоративном сайте с помощью REPORT Builder. Какие существуют варианты построения информационной системы при таком подходе?
- Не проходит реорганизация БД. Что делать?
- Требуется ли обновление клиентских компонент, если обновлена версия сервера баз данных (5.x - 9.x)?
- Где можно взять файлы, необходимые для поддержки русского языка в SQLBase?
- Как можно запустить SqlTalk, чтобы выполнить сценарий автоматически?
- Как сделать, работая в GTD, в окне диалога, чтобы после ввода информации в поле ввода при нажатии клавиши ENTER сразу срабатывала кнопка подтверждения?
- При загрузке текста работающей программы в TD 2.1 в TD 3.0 вызов окна настройки свойств для класса Qtabs не производится. Для новых программ в TD 3.0 все работает. Что можно предпринять?
- Как динамически определить число строк и столбцов в таблицах TD, если не работаешь с БД (там объем выборки известен)?
- В документации на GTD/CTD сказано (хотя очень кратко), что можно заносить информацию в заголовочный столбец стандартных таблиц. Мы не можем добиться этого. Что делать?
- Можно ли в GTD выполнять рекурсивный вызов функций и рекурсивно объявлять в классах объекты?
2.2. Особенности новых версий Средств Разработки
2.3. Сообщения об ошибках в программных продуктах и их разрешение
- При большом объеме кода (более 100 Мб) Centura отказывается компилировать приложение. Что делать?
- При работе с классом MSXML2_IXSLTemplate и его методом PropSetstylesheetByRef появляется ошибка компиляции. Это нужно для работы процессора XSLT. Как избавиться от ошибки?
- При работе с XML элементами компиляция не выполняется для метода PropGetchildren класса MSXML2_IXMLElement2. Что делать?
- При тестировании новой версии мы столкнулись с проблемой, которая заключается в ошибке при загрузке исходного текста программ, работающих на старых версиях. Что можно предпринять?
- При попытке распечатать OUTPUT (SQL Talk) в TD 2.1 или выдаётся сообщение об Ошибке и приложение снимается. Что делать?
- При работе с DBExplorer в TD 2.1 в поля БД FLOAT 8 при выводе информации в закладке "data" число округляется до 16 цифр. Как это исправить?
- При вызове почтовой системы из приложений на TD нет доступа к почтовым ящикам OUTLOOK. В чем ошибка?
- При закрытии SQLBASE на Novell, выдаетсясообщение "1.1.14 Module did not release 1152 resources". В чем заключается проблема?
- Появляется сообщение об ошибке 'duplicate server ' при попытке установить SQLBase на Novell. Что делать?
- Появляется ошибка 182 при попытке сделать копию на Novell сервере. Что это означает?
- При установке SQLConsole 6.0 и выше не удается создать локальную базу данных! Почему?
- Ошибка: Connection is busy with results for another hstmt. Как исправить?
- Вопрос по продукту Team Developer 3.1.0-PTF2 Build 13582. Внастройках Project - Build settings - Version поля Language и Encoding невозможноотредактировать, онипусты. Есть ли возможность это исправить, а то данные, скопированные из программы в буфер, неправильно раскодируются операционной системой.
- Поддерживаются ли в GTD статдарты Internet: Java, Java Script, JDBC?
- Поддерживаются ли в CTD 2000 промышленные стандарты: TCP/IP, CORBA?
- Поддерживается ли в GTD стандарты Microsoft: ActiveX, OLE, DCOM, ODBC?
- Почему при выполнении запроса, содержащего хранимые функции, которые возвращают VARCHAR2 (VARCHAR), результаты не передаются в приложение?
- Quest при обращении к базе дает ошибку Invalid SET parametr. А WinTalk вообще не видит базу по ODBC.
2.4. Реализация пользовательского интерфейса
2.5. Миграция приложений по версиям и подключение к другим СУБД
2.6. Разное
2.0. Общие сведения
Вопрос: Что такое GTD?
Ответ: Centura Team Developer - это передовая интегрированная среда разработки (Integrated Development Environment, IDE), предлагаемая компанией Centura для создания 32-разрядных бизнес-приложений на платформе Windows. Centura Team Developer предоставляет профессиональным разработчикам средства, необходимые для создания масштабируемых отказоустойчивых распределенных бизнес-приложений для Веб и клиент/серверных вычислений. CTD 2000 обеспечит вашему коллективу разработчиков мощь, продуктивность и гибкость, необходимые для создания приложений, удовлетворяющих стратегическим бизнес-требованиям.
Вопрос: Зачем нужен CTD 2000?
Ответ: В современной программной среде электронной коммерции разработчикам следует стремиться удовлетворить потребности самых разнообразных клиентов. Для поддержки разработчиками веб-клиентов, полностью автоматизированных клиентов, работающих без участия человека, мобильных устройств и других, пока еще не изобретенных клиентов, приходится выходить за рамки персональных компьютеров, использующих Windows. В результате на разработчиков ложится достаточно тяжелая ноша. Они ищут пути расширения существующих бизнес-систем для обслуживания как внутренних, так и внешних заказчиков. Усиление отдачи от существующих данных и систем является решающим фактором сохранения времени, денег и ресурсов. Centura предоставляет инструменты, помогающие разработчикам создавать, разворачивать и объединять программные продукты с системным ядром бизнес-логики.
Вопрос: Что такое SAL?
Ответ: Scalable Application Language. Расширяемый язык приложений (Scalable Application Language, SAL) – это сердце Centura Team Developer. Будучи полностью объектно-ориентированным и включая более 700 функций, SAL имеет все возможности для реализации самых сложных бизнес-транзакций. Кроме того, SAL обеспечивает разработчикам полный контроль над средой выполнения программ, включая доступ к операционной системе, манипуляцию внешними источниками данных, интеграцию с другими приложениями и пакетами.
Вопрос: Какие типы приложений можно строить с помощью CTD 2000?
Ответ: Centura Team Developer – это идеальное средство для проектных коллективов, строящих вертикальные бизнес-приложения, для которых нужны расширенные возможности доступа к данным и усложненная бизнес-логика, в особенности, когда необходимо адаптировать приложения к быстро меняющимся требованиям. В качестве примеров стандартных вертикальных приложений можно назвать системы планирования ресурсов предприятия, автоматизации торговли, управления взаимоотношениями с клиентами, производства, страхования, банковского дела, системы снабжения, а также юридические и системы и документооборота.
Не исключено, что ваша деятельность связана с разнообразными приложениями и системами, от электронной почты до веб-серверов, от электронных таблиц до текстовых процессоров, программ планирования и так далее. Centura Team Developer обеспечивает плотную интеграцию с внешними приложениями и технологиями, что позволяет создавать новые и впечатляюще выглядящие системы, развивая и расширяя любые существующие приложения и используемые вами технологии. Например, можно создать более плотные рабочие связи между коллективами разработчиков, используя имеющуюся у вас систему электронной почты и средства Centura Team Developer для разработки технологических решений. Или можно встроить веб-броузер или ftp-клиента в приложение Centura Team Developer и, тем самым снабдить пользователей вашего предприятия всем разнообразием новых данных. Поскольку создаваемые вами приложения увеличиваются в размерах по мере развития вашего бизнеса, вы можете инкапсулировать бизнес-логику в компоненты COM и развернуть их с помощью Microsoft Transaction Server для получения возможности n-звенного масштабирования.. И конечно же, CTD открыт для любых приложений, использующих такие стандарты Microsoft, как COM, DCOM или ActiveX.
Вопрос: Что такое Team Object Manager и как он повышает эффективность разработки?
Ответ: При разработке приложений для предприятия вам может понадобиться скоординировать усилия не одного-двух программистов, а целой группы. Поэтому Centura Team Developer поставляется с Team Object Manager, представляющим собой полнофункциональную систему управления исходным кодом и компонентами, которая координирует работу вашего персонала с программным кодом и данными. Основываясь на центральном репозитарии, Team Object Manager хранит все компоненты и обеспечивает полный контроль версий для управления конфигурацией проекта. Кроме того, мощный инструмент отслеживания компонентов помогает найти многократно используемые объекты, что позволяет сохранить время и деньги для будущих разработок.
Вопрос: С какими базами данных может соединяться CTD 2000?
Ответ: Взаимодействие баз данных является решающим компонентом практически любого бизнес-приложения. Centura Team Developer может естественным образом подключаться ко многим базам данных, включая Oracle, SQL Server, Sybase, Informix, SQLBase, DB2 и CA-OpenIngres, а также ODBC. Подобная коннективность означает, что ваши приложения могут манипулировать любыми объектами родной базы данных (например, хранимыми процедурами), или параллельно соединяться не только с разными однотипными базами данных, но и с базами данных различных производителей. Наряду со встроенной коннективностью, также важна родная языковая поддержка доступа к базе данных SQL. Программисты, использующие другие языки, постоянно утверждают, что какие бы преимущества не предлагались этими языками, все же они отдают предпочтение Centura’s Scalable Application Language (SAL) для доступа к базам данных. Если данные являются основой вашей деятельности, а так чаще всего и бывает, то SAL – это язык программирования для вас.
Вопрос: Как можно автоматизировать работу предприятия с помощью GTD?
Ответ: CTD способен подключаться к любым данным предприятия, которые поддерживают интерфейс COM. Например, можно объединить приложение CTD с Microsoft Outlook и получить возможность использовать в своем приложении функции планирования и электронной почты. Кроме того, CTD предоставляет библиотеку e-mail, так что вы сможете соединяться с серверами e-mail непосредственно через MAPI. CTD обеспечивает подобную библиотеку для Lotus Notes, а также источник OLE DB, который позволяет соединяться с Lotus Notes как с источником данных SQL. Более того, другой источник OLE DB дает возможность запрашивать любой источник данных XML, как если бы это был источник данных SQL. Это значительно упрощает программирование приложений электронной коммерции business-to-business. Centura также предоставляет Interface for R/3 (поставляется отдельно), который обеспечивает программистов утвержденным BAPI способом взаимодействия с данными и с бизнес-логикой в системе SAP R/3.
Вопрос: Совместимы ли Centura Interface для R/3 и CTD 2000?
Ответ: Да. Centura Interface для R/3 не зависит от версии Centura Team Developer; Версия 2 Interface для R/3 сертифицирована для CTD 1.1.2, CTD 1.5.1, и CTD 2000.
Вопрос: Планируем использовать программные продукты фирмы Centura/Gupta для разработки прикладного программного обеспечения. Какие средства могут быть использованны для создания инсталяции готового программного продукта.
Ответ: Специальных средств для создания инсталяций приложений в Centura пока не предусмотрено. Можно воспользоваться широко распространенным средством InstallShild или другими. Можно сделать и собственные.
Вопрос: Где можно найти дополнительную информацию о продуктах компании Centura?
Ответ: На сайтах http://www.centurasoft.com и http://www.interface.ru
Вопрос: В чем преимущества работы c продуктами Centura?
Ответ: Некоторая информация, в которой есть характеристика CTD2000, содержится на сайте www.inteface.ru в статьях, посвященных продуктам Centura. Хотя, я думаю, Вы с ней знакомы. В дополнение, и особенно для руководства, можно сформулировать следуюшие опорные критерии обоснования:
- Centura дает комплексное рещение (Есть родные средства разработки, СУБД, WEB поддержка, современные ОС, репликации, все уровни программирования - от C++ до Quick Object).
- Есть поддержка, причем с 12-летней историей, всех мощных СУБД Oracle, SQLBase, Sybase, MS SQL Server и других.
- Развитые и адаптированные под современные требования средства построения пользовательского интерфейса, причем программирование при минимуме ограничений намного проще, чем на C++ и Pascal (в 2-3 раза) (студенты осваивают CTD и делают на нем курсовую за 2-3 недели).
- Фирма Centura сейчас довольно устойчиво закрепилась на рынке, у нее мощнейший заказ для ВМФ США.
- В CTD 2000 много новых возможностей (AX, MS OLE DB, динамика объектов и т.д.) и исправлены предыдущие ошибки. Можно привести еще много аргументов, но и эти должны быть услышаны.
Вопрос: Как выбрать подходящее средство разработки?
Ответ: Короткий ответ:
Ответ на поставленный вопрос зависит от целого ряда факторов и условий, уточнение которых поможет выбрать подходящее программное обеспечение для поставленной задачи. По грубой оценке задачи можно предложить проверенные на практике многих разработчиков средства: для разработчиков Centura Team Developer (1.2 - 2.0) - SQLWindows/SQLWindows32, а для хранения данных SQLBase 6.1/7.5.
Возможный распространенный ответ:
Ответ на поставленный вопрос зависит от целого ряда факторов и условий, из которых можно выделить следующие главные:
- Ориентировочные объемы БД (Мб - Гб)
- Количество пользователей в системе (возможно и однопользовательский вариант)
- Предполагаемая стоимость работ
- Квалификация разработчиков и программистов, доступных для проекта
- Требования к быстродействию, надежности и стоимости при эксплуатации системы.
- Другие факторы, существенные для конкретной реализации.
Если хотя бы ориентировочно определены перечисленные факторы, то выбор состоит все-таки из ограниченного числа вариантов:
- Большие, затратные системы с большим числом рабочих мест, иерархической структурой, разработчики высокой квалификации, большие затраты на эксплуатационное ПО, трудоемкой эксплуатацией, числом рабочих мест >20, длительным этапом проектирования, разработки и внедрения - СУБД - ORACLE и его родные средства разработки программного обеспечения (либо SYBASE, либо INFORMIX).
- Системы средней размерности, число рабочих мест от 3-15, разработчики квалификации средней или чуть выше, сносными требованиями проектированию, затратам на ПО и стоимости эксплуатации, легкость в сопровождении - СУБД SQLBase и средства разработки SQLWindows/ SQLWindows32 (Centura Team Developer CTD 1.5 - 2.0) фирмы CENTURA/Gupta ( либо MS VB + MS SQLServer). Кроме того, для данного случая может быть хорошим с точки зрения быстродействия и стоимости вариант использования RDM/ROM(средства разработки RAIMA DATA MANAGER и разработки RAIMA OBLECT MANAGER), С++ (например Inprise) и Velocis(СУБД) при числе рабочих мест до 5-ти.
- Для малых систем, однопользовательских систем и систем с числом РМ до 5-ти, эффективным будет применение С++ (Borland C++Builder предпочтителен по надежности ПО), правда для квалифицированных программистов, и API для работы с БД (DBD - BDE и др.), а также средств RDM/ROM (или средств этого же уровня) + СУБД Velocis, при требованиях к программистам чуть ниже целесообразно использование продуктов CENTURA (SQLWindows/ SQLWindows32 Centura Team Developer CTD 1.5 - 2.0), которые имеют и однопользовательский вариант и развитые возможности выхода на С/С++. Возможным вариантом является применение VB и настольных СУБД (MS Access) для программистов более низкой квалификции.
- Самым дешевым и простым способом является использование систем электронных таблиц типа MS EXCEL, однако, никакой гибкости, ненадежность и сложности в обучении пользователей гарантированы.
Вопрос: Не можете ли Вы подсказать, какую литературу можно использовать для разработки COM+ в среде Gupta TD?
Ответ:
- К сожалению, кроме стандартной документации, которая входит в состав поставки продукта (dev.pdf) ничего не могу порекомендовать.
- Однако, можно с успехом воспользоваться книгами для разработки СОМ+ для СИ++ и для VB, которые есть в продаже. В частности, одна из книг, на мой взгляд, заслуживает особого внимания. Привожу ее данные: Роберт Дж. Оберг "СОМ+ технология, основы и программирование", М., изд. "Вильямс", 2000, 478с. Вы можете заказать эту книгу в Интернет-магазине ITshop.ru, а примеры для книги скачать с сайта www.williamspublishing.com.
23.12.04
Вопрос: Есть ли в GTD средства проектирования БД или необходимо приобретать другие продукты?
Ответ:
- Проектирование структур БД можно выполнять в среде TD. Существует две возможности:
- Визуальное описание и генерация таблиц и полей БД в интерактивном режиме с возможностью заполнения таблиц данными в удобной форме.
Это может быть выполнено непосредственно в среде TD в подсистеме Data Base Explorer, которая запускается в пункте меню Tools для подключения к БД SQLBase; пароль задавать не обязательно.
- Вторая возможность визуального проектирования БД на логическом и физическом уровне предоставлена в подсистеме Team Object Manager (ТОМ), которая является мощным CASE средством, ориентированном на командную разработку проектов. В этой подсистеме предусмотрена БД репозитория, сопровождение всех модулей проекта включая и модели БД, создание разнообразных стандартных и собственных отчетов по процессам разработки. Визуальное моделирование БД выполняется с помощью графического редактора и обеспечивает генерацию реальной БД для SQLbase и диаграмм по БД.
Доступны возможности определения связей, триггеров и хранимых процедур, ключей и условий контроля целостности БД. И т.д. TOM обеспечивает интеграцию с SQLWindows и другими продуктами, используемыми для поддержки проектирования, разработки и сопровождения программных систем любой сложности.
- Конечно, данная подсистема несколько уступает ERWIN (в части возможностей проектирования БД и разных представления БД), но то, что в ТОМ все объединено в единый комплекс, является преимуществом.
01.02.06
Вопрос: Где можно найти описание примеров для GTD?
Ответ: Описание примеров из каталога CTD\Samples дается в тех разделах документации, где описаны данные возможности CTD. Например, описание WEB-приложений дано в книге webdev.pdf, где описаны классы и технологии работы с WEB-приложениями.
Вопрос: Что такое среда разработки клиент-серверных приложений Gupta? Интересует самый минимальный и, соответственно, дешевый вариант, который позволил бы делать приложения под MS SQL.
Ответ:
- Среда разработки клиент-серверных приложений Gupta - это Team Developer (TD, старые названия: GUPTA SQLWindows, Centura Builder, Centura TD). Развитые и открытые для развития средства для разработки информационных систем любой сложности. Работает напрямую с разными СУБД, включая и MS SQL. Включает все современные технологии (WEB, СОМ и др.). Базируется на структурном языке типа СИ, который имеет дополнительные возможности и средства для объектно-ориентированного программирования. Подробнее в статьях на нашем сайте. Работает и развивается с 1987 года.
- Для разработки приложений под MS SQL, достаточно иметь TD любой версии. Последняя версия 3.0 (январь 2003 года).
06.06.2003
2.1. Проблемы и их решения
Вопрос: Как при работе с АХ WORD получить автора документа? При работе с классами BuildInProperties Document мы не можем найти в описании нужного класса. Что делать?
Ответ:
- Действительно в описании АХ библиотеки (Apl) WORD не представлены все необходимые классы. Поэтому организация доступа к списку параметров (BuiltInDocumentProperties) затруднена. Я предположил, что элемент этого списка эквивалентен элементу списка CustomDocumentProperties, а работа для него определена в классах АХ и описании АХ WORD. Эта гипотеза оказалась правильной.
- В данном списке автор документа имеет 3-й номер (item). Пример доступа к списку и параметрам в SAL приведен ниже, но уже без комментариев:
!! Загрузка списка документов
If not W.CreateObject('Word.Application.11')
Call SalMessageBox('Невозможно загрузить Word','WordReport',MB_IconStop)
! Установка режима обработки ошибок
Call SalActiveXAutoErrorMode( FALSE )
! Получение объекта - списка документов приложения WORD 0Docs
Set bOk =W. InvokeID(0x6, INVOKE_GET)
Call W.PopObject(-1,oDocs)
Call W.FlushArgs()
! Открытие нового документа без присвоения имени
Call vObect.SetBoolean(FALSE)
Call vObect.MakeOptional()
Call oDocs.PushVariant(vStr)
Call oDocs.PushVariant(vObect)
Set bOk = oDocs.Invoke("Add", INVOKE_FUNCTION)
Call oDocs.PopObject(-1,oDoc)
Call oDocs.FlushArgs()
! Получение списка BuiltInDocumentProperties
Set bOk = oDoc.Invoke("BuiltInDocumentProperties", INVOKE_GET)
Call oDoc.PopObject(-1,oDocsBuiltPropCol)
Set nCount = oDocsBuiltPropCol.Count( )
Call oDocs.FlushArgs()
! Достаем конкретный ITEM oDocsBuiltProp VT_I4
Call nVar.SetNumber( 3, VT_I4 )
! Пример вызова по имени атрибута - Call nVar.SetString( "Author" )
Call oDocsBuiltPropCol.PushVariantByRef(nVar)
! здесь нужно обязательно INVOKE_GET (хотя в сгенерированной APL
! - INVOKE_FUNCTION )
Set bOk = oDocsBuiltPropCol.Invoke("Item", INVOKE_GET)
Call oDocsBuiltPropCol.PopObject(-1, oDocsBuiltProp)
Call oDocsBuiltPropCol.PopVariant(0, nVar)
Call nVar.GetString( strAutor )
Call oDocsBuiltPropCol.FlushArgs()
! Из проперти oDocsBuiltProp достаем автора !!!
Set bOk = oDocsBuiltProp.Invoke("Value", INVOKE_GET)
Call oDocsBuiltProp.PopString(-1, strAutor)
Call oDocsBuiltProp.FlushArgs()
Call SalMessageBox( strAutor, strAutor, MB_Ok )
20.07.06
Вопрос: Можно ли с Gupta Report Builder работать с помощью АХ механизмов из приложений, созданных с помощью Gupta TD?
Ответ:
- Вообще для работы с Report Builder лучше использовать стандартные механизмы: будет и быстрее и надежнее. Кроме того, Вы сократите сроки проектирования и отладки.
- Однако, так как Report Builder устанавливается также как COM класс на компьютер, где инсталлированы средства разработки, то он становиться доступным для использования, как из приложений TD, так и любых других средств, которые поддерживают АХ технологии.
- Для доступа из TD нужно обычным образом сгенерировать интерфейсную *.APL, с помощью АХ Explorer, а затем работать, так как вы работаете с СОМ объектами, это описано в документации. К сожалению, не нашел детального описания классов RB, поэтому приходиться действовать методом проб и ошибок, опираясь на краткое описание методов из АХ Explorer и собственную интуицию.
05.07.06
Вопрос: Можно ли настроить среду разработки Centura так, чтобы повысить продуктивность нашего коллектива?
Ответ: Любой желающий избежать выполнения повторных задач и упростить разработку оценит выгоду утилит и мастеров. Centura Team Developer является единственным инструментом на современном рынке разработки приложений, позволяющим создавать собственные расширения среды разработки.
Centura Developer Extensions Kit (CDK) дает возможность разрабатывать дополнения к среде разработки Centura, что может упростить выполнение сложных и повторно возникающих задач, автоматически генерировать код, или что бы то ни было для ускорения и облегчения процесса разработки. Вы можете создать собственных мастеров проектирования приложений – инструменты профилирования кода, генераторы кода и расширенные отладчики. В настоящее время практически в любой деятельности необходимо проанализировать, как на нее влияет Веб. Во многих видах деятельности ищутся пути улучшения интерактивности собственных сайтов Intranet, Extranet, или Internet. Именно поэтому Centura Team Developer предоставляет опцию для установки одного и того же приложения и как стандартного приложения Windows, и как веб-приложения.
Любое приложение CTD, построенное с помощью библиотеки классов Web QuickObjects может быть развернуто в Веб с помощью Web App Manager – предлагаемого Centura сервера приложений для Веб. Эти приложения опознают, запущены ли они как приложения Windows или Веб, и показывают интерфейс пользователя как нормальный Windows User Interface или как представление HTML в броузере с теми же полями, кнопками и конфигурацией экрана. CTD включает патент Web App Manager на разработку, так что программисты могут тестировать свои приложения, предназначенные для Веб. Возможности Web App Manager включают настройку и распределенную архитектуру, что позволяет справляться с возможно высокой частотой использования веб-приложений. Благодаря двойной установке Centura в расчете на Веб и Windows, вам не нужно дважды писать одно и то же приложение.
Вопрос: Как создавать веб-приложения с помощью CTD 2000?
Ответ: Сейчас существует два способа построения веб-приложений с помощью CTD. Вы можете создать визуальные объектно-ориентированные серверные приложения, автоматически отражающие содержимое Веб, или невидимые объекты COM, использующие бизнес-логику и динамические данные для основанных на использовании шаблонов серверов приложений типа ASP и Cold Fusion.
Вопрос: Я строю распределенное приложение для Internet. Следует ли мне создать приложения Web apps для Web App Manager или компоненты COM для MTS?
Ответ: Почему не сделать и то и другое? Для максимальной расширяемости и многократного использования можно ввести свою бизнес-логику в компоненты COM, развертываемые на Microsoft Transaction Server. Тогда вы сможете использовать ту же бизнес-логику не только из Веб, но и из других клиентов. В качестве пользовательского веб-интерфейса можно воспользоваться любым популярным сервером веб-приложений, объединяющим компоненты COM, например, Active Server Pages, Cold Fusion, или SilverStream. Или можно вставить свои компоненты COM в приложения Web Centura Web, отображающие динамически генерируемый веб-контент, например, XML, DHTML или cookies.
Хотя это может быть сделано с помощью макроязыка на сервере, вы, вероятно, обнаружите, что Centura’s Scalable Application Language (SAL) обеспечивает большую мощность, большие возможности повторного использования и расширенные средства управления.
Вопрос: До сих пор я ни разу не создавал COM-объект на каком-нибудь языке программирования. Трудно ли это?
Ответ: Как и для любого принципа программирования, для начала рекомендуется достичь элементарного понимания COM. Centura поставляет некоторую документацию по COM, в которой содержатся ссылки на другие материалы. Кроме того, имеются возможности обучения и консультирования по Centura.
Вопрос: Я уже создавал COM-объекты с помощью Visual Basic. Похоже ли на это создание COM-объектов с помощью CTD 2000?
Ответ: Centura Team Developer обеспечивает большую гибкость по сравнению с Visual Basic. Напрмер, Visual Basic позволяет разработчикам создавать единственный интерфейс COM по умолчанию для каждого сервера COM, а в качестве клиента использует только интерфейс по умолчанию. CTD дает разработчикам возможность создавать и использовать несколько интерфейсов COM.
Вопрос: Присутствует ли в ПО, поставляемом нашей компанией, в "генераторах отчетов" Centura/Gupta "интеграция с Active Directory" или необходимо приобретать данный сервис отдельной статьей?
Ответ:
- На самом деле мне не очень понятен вопрос и возникшая в связи с ним проблема. Сервис Active Directory включен в операционные системы начиная с Windows 2000 и, по-моему, никаких дополнительных средств интеграции для его использования не нужно. Дополнительных компонент в списке продуктов фирмы Centura/Gupta нет. Нет и ссылок на такие компоненты.
- На мой взгляд, доступ на программном уровне к таким сервисам возможен посредством технологий АХ/СОМ или непосредственным доступом к объектам через Windows API. И первая, и вторая возможность в среде разработки GTD есть, причем первая выполняется на основе специально сгенерированных классов (генерируемых автоматически GTD на основе tlb, ocx и т.д.), а вторая реализуется прямым доступом к любым DLL стандартного вида, посредством прямого вызова функций API. Кстати, доступ ко всем продуктам MS Office(WORD, EXCEL и т.д.) выполняется очень удобно на основе АХ.
- Для доступа к файлам и каталогам в среде GTD предусмотрены функции, которые корректно работают с длинными именами файлов и путями доступа. Организация объектов Active Directory и привилегий доступа к ним должна выполнятся средствами операционной системы на уровне администрирования, включая и репликации, и поэтому при задании возможности доступа к файлам, Вы их можете программно создавать и изменять, а ОС обеспечит все возможности поддержки технологии Active Directory.
- По поводу генерации отчетов в GTD предусмотрено два варианта: программный и режим конечного пользователя. В программном варианте формирование отчета, с помощью специальных функций и шаблонов может контролироваться полностью программно вплоть до их формирования, печати и сохранения. В режиме конечного пользователя в интерактивном режиме пользователь может построить запрос и оформить его в форме отчета без программирования. Эти отчеты могут быть записаны в виде отдельных файлов и помещены в виде объекта в Active Directory. Для построения отчетов доступен также через технологию AX COM объект, с которым можно работать обычным образом.
27.10.05
Вопрос: Прошу Вас выяснить, можно ли заставить старые 16-разрядные exe-приложения на Gupta 5.xx, а также утилиту Quest 3.0 работать с локальным однопользовательским сервером Centura 7.50?
Ответ:
- К сожалению, 16-ти разрядные приложения не могут работать с 32-ти разрядными, поэтому их нельзя связать. Решение может быть найдено на связях по сети (и для приложения Quest 3.0)
- Есть, впрочем, и другой выход: в версии SQLWindows 5.05, она в прошлом году распространялась Interface Ltd. и Centura бесплатно, есть локальная версия 16-ти разрядного SQLBase 7.5.1. Его можно инсталлировать и использовать. Ее и сейчас можно скопировать в Interface Ltd.
Вопрос: На семинаре представители ГУПТы, говорили о возможности использования технологии XML при формировании отчетов с помощью RB. Как это можно применить в информационных системах?
Ответ:
- Пока в документации по RB (report builder) нет новой информации по выгрузке отчетов явно в формат XML, по всей видимости, эти нововведения не отражены пока в документации или будут позднее.
- Технологию XML в информационных системах можно использовать напрямую, с использованием установленных АХ объектов, или с помощью специальных классов и функций, которые встроены в TD.
- В частности, можно использовать классы XML таблиц и колонок (например, SalTblPopulateFromXML и т.д.) или простые функции для работы с XML документами (SalTblWriteXMLAndSchema и т.д.).
- Более подробная информация есть в статьях на нашем сайте и в документации по TD (dev.pdf).
05.04.05
Вопрос: На одном компьютере установлена клиентская часть CTD2000 и TD3. Если запускать приложение из под TD30, а потом CTD2000 - ломается приложение под CTD2000, если CTD2000, а потом TD30 - ломается приложение TD30 ( ломается - cdlliXX.dll ). Что делать?
Ответ:
- Можно попробовать полностью изолировать приложение вместе со средой RUNTIME, записав все в одну директорию вместе с повторяющимися DLL для версий. При этом желательно дать имена каталогам отличными от стандартных и убрать их вообще из PATH. Запускать приложения нужно из текущего каталога (или настройки ярлыка).
- Имейте ввиду, что информация о работе TD, думаю, что и при RUNTIME установке, записывается в реестр Windows, и здесь возможны пересечения. Можно попытаться сделать и там ручные правки путей и проверить запуск двух программ.
- Если Вы используете АХ и СОМ, то возможны конфликты на уровне APL и DLL при их совместном использовании. Здесь, как в п.3 нужно тоже все проверить и настроить.
- У меня, я специально проверил, одновременно работают два приложения (правда из среды CTD2000 и TD 2.1, а не RUNTIME) с одним сервером и никаких конфликтов и завалов нет.
06.11.03
Вопрос: Как при форматировании цифровых (Number) (TD 2.1) полей ввода данных сохранить лидирующие нули? Например для ввода номера паспорта.
Ответ:
- Во-первых для ввода таких данных можно воспользоваться форматом типа String.
- Во вторых можно указать формат отображении (типа PICTURE) не включая туда знак “#”. Однако при модификации поля, возможно, оно опять переформатируется без лидирующих нулей. Здесь придется идти на хитрости: повторный вывод в поле, или всего окна, но лучше см. п.1.
- Думаю, что данная ситуация будет исправлена в PTF.
29.08.03
Вопрос: Как в DataBaseExplorer можно выгрузить таблицу из одной базы в текстовый файл, чтобы потом загрузить в таблицу другой базы?
Ответ: Если Вы работаете с SQLBase, то для этой операции можете использовать команды UNLOAD и LOAD, которые доступны в утилите SQLTalk (как автономной, так и встроенной в DataBaseExplorer). Причем, если таблицы совпадают по структуре и названию, то при UNLOAD могут быть сгенерированы команды создания таблиц. В противном случае нужно немного настроить скрипт для правильной загрузки в существующие таблицы (документация - sqltalk.pdf).
Кроме того, находясь в SQLTalk и сформировав данные в окне выхода с помощью любого запроса, вы можете сохранить результаты в текстовом формате, а далее с помощью запросов загрузить в любую БД.
Но на самом деле это очень удобно делать с помощью специального продукта Сentura, который называется Сentura SQLBase Exchange. Он позволяет делать репликации (см. ответ ниже) между любыми БД, в том числе и не SQL типа.
Различают SQLBase Exchange Server и SQLBase Exchange Desktop.
Кроме этого, можно в собственной программе реализовать любые сложные преобразования данных и их загрузку в БД.
Вопрос: Можно ли из программы на TD передавать структуры данных в DLL, созданных в среде СИ/СИ++?
Ответ: Да это можно сделать. Пример этого дан в тестовом приложении CSTRUCTL.APP и CSTRUCTL.APL, которое входит в состав стандартных примеров ГУПТЫ. Кроме того, можно передавать любые данные разных типов, включая даже указатели.
19.10.04
Вопрос: Можно ли из под CTD запустить фоновый процесс?
Ответ:
- Вообще из CTD можно вызвать любую программу, в том числе написанную на CTD, и если обработать сообщения от таймера, то это будет фоновый процесс (функция - SalLoadApp и др.).
- Можно воспользоваться инструментами COM объектов, которые есть и в 2000 и в 1.5.1. 3. Обмениваться с другим процессом можно с помощью сообщений, предварительно определив handle окна (функция - SalAppFind) или на основе DDE.
Вопрос: Меня интересует возможность публикации сложных отчетов на корпоративном сайте с помощью REPORT Builder.Какие существуют варианты построения информационной системы при таком подходе?
Ответ:
- Принципиально существуют две возможности использования REPORT Builder. Совместно со средствами разработки (предпочтительно CTD) и в автономном режиме, как редактора шаблонов, запросов и отчетов.
- В первом случае, на основе предварительно построенного шаблона ( можно и без него) данные поступают из программы и формируется отчет, который в дальнейшем можно просмотреть, распечатать и сформировать в файл в распространенных форматах. В этом случае REPORT Builder взаимодействует с приложением на основе механизма сообщений, которые обрабатывает программа, поэтому практически на всех стадиях можно вмешаться в формирование отчета, передав нужные данные. Кроме того в шаблоне могут быть заложены формулы, функции, позволяющие делать расчеты и преобразования. Возможно построение отчетов самого разного характера: от простых списков, до отчетов со сложным группированием данных, итоговыми и промежуточными результатами.
- Во втором случае REPORT Builder может использоваться в автономном режиме, как средство конечного пользователя. Отчеты и запросы могут быть построены в визуальном режиме, также как и шаблоны.
Имея банк настраиваемых шаблонов, можно покрыть самые изощренные потребности пользователя.
- Более подробную информацию о REPORT Builder Вы найдете в статье на сайте или в документации REPORT.pdf, которую тоже можно скачать с сайта.
Вопрос: Не проходит реорганизация БД. Что делать?
Ответ:
- Для уточнения этого факта неполной реорганизации БД желательно выполнить процедуру реорганизации по шагам:
- UNLOAD (кстати, в этом случае сохраняется версия для восстановления)
- CREATE
- LOAD
- UPDATE STATITICS (возможно при большой БД придется закрывать/открывать журнал транзакций SET RECOVERY OFF/ON, причем команду UPDATE STATITICS нужно выполнить при закрытом журнале)
- Команда UPDATE STATITICS может не выполняться и по причине очень большой БД и больших размерах отдельных записях. Общий объем не помещается в поля размеров БД. В таком случае придется дробить таблицы или переходить на более старшие версии. Кстати - а какая версия SQLBase у Вас?
- Возможно, у Вас недостаточно дисковой памяти для проведения реорганизации, которой нужно на самом деле в 2-3 раза больше, чем объем БД. Это тоже должно проявиться при пошаговой реорганизации.
Вопрос: Требуется ли обновление клиентских компонент, если обновлена версия сервера баз данных (5.x - 6.x)?
Ответ: Рекомендуется сделать это, для обеспечения доступа к новым свойствам сервера баз данных.
Вопрос: Где можно взять файлы, необходимые для поддержки русского языка в SQLBase (country.sql, country.dbs и т.п.)?
Ответ: В официальных поставках SQLBASE нет этих файлов, однако по методике, изложенной в документации, их легко создать. Но (!!!) в принципе незачем! Использование этой национализации ничего практически не дает, хотя создает много проблем:
- При их применении Вы сможете одновременно работать только с рускоязычными БД (например, тестовая ISLAND Вам станет недоступна и т.д.). Другие БД будут доступны только после замены country.sql и перезапуска сервера.
- Во-вторых, проблемы могут возникнуть при работе с несколькими серверами разной национализации
- В-втретьих, их применение влияет только на функции SQL @UPERCASE и @LOWERCASE, а это преобразование можно с успехом выполнить и в программе (SalStrUper...).
- Сортировка выполняется по русским символам и так правильно. Во многих проектах мы отказались от такой русификации и не жалеем.
Вопрос: Как можно запустить SqlTalk, чтобы выполнить сценарий автоматически?
Ответ: Используйте следующие параметры: SQLTALK BAT INPUT = <skriptfile.wts> OUTPUT < = Logfile >
Вопрос: Как сделать, работая в GTD, в окне диалога, чтобы после ввода информации в поле ввода, кнопка подтверждения, например OK, сразу срабатывала (допустим при логине) при нажатии клавиши ENTER?
Ответ: Можно использовать два способа:
- Назначить данной кнопке непосредственно акселератор - Enter, при этом нужно выключить режим автоматического срабатывания клавиши Enter как клавиши TAB. Это делается функцией - SalMapEnterToTab(FALSE).
- Второй способ, также при условии отключения режима TAB, заключается в использовании специальной функции - SalSetDefButton (<кнопка>).
И в первом, и во втором случае после нажатия ENTER будет срабатывать нужная кнопка.
20.06.05
Вопрос: При загрузке текста работающей программы в TD 2.1 в TD 3.0 вызов окна настройки свойств для класса Qtabs не производится. Для новых программ в TD 3.0 все работает. Что можно предпринять?
Ответ:
- Это недоработка процедуры конвертирования версий исходных текстов программ. В исходном тексте готовой программы в разделе свойств фиксирована DLL для Properties, поэтому вызывается старая DLL.
- Причина в том, что на Вашем компьютере установлено одновременно несколько версий TD. Если бы этого не было, то появилось бы сообщение об ошибке.
- Во-первых, нужно попробовать изменить путь к DLL свойств при настройке объекта в окне атрибутов - QuickObjectDll.
- Если это не поможет, то нужно выгрузить текст программы в формат .APT и в любом текстовом редакторе поправить путь и название DLL, например -QTABI20.DLL на QTABI30.Dll. Затем нужно загрузить в TD и опять сохранить текст программы в .APP.
05.04.05
Вопрос: Как динамически определить число строк и столбцов в таблицах TD, если не работаешь с БД (там объем выборки известен)?
Ответ:
- К сожалению, в TD пока нашел функции, которые бы явно отвечали на эти вопросы. Возможно, они недокументированны.
- Существует много способов (хитростей) для определения числа строк и столбцов. Поясню те, которые использую.
- Для строк: самое простое переместиться в конец таблицы(для TBL_MaxRow и функция SalTblSetContext) и определить контекст(SalTblQueryContext). Это и будет число строк. В качестве недостатка способа отмечу, что желательно восстановить контекст. Можно и по-другому: посредством добавления фиктивной строки.
Ниже привожу примерный текст:
Set nContext = SalTblQueryContext( hWndTable )
Call SalTblInsertRow( hWndTable, TBL_MaxRow )
Set nRowInTable = SalTblQueryContext( hWndTable )
Call SalTblDeleteRow( hWndTable, nRowInTable, TBL_NoAdjust )
Call SalTblSetContext( hWndTable, nContext )
...
- Для столбцов: нужно в таблице организовать цикл опроса дескриптора по столбцам и подсчитать их число, так как номера столбцов последовательны, а при отсутствии дескриптора получаем hWndNULL, то проверки в примере ниже понятны:
...
Set nCount = 0
Set bHeader = FALSE
Loop
Set hWndCol = SalTblGetColumnWindow( hWndTable, nCount+ 1, COL_GetPos )
If ( hWndCol = hWndNULL )
Break
Set nCount = nCount + 1
...
В переменной nCount получим число столбцов, даже в том случае, если они сформированы динамически.
Вопрос: В документации на TD/CTD сказано (хотя очень кратко), что можно заносить информацию в заголовочный столбец стандартных таблиц. Мы не можем добиться этого. Что делать?
Ответ: Этот режим действительно работает. Но нужно сделать следующее:
- Создать первую колонку в динамической таблице и сделать ее невидимой.
- Создать RowHeader и установить при этом режим TBL_RowHdr_MarkEdits
- Выполнить занесение текста в эту колонку (после добавления строк) и при этом в заголовочной колонке появиться текстовая информация.
- В ближайшее время на нашем сайте появиться статья, в которой подробно, с примерами поясняется этот режим.
Вопрос: Можно ли в GTD выполнять рекурсивный вызов функций и рекурсивно объявлять в классах объекты?
Ответ:
- Если не применять дополнительных ухищрений, то рекурсивно объявлять объекты можно только в методах в качестве локальных переменных.
- Рекурсивный вызов функций не объявляется и не запрещается официально документации, но этот вызов работает. Существуют ограничения использования системных ресурсов при таком вызове (по всей видимости, за счет ограничений в стеке). Тестирование показывает, что вложенность вызова ограничивается количеством в 110 - 120. Но это ограничение в большинстве случаев для информационных систем не является критическим.
2.2. Особенности новых версий Средств Разработки
Вопрос: При преобразовании приложений (*.app) для CTD из младших версий (1.5.1) в старшие, возникают проблемы для доступа к AX объектам.
Ответ:
- Действительно, начиная с версии CTD2000, способ подключения АХ объектов сильно изменился. Дело в том, что механизм был сделан более унифицированным и автоматическим.
- Для перехода к старшим версиям убедитесь, что все библиотеки подключаются из нужных каталогов (имена одинаковы), нужных версий, а также поправьте собственные обращения к методам удаленных объектов.
Файл automation.apl теперь подключается автоматически, поэтому его надо отключить из раздела библиотек.
05.07.06
Вопрос: При отладке приложения в CTD1.5.1 с параметрами командной строки в отладчике не видны значения аргументов.
Ответ:
- Действительно в отладчике этой версии нельзя посмотреть число параметров и значения аргументов, так как нет возможности задать эти значения. Даже не виден параметр имени программы, задаваемый по умолчанию.
- Если Вы запустите исполнимый файл (*.exe) с параметрами, то все будет определяться правильно. Понимаю, что это неудобно, но приходиться мирится.
- К сожалению и в новых версиях задать значения параметров для отладки невозможно. Единственный путь запустить программу после настроек в меню TOOLS->USER TOOLS… Там можно указать параметры командной строки.
05.07.06
Вопрос: При печати отчетов с помощью RB иногда возникает зависание для локальных принтеров. Что делать?
Ответ:
- Скорее проблема связана с настройкой драйверов печати и формированием спуллинга (Spool).
- Если после правильных настроек проблема не пропадает, выполните настройку на непосредственный вывод информации на принтер (прямая печать) и все будет работать стабильно.
Вопрос: В новых версиях ничего не говорится о поддержке протокола DDE, хотя в наших старых программах мы использует этот протокол. Будут ли работать старые программы в новых версиях TD?
Ответ:
- Действительно, функции для поддержки протокола для обмена данными и его упоминания исчезли из документации. Это означает, что официально данный давно устаревший протокол не поддерживается и в программах его рекомендуется заменить более новыми (OLE, COM и т.д).
- Однако все функции, сообщения и константы остались и старые приложения могут успешно работать, если их основа на протоколе DDE.
- Описание возможностей и особенностей применение протокола DDE можно найти в документации предыдущих версий.
13.02.06
Вопрос: Что такое Web Extensions для GTD? Для чего используется?
Ответ:
- История такова: ранее существовал отдельный продукт Centura Web Developer (CWD), который затем был включен в состав средств разработки CTD/GTD. Это средство позволяет создавать и публиковать через web программы, разработанные в среде TD.
- Затем, после объединения связанных программных продуктов, на некоторое время использование CWD потеряло смысл, так как все возможности были включены в TD, а стоимости этих средств были близки.
- В последних версиях TD с точки зрения разработки и тестирования ограниченного числа пользователей, подключаемых к WEB приложениям (по-моему, до 5-ти) ничего не изменилось - все средства включены.
- Однако для большего числа клиентов WEB необходимо приобретать дополнительные лицензии, которые обеспечиваются приобретением Web Extensions.
13.02.06
Вопрос: Как настроить sql.ini для максимальной эффективности?
Ответ: Вопрос не простой. Параметров много. Сначала совет: ничего не трогайте, пусть работают значения по умолчанию. Сильно влияет на производительность параметр cache и sortcache, его желательно сделать большим (15-32767 страниц), но нужно учитывать возможности компьютера. И т.д. Все параметры описаны в dba.pdf.
Вопрос: Как выполняется настройка SQL.INI станций и сервера для NT при использовании CTD2000 и SQLBase 7.5.1?
Ответ: Для клиента в секции
[win32client.dll]
должно быть задано:
comdll=sqlws32
Нужно обеспечить, чтобы библиотека sqlws32.dll была доступна клиентским приложениям.
Для сервера нужно указать:
[dbnt5sv]
servername=Server1,sqlws32
dbname=ISLAND,sqlws32
чтобы для каждой используемой БД и библиотека sqlws32.dll была доступна серверу.
Кроме того в секции серверного SQL.INI
[dbnt5sv.dll]
должно быть задано
comdll=sqlws32
Кстати, для одного сервера можно задавать несколько протоколов и для одной базы тоже несколько протоколов связи (например sqlwsspx). Более подробно это описано в документации - dba.pdf. Лучше всего проверять подключение клиента с помощью утилиты SQLTalk, которая работает прекрасно и по сравнению со старыми версиями не содержит ошибок.
Вопрос: Может ли 16-ти битный клиент SQLWindows и других версий TD работать с SQLBASE 8.0?
Ответ: Да, 16-ти битный клиент SQLWindows может работать с любыми версиями через протокол TCP/IP. При этом нужно настроить файл SQL.INI следующим образом:
- На стороне сервера:
[dbnt5sv]
...
servername=server1,sqlws32
dbname=island,sqlws32
...
[dbnt5sv.dll]
...
comdll=sqlws32
...
- На стороне клиента:
[winclient.dll]
...
comdll=sqlwsock
...
[winclient.wsock]
serverpath=server1,<имя хоста и порт>/island
Необходимые DLL можно взять из инсталляции клиента, в том числе и из младших версий.
Вопрос: Существует ли среди продуктов Centura среда разработки для языка Java, подобная Centura Team Developer?
Ответ:
- Базовым языком программирования в CTD является SAL(язык похожий на СИ). Информацию об этом языке Вы можете найти в статьях на нашем сайте или в документации. Язык SAL является достаточно развитыми для реализации информационных систем произвольной сложности. Других языков программирования продукты Gupta в явном виде не поддерживают.
- При разработке приложений в архитектуре клиент-сервер Вы можете воспользоваться для языка Java любыми доступными средствами (VJ или Borland JB и другими). Для доступа к БД можете использовать различные интерфейсы (ODBC, OLE DB и JDBC). Практика показывает, что лучше использовать драйверы фирмы Merant (см. на нашем форуме).
- Если Вы разрабатываете WEB приложения, то вы можете использовать вставки на Java Script, VB Script и все то, что можно поместить в HTML вставки.
Вопрос: В последней версии СTD нет ссылок на использования механизмов DDE, они от него отказались?
Ответ: Да в новых версиях CTD и Windows нет официальной поддержки протокола DDE. Micrisoft и Gupta предлагают использовать другие механизмы, в частности СОМ и OLE DB.
2.3. Сообщения об ошибках в программных продуктах и их разрешение
Вопрос: При большом объеме кода (более 100 Мб) Centura отказывается компилировать приложение. Что делать?
Ответ:
- Конечно с переходом на новые версии CTD2000, TD 2.1 и TD 3.х вы получите много дополнительных возможностей. Желательно переходить на самые последние версии. В этих версиях допустимый размер текста OUTLINE увеличен, но возможно не настолько, чтобы переварить 100 мб. Конкретных ограничений в документации нет, так как это зависит не только от объема текста программы, но и от его содержания.
- В сложных случаях (сбоях и ошибках OUTLINE) удается восстановить текст преобразованием программы в *.apt и обратно. В версии 1.5.1 были ошибки, связанные с сохранением текста.
- Технологически оправдано использование для больших программных систем подключаемых DLL, динамических библиотек (APD) и связывающих библиотек -APC, которые корректно формируются версиями TD.
- Переход на эту технологию несложен, практически не требует дополнительной отладки и сделает Ваш проект значительно более живучем и легко сопровождаемым.
06.11.03
Вопрос: При работе с классом MSXML2_IXSLTemplate и его методом PropSetstylesheetByRef появляется ошибка компиляции. Это нужно для работы процессора XSLT. Как избавиться от ошибки?
Ответ: Для нормальной работы с методом PropSetstylesheetByRef в классе MSXML2_IXSLTemplate нужно заменить его параметры с MSXML2_IXMLDOMNode на MSXML2_FreeThreadedDOMDocument30. Будет выглядеть так после комментирования: !MSXML2_IXMLDOMNode: rhs MSXML2_FreeThreadedDOMDocument30: rhs. Правки выполняются в сгенерированной библиотеке Microsoft XML, v3.0.apl. Ее нужно отдельно загрузить в CTD. Потом нужно сохранить и работать в приложении.
Вопрос: При работе с XML элементами компиляция не выполняется для метода PropGetchildren класса MSXML2_IXMLElement2. Что делать?
Ответ: Для нормальной работы с методом PropGetchildren в классе MSXML2_IXMLElement2 его параметры заменяются с MSXML2_IXMLElementCollection на MSXML2_IXMLDOMNodeList. Будет выглядеть так после комментирования: !MSXML2_IXMLElementCollection: returnValue MSXML2_IXMLDOMNodeList: returnValue. Правки выполняются в сгенерированной библиотеке Microsoft XML, v3.0.apl. Ее нужно отдельно загрузить в CTD. Потом нужно сохранить и работать в приложении.
Вопрос: При тестировании новой версии мы столкнулись с проблемой, которая заключается в ошибке при загрузке исходного текста программ, работающих на старых версиях. Что можно предпринять?
Ответ:
- На нашем сайте в разделе FAQ есть рекомендации для такого перехода.
- Попробуйте сначала конвертировать исходный файл в *.apt, затем вручную поправить там вначале номер OUTLINE (этот номер для разных версий отличается, поэтому выгрузите в *.apt для каждой из них любое маленькое приложение и зафиксируйте этот номер).
- После конвертации загрузите в новую версию GTD, если пройдет без сбоев, то сохраняйтесь в новой версии в *.app и работайте (не забудьте заменить номера стандартных внешних DLL в тексте, например ...20-...30).
- Если не получиться, то в старой версии закомментируйте критические участки, можно комментировать почти все, кроме системных секций, проделайте п.п. 2-3 (выше) и еще раз проверьте. Если загрузится, то в новой версии снова раскомментируйте эти участки.
- Возможная проблема заключается в том, что для некоторых объектов, например для QTABS карточек, информация о DLL свойств записывается в параметрах самого окна, тогда можно (п. 3) после конвертации в *.apt, в текстовом редакторе проверить это и вручную подправить имена DLL, например ...20-...30.
- Можно воспользоваться копированием секций APP через Clipboard, запустив одновременно и старую, и новую версии, хотя это не всегда желательно, но "на безрыбье...".
- Проверьте используемые шрифты и установите стандартные для системы в системной секции.
- Сообщите с каких версий на какие Вы переходите. Возможно, у Вас есть маленький пример, на котором проблема проявляется, пришлите мне его и я попробую разобраться. Вообще, мне много приходилось переходить по версиям (и вверх и вниз) и всегда было без особых проблем и все разрешалось.
- Уверен, что и для новых версий 2005, проблемы тоже легко решаются.
05.04.05
Вопрос: При попытке распечатать OUTPUT (SQL Talk) в TD 2.1 или выдаётся сообщение об Ошибке и приложение снимается.
Ответ: Действительно это ошибка, которая уже исправлена в TD. Для ее нейтрализации нужно подгрузить новую DLL (tlkc32.dll). Ее можно получить по запросу в Interface Ltd., или установить PTF 2 для TD 2.1, скачав его с сайта Gupta Technologies.
Вопрос: При работе с DBExplorer в TD 2.1 в поля БД FLOAT 8 при выводе информации в закладке "data" число округляется до 16 цифр. Как это исправить?
Ответ:
- Действительно это ошибка, которая будет исправлена в ближайшем PTF. Фирма знает о ней.
- В БД для SQLBase все запоминается нормально до 22 цифр, как указано в документации. При этом таблицу нужно создавать так:
Create TABLE TEST (TEST22 FLOAT ( 22) );
занесение данных:
INSERT INTO TEST (TEST22 )
VALUES (1234567890123456789012);
и выборку:
SELECT TEST22 FROM TEST INTO :Test1;
В результате в переменной Test1 вы получите все 22 цифры.
Отмечу, что в самой программе на TD допустимо использовать до 45 цифр.
Вопрос: При вызове почтовой системы из приложений на TD нет доступа к почтовым ящикам OUTLOOK. В чем ошибка?
Ответ: Помимо настроек классов для работы с почтой необходимо выполнить настройки в операционной системе сети. В частности, нужно настроить почтовый офис на том компьютере, где будут храниться ящики. Это выполняется в системных настройках. Наиболее приемлемый вариант организации связи в локальной сети – использование MS Exchange. Настройка почтового офиса выполняется в панели управления в приложении "Почта" (Post).
03.11.04
Вопрос: При закрытии SQLBASE на Novell, выдается сообщение "1.1.14 Module did not release 1152 resources". В чем заключается проблема?
Ответ: Это - временное событие. Ресурсы станут свободными через несколько минут.
Вопрос: Появляется сообщение об ошибке 'duplicate server ' при попытке установить SQLBase на Novell. Что делать?
Ответ: NLM определил, что имеется другой сервер с таким же именем, которое определено в SQL.INI файле сервера. ERROR.SQL файл определяет " Remedy:Verify that the server being installed does not already exit on the network". Проверьте SQL.INI файл сервера, в секции определения имени сервера. Измените имя. Убедитесь, что нет других серверов в сети, использующих то же имя сервера.
Вопрос: Появляется ошибка 182 при попытке сделать копию на Novell сервере. Что это означает?
Ответ: Сообщение об ошибке 182 указывает, что SQLBASE не может создать резервный файл. Убедитесь, что имеется достаточное дисковое пространство для копирования, и каталог существует. Также убедитесь, что копия делается 'ON SERVER' и правильно указан путь. Например: Server1:sys\backups.
Вопрос: При установке SQLConsole 6.0 не удается создать локальную базу данных! Почему?
Ответ: Вам необходимо создать локальную базу данных для SQLConsole, используя следующие шаги:
- Запуститься в режиме TOOLS ONLY.
- В меню 'Options’ будут видны две опции, 'Create SQLConsole database' и 'Enable automatic features’. Опция 'create' работает нестабильно. Выберите опцию 'enable'. При этом зпустится локальный сервер и будет произведена попытка соединения с локальной базой данных. Будет выдана ошибка, предупреждающая о том, что не возможно соединиться с базой данных и предложением создавать локальную базу данных. Выберите ‘Да’.
Вопрос: Ошибка: Connection is busy with results for another hstmt. Как исправить?
Ответ: В документации (4-7, 4-19 электронной книги ccon.pdf - книга Connecting Centura Objects to Databases из CTD 2.0 Matternhorn, я думаю и в более ранних версиях документов это тоже есть - книги по Connection с другими СУБД) по этому поводу сказано:
(начало цитаты)
Microsoft SQL Server 6.x provides backend support for scrollable cursors (result set cursors that scroll both backwards and forwards). Consequently, you cannot create front end result sets (FERS) if you turn on result set mode.
You must turn on result set mode to have more than one result set open at the same time. If result set mode is off, you must fetch all of the rows from one result set before you can SELECT another result set. If you try to SELECT a result set before fetching all the rows of a previously retrieved result set, you get the error:
[Microsoft][ODBC SQL Server Driver]Connection is busy with result for another hstmt
(Конец цитаты)
Таким образом, желательно для вашего случая включить режим выборки (You must turn on result set mode). Как это делается, Вам необходимо уточнить в документации по Microsoft SQL Server.
Вопрос: Вопрос по продукту Team Developer 3.1.0-PTF2 Build 13582. В настройках Project - Build settings - Version поля Language и Encoding невозможно отредактировать, они пусты. Есть ли возможность это исправить, а то данные, скопированные из программы в буфер, неправильно раскодируются операционной системой.
Ответ:
- Действительно - эти настройки недоступны пока в приложениях. Думаю, что они зарезервированы для развития и пока в приложениях не используются (м.б., для контроля орфографии).
- Если речь идет о кодировке и языке, то все и так работает нормально - копирование и вставка из буфера обмена (Clipboard) работает правильно, если в операционной системе установлена поддержка русского языка. Единственная особенность (но она характерна для всех программ) состоит в том, что перед помещением в буфер обмена желательно переключиться на русскую раскладку.
- Работа с данными в БД - без проблем.
- Работа с WEB приложениями тоже не требует предварительных установок в большинстве случаев, но при желании можно вставить в скрипт тип кодовой страницы.
20.09.05
Вопрос: Поддерживаются ли в GTD статдарты Internet: Java, Java Script, JDBC?
Ответ: В состав CTD 2000 входит специальный драйвер для JDBC, так что JDBC поддерживается. Если говорить о Java и Java Script, то поскольку обеспечивается построение конечных HTML приложений, они могут содержать Java Script'ы и Java классы, но отладку их, естественно, необходимо производить в специализированных средствах, ориентированных на разработку Java приложений (BJ или VJ)
Вопрос: Поддерживаются ли в CTD 2000 промышленные стандарты: TCP/IP, CORBA?
Ответ: На основе протокола TCP/IP обеспечивается связь с удаленным сервером в сетях MS (NT, 95, 98, 2000). CORBA в явном виде не поддерживается, только через мосты COM и DCOM.
Вопрос: Поддерживается ли в GTD стандарты Microsoft: ActiveX, OLE, DCOM, ODBC?
Ответ: Стандарты ActiveX, OLE, DCOM, ODBC поддерживаются в CTD 2000. Кроме того, поддерживается OLE DB и COM объекты.
Вопрос: Почему при выполнении запроса, содержащего хранимые функции, которые возвращают VARCHAR2 (VARCHAR), результаты не передаются в приложение?
Ответ: Это связано с тем, что максимальная длина VARCHAR2 в ORACLE – 2000 символов, что трактуется OraGtwy как LONG VARCHAR, даже если явно указать меньшую длину возвращаемого значения (например, VARCHAR(80)), поэтому данные следует принимать в переменные (или поля) типа Long String.
Вопрос: Quest при обращении к базе дает ошибку Invalid SET parameter. А WinTalk вообще не видит базу по ODBC.
Ответ: Нужно проверить настройки драйверов ODBC Quest, совершенно точно эта программа (Quest) работает с ODBC наборами. Возможно, потребуется переустановить драйверы, а затем определить настройки соответствующих наборов данных. С WinTalk, как с промежуточным продуктом, были проблемы с доступом в БД и, в частности, ODBC наборами. Используйте SQLTalk с обновленными DLL и все возможности, даже LOAD и UNLOAD, будут доступны. Из SQLWindows доступ к ODBC наборам также работает нормально (при правильной настройке драйверов).
2.4. Реализация пользовательского интерфейса
Вопрос: Можем ли мы использовать WORD и EXCEL при формировании выходных документов в приложениях на TD?
Ответ: Для работы с WORD и EXCEL нужно использовать AX технологию и COM объекты этих компонент для доступа к функциям работы с этими объектами. Более подробно возможности AX и COM изложены в документации и статьях на нашем сайте.
06.06.2003
Вопрос: Можно ли в программе на TD автоматически обеспечить масштабирование интерфейса приложения при разных разрешающих способностях дисплея?
Ответ:
- Вообще это больной вопрос для любых средств разработки программ под Windows – изменение разрешающей способности дисплея приводит к несоответствиям в размерах окон и расположении их дочерних объектов.
- В последних версиях TD появились функции, которые помогаю решить эту проблему, однако не совсем просто. Это функции: SalGetWindowSize (получить размер окна и объекта), SalSetWindowSize (установить размер), SalSetWindowLoc и SalMoveWindow (для абсолютного и относительного перемещения объекта).
- С помощью этих функций можно настроить размер окна и расположение дочерних объектов приложения в зависимости от разрешающей способности дисплея.
13.02.06
Вопрос: Нужно ли для разных языков хранить более одной версии исходного кода?
Ответ: Нет. Если ваша деятельность глобальна, вы понимаете необходимость предложения вашего приложения на иностранных языках.
Centura’s Object Nationalizer позволяет переводить уже скомпилированные приложения, совершенно не меняя исходный код. Это значит, что вам надо хранить лишь одну версию кода приложения, независимо от того, сколько предлагается переводов этого приложения на другие языки. Совместно используя Centura’s Object Nationalizer с технологией установки Centura’s Web, можно гарантировать доступность по всему миру опубликованных в Internet приложений на соответствующих языках. И при этом вам необходим один единственный источник.
Вопрос: Мы работаем с VB DLL построенной в виде COM DLL, но не можем получить доступа к функциям. Работа выполняется из функций окна.
Ответ:
- Если СОМ объект создается в функции, то после ее завершения, как локальный объект он разрушается и это нужно учитывать. Для доступа из разных функций к одному объекту необходимо его создать как глобальный, например в секции обработки сообщений - SAM_AppStartup.
- При передаче параметров в методы объекта, после его создания доступ к методам выполняется так (COMVBDLL имя COM DLL, FUN - имя вызываемой функции,а PAR - параметр):
- Call COMVBDLL.FUN(PAR)
- Call PAR.GetString( strTest )
- Call PAR.GetNumber( nTest )
В данном примере мы получаем строковый и числовой параметр.
Вопрос: Можно ли при работе с файлами DBF через ODBC из TD обеспечить корректную многопользовательскую работу?
Ответ: При автономной работе с файлами ODBC вы работаете в рамках архитектуре файл-сервер. Если Вы обращаетесь автономно к файлам, то синхронизации запросов от многих пользователей достач невозможно, нужно иметь СУБД или специальные средства синхронизации. Средства ODBC, работая в этом случае как транслятор запросов, этого не обеспечивают.
Вопрос: Где взять продукт MTS (Microsoft Transaction Server), который требуется в документации на TD для использования сетевых COM объектов?
Ответ: В Windows NT действительно требуется отдельный продукт для поддержки режима MTS. Для операционных систем начиная с Windows 2000 не требуется отдельного продукта, так как компоненты MTS включены в среду СОМ+ и поддерживаются автоматически. В частности, для настройки COM+ компонент используется Component Serviсes (Службы компонентов), который входит в административную группу системных приложений.
03.11.04
Вопрос: Что нужно сделать для создания DLL? Какие дополнительно продукты нужны для этого?
Ответ:
- В первую очередь Вам необходимо имеет компоненты из MS Visual Studio 6.0 для выполнения операций по созданию DLL. Должны быть настроены пути для выполнения этой операции (компиляции и редактирования DLL).
- Вы создаете обычную APL в среде GTD, но при компиляции указываете (в настройках проекта) создание DLL. GTD обеспечит автоматический вызов компилятора и редактора связей для создания модуля. Если функция DLL должна быть видна во вне, то для этого ее в названии необходимо пометить специальным комментарием: ! __Exported.
- После компиляции Вы можете подключать DLL в программу, причем для этого можно использовать специальный модуль (.APD), который обеспечит описания внешних функций созданной DLL, при этом будут использованы имена, описанные непосредственно в модуле DLL. Есть ограничения, которые накладываются на создания DLL, которые Вы найдете в документации. Например, для описания классов нужно использовать дополнительные описания или модель с расширением .APC.
22.09.04
Вопрос: Можно ли в динамике создавать объекты интерфейса в CTD?
Ответ:
- Во-первых, можно использовать возможности AX технологии и создавать объекты в динамике (SalActiveXCreateFromData). Далее можно использовать контейнеры и коллекции для манипуляции ими.
- Во-вторых, можно для динамики использовать и обычные стандартные объекты, но с некоторыми хитростями: нужно создать специальные классы окон, каждое из которых соответствует стандартному объекту и уже динамически создавать и размещать в родительском окне объекты этих окон в размер элемента интерфейса (SalCreateWindow)
- Можно воспользоваться технологией Custom Controls и CDK для создания собственных динамических объектов.
Вопрос: Можно ли вызвать выполнение макроса WORD из программы на GTD при работе с объектом АХ?
Ответ: Для выполнения макроса нужно создать AX объект приложение (Application) и документ. Для выполнения макроса вызывается метод - RunMacro для объекта приложение с указанием названия макроса.
12.10.05
Вопрос: Можно ли в CTD нарисовать точку в окне, или график?
Ответ:
- Трудно придумать ситуацию, когда в информационной системе необходимо использовать такую графику (нарисовать точку). Что это за задача и какова ее необходимость?
- Все-таки CTD является специализированной системой программирования, ориентированной на построение информационных систем, для этого у нее много эффективных средств. Усложнение и "отягощение" многих систем приводит к тому, что их фактически невозможно полностью освоить. CTD тоже приближается к этому порогу. Тем не менее в CTD можно тем или иным способом вывести графическую информацию.
- Для вывода деловой графики предусмотрены специальные объекты - cQuickGraph. Рисуйте графики или диаграммы.
- Для отображения рисунков можно на окно наложить - фоновые рисунки, можно их сформировать и в динамике.
- Можно попробовать отобразить точку посредством линий, но это не так просто.
- Можно создать свои собственные объекты Customer Controls или подключить существующие (к сожалению, пока не знаю, где и что искать, но уверен: такие есть)
- Наверняка можно найти и подключить AX объекты этого назначения, их много и на различных CD или в ИНТЕРНЕТ.
- Можно действительно написать собственные DLL, связанные или не связанные с п.6 и п.7. Все handle окон есть и можно в CTD обрабатывать практически любые сообщения WINDOWS (WM_PAINT)
- Можно работать также с объектом типа Picture (dev.pdf глава 16)
- Можно также запустить связанные объекты типа Диагарамм Excel и т.д.
Вопрос: При использовании экранных таблиц с динамическими (автоматическими) колонками, когда курсор уходит из отредактированной ячейки, таблица не получает сообщение SAM_Validate, как было в SQLWindows.
Ответ: Это ошибка CTD 1.1.2. Она исправлена в PTF и в версии 1.5.
2.5. Миграция приложений по версиям и подключение к другим СУБД
Вопрос: При работе Team Developer 2005.1 for Windows с SQLServer 2005 возникли проблемы при соединении с БД через ODBC. Что делать?
Ответ:
- Нужно установить драйвер ODBC соответствующей версии, и нужной версии компоненту sqlodb32.dll, которая входит с состав TD, так как в разных версиях могут отличаться интерфейсы.
- Возможно, у Вас стоит несколько версий TD, тогда с помощью определения путей и имен каталогов нужно исключить возможность подключения неправильной DLL.
20.07.06
Вопрос: При переходе с CTD 1.5.1 на TD 3.0 в режиме работы дизайнера не показываются закладки QTABS в окне LAYOUT. Что делать?
Ответ:
- При миграции с младших версий TD автоматически заменяет системные DLL на DLL соответствующей версии. Однако в случае DLL встроенных в классы это происходит не всегда. Так для перехода с CTD 1.5.1 на TD 3.0 нужно заменить qtchi15.dll на qtchi30.dll.
- Если автоматической замены не произошло такую замену нужно сделать вручную, в режиме дизайнера.
- Контроль правильности замен и ее полноту можно выполнить и в текстовом режиме. Для этого сохраните приложение в формате *.APT и обычном текстовом редакторе проверьте наличие DLL с неправильным суффиксом. Например? в WORDPAD можно поискать по маске "*15.DDL" или "*15.dll" и выполнить текстовое редактирование. Затем нужно вернуть приложение в формат *.APP.
05.07.06
Вопрос: Есть ли проблемы при миграции приложения с SWindows на CTD? Нужно ли корректировать код?
Ответ: Проблем для перехода с SWindows на CTD нет. Все функции и операции поддерживаются. При этом выполняется процедура конвертирования в формат CTD. После конвертирования простым способом возврат в SWindows невозможен. Однако есть другие способы, так что приложение на CTD может быть конвертировано в SW, при условии, что не задействованы те возможности CTD, которых вообще нет в SW.
Вопрос: Насколько сложен переход приложения для работы с новыми версиями средств разработки Gupta/Centura?
Ответ: Q перехода был описан в FAQ ранее. Практически все выполняется автоматически при движении от младших версий к старшим. Проблемы могут возникнуть только при переименовании DLL (15-20) или при вложенных модулях (include). При переименовании выполните первоначально комментирование старой библиотеки, а затем после копирования переопределите новую. Для вложенных модулей, также сначала закоменитирйте, переведите под новуюверсию отдельно все модули, а затем раскоментируйте и переведитеосновной модуль, тогда будет исключено двойное подключениесоставляющих компонент. В некоторых случаях может потребоваться для перевода предватирельно перевести модули в формат APT, а затемпосле перевода обратно в формат APP.
Вопрос: Мы рассматриваем вариант миграции с SQLBase на ORACLE, при тестировании обнаружили, что функция SqlGetResultSetCount выдает ошибку. В чем причина и что делать?
Ответ:
- Для выполнения данной функции при работе с ORACLE нужно явно включить режим прокрутки Result Set (делается функцией - SqlSetResultSet (TRUE)), причем это необходимо сделать до выполнения запроса к СУБД (SqlPrepareAndExecute). После этого функция SqlGetResultSetCount не будет выдавать ошибок и возвратит правильное значение.
- Такие же действия необходимо сделать, если Вы собираетесь использовать режим прокрутки Result Set, как прямом, так и в обратном направлении (функции - SqlFetchPrevious и SqlFetchNext). До формирования выборки нужно включить режим функцией SqlSetResultSet.
23.11.05
Вопрос: Какие из продуктов Centura должны быть включены в дистрибуцию, если использование SQLBase для хранения БД не планируется, но используется CTD? Как приобрести лицензию на RUNTIME и есть ли она?
Ответ:
- Все, что нужно включать для сопровождения программного продукта содержится в DEPLOY (RUNTIME), который развертывается на компьютере клиента и не требует дополнительных лицензий.
- Если Вы используете не все возможности средств разработки, то можете методом исключения устранить ненужные компоненты из DEPLOY (RUNTIME). В ряде случаев можно сократить объем DEPLOY до двух раз. К сожалению, в документации нет явного перечня компонент, которые нужны для конкретного случая.
- Если вы не планируете использовать SQLBase, то без особой опасности Вы можете исключить локальный сервер, интерфейсные DLL (comdll).
Вопрос: Можно ли на локальном компьютере связаться из 16-ти разрядных приложений с 32-ти локальным разрядным сервером SQLBase?
Ответ: В дополнение к вопросу (или его уточнению) об совместном локальном использовании 16-ти разрядных приложений (Gupta SQLWindos) и 32-ти разрядного SQLBase 7.51 могу сообщить следующее:
- Существует все-таки такая возможность совместной работы 16-ти разрядных приложений и средств разработки и без использования 16-ти разрядного сервера (SQLBase?).
- Связь в этом случае может быть выполнена по протоколу TCP/IP.
- Для клиентской части приложений необходимо указать в SQL.INI
[winclient.dll]
comdll=sqlwsock
...
и настроить секцию
[winclient.wsock]
serverpath=server1,localhost/<Ваша БД>
- Для настроек сервера нужно использовать протокол TCP/IP:
[dbnt50sv]
servername=server1,sqlws32
...
dbname = <Ваша БД>, sqlws32
[dbnt50sv.dll]
comdll=sqlws32
- И, соответственно, корректно использовать вызов SQL.INI для сервера и для приложений (или средств разработки )
- Это проверено и работает.
Вопрос: Имеется ли возможность связаться с локальным SQLBase сервером из 16- и 32-разрядных приложений?
Ответ: Прежде чем появился SQLBase для Win’95, существовали локальные 16-разрядные SQLBase сервера (DBWSERVR.EXE и DBWINDOW.EXE). Они были довольно просты в настройке и управлении. С появлением SQLBase для Win’95 (DBNT1SV. EXE) возникло несколько соображений, которые следует принять во внимание:
- SQLBase для Win’95 - 32-разрядный сервер и может использовать большее количество памяти, чем было возможно с 16-разрядными серверами.
- 16-разрядные программы могут соединяться с SQLBase для Win’95 через 16-разрядный протокол WinSock TCP/IP.
- SQLBase для Win’95 не запускается автоматически при обращении к базе данных из 16-разрядных приложений.
Конфигурирование протокола TCP/IP для Win’95 на машине, которая не имеет сетевых адаптеров, может быть сложным и не совсем удачным делом. Шаги, перечисленные ниже разработаны для оказания помощи при установке и конфигурировании TCP/IP для Win’95 так, чтобы к SQLBase серверу для Win’95 можно было обращаться и 16- и 32-разрядным приложениям.
Если Вы уже установили TCP/IP на вашей машине с Windows’95 и он работает правильно, проделайте несколько шагов для конфигурации SQLBase. Эти шаги подразумеваюьт, что Вы знакомы с SQLEDIT:
- Используйте SQLEdit, чтобы сконфигурировать сервер для Win’95 ([dbnt1sv)], поддерживающий Anonymous Pipe (SQLAPIPE.DLL) для 32-разрядных приложений и WinSock TCP/IP (SQLWSOCK.DLL) для 16-разрядных приложений. Дополнительно, установите имя сервера, которое будет выглядеть приблизительно так - "LOCAL32".
- Используйте SQLEdit, чтобы сконфигурировать Win’95 клиента ([win32client)] для связи по протоколу Anonymous Pipe.
- Используйте SQLEdit, чтобы cконфигурировать Win-3.X клиента ([winclient)] для связи по TCP/IP (WinSock). Дополнительно необходимо установить значение параметра “serverpath” равным " LOCAL32, localhost/ * ".
- Запустите SQLBase сервер для Win’95.
- Теперь Вы готовы связываться с сервером из 16- или 32-разрядных версий SQLTalk для Windows и других приложений.
Если у Вас не установлен TCP/IP протокол, проделуйте следующие шаги, чтобы сконфигурировать TCP/IP для Win’95:
- В диалоге установки сетевых ресурсов(Панель управления), нажмите кнопку Add. Отобразится диалог Выбор Сетевых Компонент.
- Выберите Сетевой Протокол, и нажмите кнопку Add. Появится диалог Выбора Сетевого Протокола.
- Выберите Microsoft и TCP/IP как Сетевой Протокол, и нажмите кнопку OK. Появится диалог Выбор Устройства.
- Если Вы не имеете сетевой карты, выберите Microsoft и Контроллер удаленного доступа и нажимите кнопку OK. Диалог Выбор Сетевых Компонент снова отображается с установленными сетевыми компонентами.
- Если Вы выполняете установку для обеспечения связи с локальным 32-разрядным SQLBase, важно обратить внимание, что единственными компонентами, которые требуются, являются Контроллер удаленного доступа и TCP/IP. Чтобы удалить ненужные сетевые компоненты, пометьте любой из них и нажмите кнопку Remove.
- Как только Вы удовлетворитесь установленными сетевыми компонентами, нажмите кнопку OK. На этом шаге может быть запрошен дистрибутив Windows 95. Как только все шаги будут пройдены, отобразится диалог Изменения Параметров настройки Системы.
- Нажмите кнопку Yes, для перезапуска компьютера с новыми настройками сетевых параметров.
- После перезапуска компьютера, произведите настройку SQLBase и SQLTalk, как описано выше.
Вопрос: Как правильно работать с таблицами SQLWindows 5.0 в среде MicrosoftSQLServer?
Ответ: Во-первых, нужно уточнить условия, при которых возникает эта ситуация, и обстоятельства применения функции:
- Используется ODBC или механизмы связи через SQL роутер для Microsoft SQL Server и какие версии данных продуктов.
- Каковы размеры оперативной памяти на Вашей ЭВМ (таблица храниться в ОП) и возможно свободное пространство локального HDD.
- Размер отдельной записи при выборке (FETCH) в таблицу.
Во-вторых, при реальной практике применения (просмотра) таблиц фактически невозможно использовать такую большую выборку (Максимум 300 - 400 записей), так как пользователь практически не в состоянии выполнять навигацию по таким выборкам и реально это не нужно, только ему это на до корректно и доходчиво объяснить, учитывая его психологию. Мы обычно выдаем порцию записей в таблицу (300 - 1000), на экран выводим общий размер выборки ( функция - SqlGetResultSetCount) и даем пользователю предупреждение о не полностью заполненной таблице. В окне выборки представлены ее критерии, так что пользователь быстро привыкает их задавать (например, первые буквы фамилии) для уменьшения объема выборки. Кроме того, повышается оперативность его работы: он не ждет долго заполнения таблицы (как в QUEST, кстати, попробуйте им обратится к Вашей таблице: может быть это все-таки Ваша ошибка)
В-третьих, при использовании SQLBase CENTURA/GUPTA разных версий совместно с SQLWindows я такую ситуацию не встречал и не получал информацию от других программистов.
В-четвертых, проверьте согласование по синтаксису использования связующих (BIND) переменных в запросе. В разных серверах и их версиях разные возможности и механизмы, так что могут быть ограничения. К сожалению, не так детально, как бы хотелось, знаком с особенностями Microsoft SQL Server.
В-пятых, возможно, вы используете триггеры или процедуры на сервере, для Microsoft SQL Server это критично, если формирование выборки не завершено (стр. 1-21,22,4-6 электронной книги ccon.pdf - книга Connecting Centura Objects to Databases из CTD 2.0 Matterhorn).
В-шестых, если вы используете ODBC, обратите внимание на настойки в секции [odbcrtr] для Microsoft SQL Server, буферы и т.д.
Вопрос: Вопрос по использованию GTD: насколько необходимо наличие клиента Oracle (SQL Plus) на удаленной пользовательской машине при запуске клиента GTD?
Ответ:
- Думаю, что в полном виде клиента Oracle вообще не нужно, так как вы работаете через роутер CTD.
- По документации, для корректной работы CTD с Oracle необходима библиотека OCIW32.DLL. Эта библиотека должна входить в поставку ORACLE клиента или CTD, сгенерированной с возможностью доступа к ORACLE.
Для поддержки OCI в регистрационный раздел KEY_LOCAL_MACHINE\SOFTWARE\ORACLE записывается параметр ORAOCI, который в зависимости от версии принимает следующие значения, для ссылки на интерфейсную DLL:
Oracle 7.1 - ORANT71.DLL
Oracle 7.2 - ORA72.DLL
Oracle 7.3 - ORA73.DLL
Oracle 8.0.2 - ORA802.DLL
Oracle 8.0.3 - ORA803.DLL
Oracle 8.0.4 - ORA804.DLL
Эти DLL должны, по всей видимости, быть в наличии. Думаю, что остальные настройки изложены детально в документации (ccod.pdf - глава 5).
- Многие клиенты успешно работают из SQLWindows/CTD/TD с Oracle , их устраивают в том числе и временные характеристики, так как связь реализуется не на основе ODBC, а на основе практически "родного" роутера.
Вопрос: Не удается передать строковую переменую в функции для ActiveX объектов для TD. Например, при вызове Crystal Reports не удается подключиться с вызовами функций:
- Call axCrystalCtl.PropSetUserName (strVariable1)
- Call axCrystalCtl.PropSetPassword (strVariable2)
- Call axCrystalCtl.PropSetConnect (strVariable3)
Что делать?
Ответ:
- Возможно для обращения к этим функциям нужна не строковая переменная, а переменная типа VARIANT.
- Проверьте по описаниям классов. Обычно это выполняется через переменную типа VARIANT.
- Если в качестве параметра используется переменная типа VARIANT, то обращаться к функции необходимо следующим образом:
:
! Описание переменной имя, естественно, произвольное? Variant: StrVarName
:
! Обращение к функции с указанием имени пользователя:
? Call StrVarName.SetString (strVariable1)
? Call axCrystalCtl.PropSetUserName (StrVarName)
Вопрос: Как настроить CTD для работы с MS SQLServer 7.0?
Ответ: Для работы с SQLServer 7.0 в CTD (всех версий) предусмотрен специальный интерфейс, который, хотя и называется ODBC (в документации), но на самом деле представляет собой роутер для взаимодействия и не снижает производительности, как это имеет место в обычных универсальных интерфейсах ODBC (это проверено).
Во-вторых, настройки совместной работы CTD и SQLServer 7.0 описаны в документации, которая в демо-версии присутствует в полном объеме - это книга (ccod.pdf - главы 4 и 8. В главе 4 дана специфика работы с SQLServer7.0, а в главе 8 настройки ODBC). Datasource настраивается обычным образом в администраторе ODBC32. В файле SQL.ini клиентской части вы должны определить связь в секции (задается необходимая comdll):
[win32client.dll]
comdll=sqlodb32
Возможно, потребуются настройки и в секции:
[win32client.odb32]
Это уже по Вашему усмотрению.
После настройки нужно проверить коннект через DataBaseExplorer, встроенный в CTD, но не с SQLTalk (эта утилита работает только с SQLBase). При удачных действиях вы увидите вашу БД и сможете с ней работать.
Вопрос: Можно ли на ORACLE обратиться к двум БД - DB1 и DB2 и существует ли возможность сделать это средствами CTD?
Ответ: Могу сообщить следующее:
- Точно не знаю, может ли ORACLE может выполнить запрос одновременно к двум БД, но если это так, то возможно Вам помогут новые функции, включенные в CTD2000 для работы PL/SQL блоками.
- Это функции:
SqlOraPLSQLPrepare
SqlOraPLSQLExecute
SqlPLSQLCommand
они включены и в описание Funcref.pdf.
- Если подключиться к одной БД, а затем в PL/SQL блоке выполнить нужные подключение к новой (новым) БД, то может быть запрос такого вида будет работать.
Вопрос: Может ли SQLWindows может работать и через 32-хразрядный ODBC?
Ответ: К сожалению прямой ссылки, на документацию о совместном использовании SQLWindows (я понимаю как 16-ти разрядную версию) ODBC32 я пока не нашел. Но, судя, по тому, как работают 16-ти разрядные приложения с 32-ти разрядными, например QUEST и локальный SQLBase 7.1 или ERWIN 2.6 c ним же, то на этот вопрос можно ответить отрицательно. Для SQLWindows нужен 16-ти разрядный ODBC. Кроме того, из логики взаимодействия, конструирования и передачи параметров в приложениях, следует, что без дополнительных "примочек" такое взаимодействие невозможно.
Ответ:
- Дело в том, что в новых интерфейсных DLL изменена последовательность импортируемых функций и поэтому приложения, сделанные в среде старых версий (например, 1.5.1) не могут правильно обращаться к внутренним функциям DLL, поэтому необходима "родная" DLL из этой версии.
- Если Вы инсталлировали CTD без поддержки ORACLE, то эта DLL у Вас не будет доступна, но можно не выполнять новую инсталляцию, а взять DLL их DEPLOY или с другого компьютера, на котором она есть и версии соответствуют.
01.02.06
Вопрос: Как подключиться к СУБД ORACLE из среды Gupta Team Developer?
Ответ:
- Для подключения к СУБД ORACLE нужно сделать настройки в SQL.INI. Как минимум в 2-х местах.
В секции:
[win32client.dll]
Задается новый роутер:
comdll=sqlora32
Имейте в виду, что эта библиотека должна быть проинсталлирована при установке GTD.
- В секции:
[oragtwy]
Задается имя БД и сервиса БД:
remotedbname=<db_name>,<connect_string>
например:
remotedbname=ORDB,@,
где имя БД - ORDB , а имя сервиса ORSERV.
Для уточнения параметров подключения см. документацию: книга ccod.pdf раздел - 4.
Возможны и другие настройки, здесь даны минимально необходимые, их использование и назначение Вы найдете также в документации.
- Отмечу также, что Data Base Explorer GTD не сможет корректно работать с ORACLE, так как требуются системные таблицы для его работы (например, SYSTABLES), которые в ORACLE имеют другие названия. Для работы с БД используйте штатные средства ORACLE.
23.11.05
Вопрос: При использовании внешнего result set выводится ошибка с номером 163 ("Result set not active"). Как этого избежать?
Ответ: Это сообщение об ошибке обычно связано FRS*:* файлами, которые не удалены в случае аварийного отказа. Прежде, чем запускать программу, изучите каталог TEMP (C:\TEMP или подобный) и удалите все файлы, начинающиеся с "FRS". Дополнительную информацию можно получить по адресу:
http://www.centurasoft.com/support/tech_info/knowledge_base/ctdinfo/error163.html
Вопрос: Как необходимо сконфигурировать подключение с Oracle для 16-разрядных (SQLWindows) приложений?
Ответ: Запустите SETUP.EXE из каталога "Window" CD Oracle, чтобы установить 16-разрядного клиента. После этого запустите 16-разрядный NET*EASY, чтобы сконфигурировать псевдоним базы данных, например. Database Alias:
MyDB
Protocol: TCP/IP
Host Name: 192.1.11.28
Database Instance: MyDB Далее, запустите 16-разрядный SQLPlus (Oracle для Windows) чтобы проверить соединение с базой данных, использующей псевдоним MyDB. Если связь не может быть установлена, это - проблема установки Oracle.
Так-же запустите SQLTalk, чтобы связаться с тем же самым псевдонимом базы данных. Для этого требуются правильные установки программного обеспечения для Oracle и следующих секций в SQL.INI:
[ Winclient.dll]
Comdll = sqloraw
[ Oragtwy]
Remotedbname = MyDB, TNS:MYDB
Вопрос: Требуется вставить/модифицировать данные в базу данных Oracle. При этом выводится ошибка "ORA-01465 Invalid hex number". Что делается неправильно?
Ответ: Возможно один из ваших столбцов в базе данных имеет тип "LONG ROW". Для работы с таким типом данных необходимо произвести следующее преобразование SqlSetLongBindDatatype(nBindVarNumber, nDatatype) между выражениями SqlPrepare() и SqlExecute().
Вопрос: Для числовых значений в формате, отличном от US данные отображаются неправильно, при выборке из базы данных Oracle. Как этого можно избежать?
Ответ: Вы должны изменить параметры настройки для тысяч и десятичных разделителей на международный формат. Необходимо выполнить следующий набор команд:
ALTER
SESSION SET NLS_NUMERIC_CHARACTER = ‘.,’
Выполнив следующую команду, Вы можете изменить параметры установки дат:
ALTER SESSION SET NLS_DATE_FORMAT = ' YYYY-MM-DD-HH24.
MI.SS'
Направление сортировки:
ALTER SESSION SET NLS_LANGUAGE = GERMAN.
Вопрос: Как установить уровень оптимизатора для Oracle?
Ответ: Параметры настройки оптимизатора могут быть изменены с помощью команды:
ALTER SESSION SET OPTIMIZER_GOAL = <уровень>
Где уровень – это одно из следующих значений:
RULE |
Rule-based optimization(index) |
CHOOSE |
Cost-based optimization(index+amount of data+location of data) |
FIRST_ROW |
Cost-based optimization for the first rows of the result set |
ALL_ROWS |
Cost-based optimization for the entire result set |
Вопрос: Является ли возможным просмотреть Execution Plan для SQL-запросов
Oracle?
Ответ: Oracle отображает execution plan для объектов базы данных с помощью команды "EXPLAIN PLAN". Чтобы воспользоваться этой командой необходимо убедиться, что таблица "PLAN_TABLE" существует. Ее описание находится в файле UTLXPLAN.SQL:
CREATE TABLE PLAN_TABLE (
statement_id varchar2 (30),
timestamp date,
remarks varchar2 (80),
operation varchar2 (30,
options varchar2 (30),
object_node varchar2 (128),
object_owner varchar2 (30),
object_name varchar2 (30),
object_instance numeric,
object_type varchar2 (30),
optimizer varchar2 (255),
search_columns numeric,
id numeric,
parent_id numeric,
position numeric,
cost numeric,
cardinality numeric,
bytes numeric,
other_tag varchar2 (255),
other long);
Вопрос: Как подключиться из SqlWindows к Oracle 8?
Ответ: Используйте 16-битный SqlNet 2.3, поставляемый с Oracle 7.3. По умолчанию устанавливается 32-разрядный клиент для Windows’NT, 95 или 98. Чтобы установить 16-битный SqlNet, необходимо войти в каталог Windows на CD Oracle и запустите 16-битный установщик.
Вопрос: Для вызова хранимой процедуры создана функция CTD; внутри нее вызывается функция SqlPLSQLCommand(). Передача параметров в хранимую процедуру и из нее осуществляется через параметры функции. Однако значения, возвращаемые процедурой в эти параметры не попадают.
Ответ: Для вызова хранимой процедуры создана функция CTD; внутри нее вызывается функция SqlPLSQLCommand(). Передача параметров в хранимую процедуру и из нее осуществляется через параметры функции, однако значения, возвращаемые процедурой, в эти параметры не попадают.
Вопрос: Имеется проблема с работой CTD 1.5.1. под Oracle 8.1.5. Как ее избежать?
Ответ: В Интернет на сайте www.centurasoft.com есть такая информация. Хотя Ваша проблема, по-моему решена, т.к. новых звонков от Вас не последовало, я все-таки решил Вам ее сообщить в первозданном виде. Может быть, она будет полезна в дальнейшем.
Tech Alert September 10, 1999
CTD 1.1.2 or 1.5.x and Oracle 8.1.5 ( Oracle 8i )
Description:
CTD Applications fail to connect to Oracle 8i (also called Oracle 8.1.5)
Solution:
There are actually two solutions to the problem.
You can install the Oracle NET8 client software from Oracle 8.0.5 and it will communicate correctly with Oracle 8i. You can also use the SQL*Net 2.3 client software from Oracle 7.
-OR-
Use the Oracle 8i (8.1.5) client software and manually add the following entry
into the Registry at location:
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\
Add the following string value:
ORAOCI ORACLIENT8.DLL
and you will be able to successfully use the Oracle 8i (8.1.5) client software. You will still need to run the VIEW8.ORA and PLSVIEW8.ORA scripts, logged on as "SYS", in order to use the Database Explorer with Oracle 8i.
Note: This information only applies to Centura 32-bit applications, not to SQLWindows 16-bit applications, because the Oracle 8i client software is exclusively 32-bit.
Вопрос: Что нужно делать, чтобы запускать хранимые процедуры Oracle операторами SqlOraPLSQLPrepare и SqlOraPLSQLExecute в GTD?
Ответ: Действительно - в первоначальной версии CTD2000 были недочеты при выполнении этих функций. Для ликвидации данной ошибки нужно с сайта centurasof.com скачать PTF1. После установки его эти ошибки проявляться не будут.
Вопрос: На некоторых машинах, с абсолютно идентичными DLL, SQL.INI файлами и установкой ODBC, производится попытка установки связи. На некоторых машинах выдается ошибка, на других подключение безаварийно. Как можно устранить эту проблему?
Ответ: Эта ошибка связана с проблемой определения путей загрузки DLL. Необходимо исследовать, как загружаются необходимые модули на машинах с нормальной свяью и сравнить со сбойными машинами. Некоторые драйверы устанавливает ODBC Администратор(ODBC32. DLL). Это приводит к несоответствию версий ODBC Engine.
Вопрос: Как можно использовать "begin transaction" и "commit transaction" в сохраненных процедурах для MS SQL Server (ver. 6.0 или 6.5)?
Ответ: Если необходимо использовать "begin transaction" и "commit transaction" (или "rollback transaction") в сохраненных процедурах для MS SQL Server(ver 6.0, или 6.5) включите AUTOCOMMIT перед вызовом сохраненных процедур:
Call OdrPrepareProc(hSql, 'Call myproc ', ")
Call SqlSetParameter (hSql, DBP_AUTOCOMMIT, TRUE, ")
Call SqlExecute (hSql)
Call SqlSetParameter (hSql, DBP_AUTOCOMMIT, FALSE, ")
Если нет установки AUTOCOMMIT ON, Centura SQL/API неявно добавляет "begin tran" прежде, чем вызывается любое DML утверждение и "commit tran" когда вызывается SqlImmediate('COMMIT’). Процедура сообщит об ошибке возврата транзакции:
Create procedure myproc
AS
If @@ TRANCOUNT < > 0
begin
return -1 - - error
end
...
begin tran
-- make some DML here
.....
If <ERROR>
rollback tran
else
commit tran
Вопрос: Как можно конкатенировать столбцы в утверждениях SELECT (MS SQL Server)?
Ответ: Использование ‘||’ не отрабатывается. SQL Server использует знак '+' для конкатенации столбцов, как показано в следующем примере:
SELECT colA + colB + colC FROM tableD INTO :sVar
Вопрос: Нет доступа к JDBC-драйверам для работы. Что неправильно?
Ответ:
Убедитесь, что используется коммерческий выпуск JDBC драйвера а не файлы .class от бета выпуска.
Переименуйте каталог установоки следующим образом: C:\Centura\centura\java\sqlbase\
Чтобы зарегистрировать драйвер, необходимо использовать следующий способ включения: "centura.java.sqlbase.SqlbaseDriver "
Чтобы проверить подключение JDBC, используйте утилиту JDBCTest, доступную на http://www.intersolv.com
Вопрос: Есть возможность из переменной типа Sql Handle получить доступ к значению ORACLE Handle? Нам это было бы весьма полезно для написании SQL-запросов в DLL.
Ответ: Посоветовался с пользователями совместной архитектуры TD и ORACLE, и могу сообщить. Курсор типа Sql Handle – это внутренняя структура TD и, поэтому, не может использоваться для работы напрямую с ORACLE из автономных DLL. Для такой возможности нужно обеспечить из DLL подключение к ORACLE через C API (через sqlwntm.dll) и работать напрямую с роутером ORACLE (OCIW32.dll). Описание этих библиотек есть: для sqlwntm.dll - книга API.PDF, а OCIW32.dll - должна предоставляться с клиентской частью ORACLE.
06.06.2003
Вопрос: При переходе с CTD 1.5.1 на TD 2.1 мы не можем исправить и сохранить файл текста программы. Что делать?
Ответ: Такая ситуация встречается очень редко, но она полностью не исключена в больших программах. Скорее всего, вы использовали буфер обмена при копировании фрагментов из одной версии в другую. Для исключения такой ошибки можно предпринять следующие шаги:
- Сохраните в версии 1.5.1 Вашу программу в текстовом формате (*.apt). Загрузите в новую версию 2.1 программу в формате *.apt, а затем запомните в формате *.app.
Если не получится:
- Загрузите программу в TD 2.1. закомментируйте часть текста программы и сохраните. Если не получится, то закомментируйте другую часть программы, откоментировав первую (методом проб и ошибок). После комментирования и разкомментирования включается преобразователь комментария в текст и происходит исправление ошибок форматирования, которые могут случайно возникнуть при копировании через буфер обмена.
Если не получится:
- Постарайтесь локализовать фрагмент текста, в котором возникла ошибка (методом комментирования). Это может быть 1-2 строки. Наберите текст заново.
27.02.2003
Вопрос: Используется CTD/SQLWindows SQLRouter для ODBC. При этом ODBC драйвер не перечислен в списке доступных драйверов. Что можно сделать?
Ответ: Невозможно проверить все ODBC драйверы. Если драйвер совместим с ODBC 2.0, то он должен работать. Если имеются трудности с типами данных, обратитесь к интерактивной справке для получения информации о DCC.INI.
Вопрос: Как мне восстановить информацию из системного каталога ODBC источника данных?
Ответ: Это может быть выполнено с помощью непосредственного подключения ODBC API. Либо с помощью использования ODBCTESTX.OCX(свободно распространяемый ActiveX компонент), который работает с ODBC API.
2.6. Разное
Вопрос: Как выбрать подходящее средство разработки?
Ответ: Короткий ответ:
Ответ на поставленный вопрос зависит от целого ряда факторов и условий, уточнение которых поможет выбрать подходящее программное обеспечение для поставленной задачи. По грубой оценке задачи можно предложить проверенные на практике многих разработчиков средства: для разработчиков Centura Team Developer (1.2 - 2.0) - SQLWindows/SQLWindows32, а для хранения данных SQLBase 6.1/7.5.
Возможный распространенный ответ:
Ответ на поставленный вопрос зависит от целого ряда факторов и условий, из которых можно выделить следующие главные:
- Ориентировочные объемы БД (Мб - Гб)
- Количество пользователей в системе (возможно и однопользовательский вариант)
- Предполагаемая стоимость работ
- Квалификация разработчиков и программистов, доступных для проекта
- Требования к быстродействию, надежности и стоимости при эксплуатации системы.
- Другие факторы, существенные для конкретной реализации.
Если хотя бы ориентировочно определены перечисленные факторы, то выбор состоит все-таки из ограниченного числа вариантов:
- Большие, затратные системы с большим числом рабочих мест, иерархической структурой, разработчики высокой квалификации, большие затраты на эксплуатационное ПО, трудоемкой эксплуатацией, числом рабочих мест >20, длительным этапом проектирования, разработки и внедрения - СУБД - ORACLE и его родные средства разработки программного обеспечения (либо SYBASE, либо INFORMIX).
- Системы средней размерности, число рабочих мест от 3-15, разработчики квалификации средней или чуть выше, сносными требованиями проектированию, затратам на ПО и стоимости эксплуатации, легкость в сопровождении - СУБД SQLBase и средства разработки SQLWindows/ SQLWindows32 (Centura Team Developer CTD 1.5 - 2.0) фирмы CENTURA/Gupta ( либо MS VB + MS SQLServer). Кроме того, для данного случая может быть хорошим с точки зрения быстродействия и стоимости вариант использования RDM/ROM(средства разработки RAIMA DATA MANAGER и разработки RAIMA OBLECT MANAGER), С++ (например Inprise) и Velocis(СУБД) при числе рабочих мест до 5-ти.
- Для малых систем, однопользовательских систем и систем с числом РМ до 5-ти, эффективным будет применение С++ (Borland C++Builder предпочтителен по надежности ПО), правда для квалифицированных программистов, и API для работы с БД (DBD - BDE и др.), а также средств RDM/ROM (или средств этого же уровня) + СУБД Velocis, при требованиях к программистам чуть ниже целесообразно использование продуктов CENTURA (SQLWindows/ SQLWindows32 Centura Team Developer CTD 1.5 - 2.0), которые имеют и однопользовательский вариант и развитые возможности выхода на С/С++. Возможным вариантом является применение VB и настольных СУБД (MS Access) для программистов более низкой квалификции.
- Самым дешевым и простым способом является использование систем электронных таблиц типа MS EXCEL, однако, никакой гибкости, ненадежность и сложности в обучении пользователей гарантированы.
Вопрос: Нас очень заинтересовала бы система разработки приложений с возможностью получать СТАНДАРТНЫЙ C++ код. Нет ли в природе чего-нибудь универсального?
Ответ: Вообще в вашем вопросе содержится много неопределенного (какие функции Вас не устраивают, какие системы классов и почему Вас не удовлетворяют и т.д.), однако, попробую все-таки ответить.
Если брать мировую практику разработки программ на С и С++, то действительно: оценки систем программирования Borland C++ и Microsoft C++ не очень высокие: они с трудом попадают в первый десяток систем разработки на С++. Однако так сложилась тенденция распространения продуктов в нашей стране, именно они из-за своей доступности (бесплатности) получили у нас широкое распространение. Так системы Watcom, Zortech C++, Visual Age C++, всегда у профессиональных программистов ценились выше. Данные системы программирования не часто появляются на "доступных" CD и торговых фирмах. Кроме того, в Интернет есть большое количество складов библиотек для С и С++.
Если Вы имеете ввиду средства проектирования программ, в частности то, что называется CASE-технологиями, то в настоящее время это направление бурно развивается и здесь можно рассматривать продукты многих фирм-лидеров: Rational, Platinum (+ Logic Works), SilverRun, Embarcadero, из отечественных CaseAnalitic (SoftArt) и т.д. Информацию о продуктах этих фирм можно найти на одноименных сайтах. Однако с генерацией кода в них на практике не так хорошо, поэтому их применение эффективно в первую очередь, все же, на этапах проектирования и сопровождения.
Вообще, если речь идет о создании приложений и сложных программных систем клиентов баз данных, то мне, несмотря на то, что я сам являюсь приверженцем языка С и С++, придется сказать, что использование этого языка для данных целей не является лучшим выбором. Это, к сожалению, факт. API (например, API для SQLBase), которое предлагается для многих СУБД не просто в освоении, и, тем более, трудоемкость разработки приложений велика. Хотя этот вариант нельзя отбрасывать для разработки профессиональных систем.
Наиболее предпочтительным может быть комбинированный вариант: основой приложения являются специальные средства разработки уровня 4GL (например, SQLWindows компании Centura, Centura Team Developer, Developer фирмы Oracle и др.), а для более ответственных участков используется С или С++, функции которых вызываются из приложений при обращении к DLL. Язык SAL, используемый в SQLWindows очень приближен к С и С++, однако в нем нет той сложности, которые испытывают разработчики при изучении системы классов, в частности Borland C++ и Microsoft C++, есть все основы для объектно-ориентированного проектирования и проектирования, коллективной разработки, создания собственных шаблонов и библиотек, достаточное количество стандартных и подключаемых объектов (COM и ActivX). Можно много говорить о достоинствах этого варианта, хотя конечно существуют и недостатки. Многие разработчики для создания программных систем клиентов баз данных все же предпочитают эти доступные на нашем рынке и не дорогие, даже по сравнению с Borland C++ и Microsoft C++, средства разработки.
Теперь по вопросу универсальности. Не думаю, что универсальная система программирования Вас больше устроит, так как с универсальностью очевидно теряется простота и прозрачность для создания систем. Здесь, по-видимому, нужен здравый компромисс.
Извините за некоторые общие рассуждения, возможно Вам знакомые, но более конкретный ответ на Ваш вопрос возможен только при уточнении исходных посылок: какой класс задач-приложений Вы хотите создавать, какими ресурсами располагаете, каков уровень ваших программистов (средний или высокий, для низкого я бы порекомендовал VB), почему Вас не устраивают все-таки функции и классы Borland C++ и Microsoft C++ и т.д.
Вопрос: Есть ли наличие "родного" компонента для Delphi 7, обеспечивающего интерфейс с библиотеками RDM ?
Ответ:
- Интерфейс с RDM Embeded и RDM Server реализуется через стандартные DLL, поэтому взаимодействие возможно из любых средств разработки, в том числе и Delрhi 7.
- В явном виде прописаны "родные" для продуктов MS: VS .Net, VC, VB и VJ, для них даны примеры. Особенность заключается в том, что даны заголовочные файлы для доступа к DLL.
- Для любой системы программирования на основе собственных заголовочных файлов(их легко сделать самому) можно обеспечить доступ к этим DLL.
- В крайнем случае, есть вариант поставки RDM с исходными текстами, и тогда Вы сами можете сгенерировать необходимые DLL для Вашей системы программирования.
07.10.03
Вопрос: В предыдущих версиях SQLBase 6 и SQLWindows был QUEST, где он в CTD2000?
Ответ: В новой версии QUEST нет, он существует только в 16-ти разрядном варианте. Вместо него предлагается использовать DataBase Explorer. Но если Вы работаете по сети, то можете, настроив правильно протоколы подключения, подсоединиться со старым QUEST 3.1 к новому серверу и он будет работать! Только зачем?
За дополнительной информацией обращайтесь в компанию Interface Ltd.
Обсудить на форуме Gupta Technologies