Вы находитесь на страницах старой версии сайта.
Переходите на новую версию Interface.Ru

FAQ по продуктам Gupta/Centura



Общие вопросы

Управление данными

Сообщения об ошибках

Сохраненные Процедуры

Платформы

Инструментальные средства

SQLConsole

SQLTalk

SQL Windows

Quest

Centura Team Developer

Connectivity

 

Основные

Oracle

Microsoft SQLServer

JDBC

ODBC


Общие вопросы

Вопрос: Присутствует ли в ПО, поставляемом нашей компанией, в "генераторах отчетов" Centura/Gupta "интеграция с Active Directory" или необходимо приобретать данный сервис отдельной статьей?

Ответ:

  1. На самом деле мне не очень понятен вопрос и возникшая в связи с ним проблема. Сервис Active Directory включен в операционные системы начиная с Windows 2000 и, по-моему, никаких дополнительных средств интеграции для его использования не нужно. Дополнительных компонент в списке продуктов фирмы Centura/Gupta нет. Нет и ссылок на такие компоненты.
  2. На мой взгляд, доступ на программном уровне к таким сервисам возможен посредством технологий АХ/СОМ или непосредственным доступом к объектам через Windows API. И первая, и вторая возможность в среде разработки GTD есть, причем первая выполняется на основе специально сгенерированных классов (генерируемых автоматически GTD на основе tlb, ocx и т.д.), а вторая реализуется прямым доступом к любым DLL стандартного вида, посредством прямого вызова функций API. Кстати, доступ ко всем продуктам MS Office(WORD, EXCEL и т.д.) выполняется очень удобно на основе АХ.
  3. Для доступа к файлам и каталогам в среде GTD предусмотрены функции, которые корректно работают с длинными именами файлов и путями доступа. Организация объектов Active Directory и привилегий доступа к ним должна выполнятся средствами операционной системы на уровне администрирования, включая и репликации, и поэтому при задании возможности доступа к файлам, Вы их можете программно создавать и изменять, а ОС обеспечит все возможности поддержки технологии Active Directory.
  4. По поводу генерации отчетов в GTD предусмотрено два варианта: программный и режим конечного пользователя. В программном варианте формирование отчета, с помощью специальных функций и шаблонов может контролироваться полностью программно вплоть до их формирования, печати и сохранения. В режиме конечного пользователя в интерактивном режиме пользователь может построить запрос и оформить его в форме отчета без программирования. Эти отчеты могут быть записаны в виде отдельных файлов и помещены в виде объекта в Active Directory. Для построения отчетов доступен также через технологию AX COM объект, с которым можно работать обычным образом.

27.10.05


Вопрос: На семинаре представители ГУПТы, говорили о возможности использования технологии XML при формировании отчетов с помощью RB. Как это можно применить в информационных системах?

Ответ:

  1. Пока в документации по RB (report builder) нет новой информации по выгрузке отчетов явно в формат XML, по всей видимости, эти нововведения не отражены пока в документации или будут позднее.
  2. Технологию XML в информационных системах можно использовать напрямую, с использованием установленных АХ объектов, или с помощью специальных классов и функций, которые встроены в TD.
  3. В частности, можно использовать классы XML таблиц и колонок (например, SalTblPopulateFromXML и т.д.) или простые функции для работы с XML документами (SalTblWriteXMLAndSchema и т.д.).
  4. Более подробная информация есть в статьях на нашем сайте и в документации по TD (dev.pdf).

05.04.05


Вопрос:   При большом объеме кода(более 100 Мб) Centura отказывается компилировать приложение. Что делать? Может быть перейти на новую версию у меня CTD 1.5.1.?

Ответ:   

  1. Конечно с переходом на новые версии CTD2000, TD 2.1 и TD 3.х вы получите много дополнительных возможностей. Желательно переходить на самые последние версии. В этих версиях допустимый размер текста OUTLINE увеличен, но возможно не настолько, чтобы переварить 100 мб. Конкретных ограничений в документации нет, так как это зависит не только от объема текста программы, но и от его содержания.
  2. В сложных случаях (сбоях и ошибках OUTLINE) удается восстановить текст преобразованием программы в *.apt и обратно. В версии 1.5.1 были ошибки, связанные с сохранением текста.
  3. Технологически оправдано использование для больших программных систем подключаемых DLL, динамических библиотек (APD) и связывающих библиотек -APC, которые корректно формируются версиями TD.
  4. Переход на эту технологию несложен, практически не требует дополнительной отладки и сделает Ваш проект значительно более живучем и легко сопровождаемым.

06.11.03


Вопрос:   На одном компьютере установлена клиентская часть CTD2000 и TD3. Если запускать приложение из под TD30, а потом CTD2000 ломается приложение под CTD2000, если CTD2000, а потом TD30, то ломается приложение TD30 ( ломается - cdlliXX.dll ). Какие будут предложения ?

Ответ:  

  1. Можно попробовать полностью изолировать приложение вместе со средой RUNTIME, записав все в одну директорию вместе с повторяющимися DLL для версий. При этом желательно дать имена каталогам отличными от стандартных и убрать их вообще из PATH. Запускать приложения нужно из текущего каталога (или настройки ярлыка).
  2. Имейте ввиду, что информация о работе TD, думаю, что и при RUNTIME установке, записывается в реестр Windows, и здесь возможны пересечения. Можно попытаться сделать и там ручные правки путей и проверить запуск двух программ.
  3. Если Вы используете АХ и СОМ, то возможны конфликты на уровне APL и DLL при их совместном использовании. Здесь, как в п.3 нужно тоже все проверить и настроить.
  4. У меня, я специально проверил, одновременно работают два приложения (правда из среды CTD2000 и TD 2.1, а не RUNTIME) с одним сервером и никаких конфликтов и завалов нет.

06.11.03


Вопрос:   Есть SQLBase Server 6.1.0. Есть ли возможность запустить его по протоколу MS IPX/SPX?

Ответ:  

  1. Версии SQLBase Server 6.1.0. прекрасно работают под NetWare. Для их запуска необходимо подключить соответствующую интерфейсную библиотеку - comdll=sqltsp ( для 5-й версии). Впрочем версии подключаемых DLL - роутеров нужно уточнять по документации для версии сетевой операционной системы (NetWare) и версии SQLBase. а для клиента - comdll=sqlspx32.dll ( для 5-й версии) или comdll=sqlspxw4.dll ( для 4-й версии 16 -ти разр.)
  2. Вообще ранее версии предоставлялись для всех сетевых операционных систем в одной упаковке, но все-таки желательно, чтобы клиент проверил, предоставлена ли ему возможность развернуть SQLBase Server под NetWare соответствующей версии. Это должно быть написано на коробке с продуктом.

07.10.03


Вопрос:   Есть ли наличие "родного" компонента для Delphi 7, обеспечивающего интерфейс с библиотеками RDM ?

Ответ:  

  1. Интерфейс с RDM Embeded и RDM Server реализуется через стандартные DLL, поэтому взаимодействие возможно из любых средств разработки, в том числе и Delрhi 7.
  2. В явном виде прописаны "родные" для продуктов MS: VS .Net, VC, VB и VJ, для них даны примеры. Особенность заключается в том, что даны заголовочные файлы для доступа к DLL.
  3. Для любой системы программирования на основе собственных заголовочных файлов(их легко сделать самому) можно обеспечить доступ к этим DLL.
  4. В крайнем случае, есть вариант поставки RDM с исходными текстами, и тогда Вы сами можете сгенерировать необходимые DLL для Вашей системы программирования.

07.10.03


Вопрос:   Как при форматировании цифровых (Number) (TD 2.1) полей ввода данных сохранить лидирующие нули? Например для ввода номера паспорта.

Ответ:  

  1. Во-первых для ввода таких данных можно воспользоваться форматом типа String.
  2. Во вторых можно указать формат отображении (типа PICTURE) не включая туда знак “#”. Однако при модификации поля, возможно, оно опять переформатируется без лидирующих нулей. Здесь придется идти на хитрости: повторный вывод в поле, или всего окна, но лучше см. п.1.
  3. Думаю, что данная ситуация будет исправлена в PTF.

29.08.03


Вопрос:   При работе с SQLBase через C API из TD 3.0 неправильно отрабатывают функции sqlunl (для UNLOAD) и sqlldp (для LOAD), что делать?

Ответ:  Действительно в первой редакции есть такая ошибка. Для ее исправление можно взять интерфейсную DLL - sqlwntm.dll из предыдущих версий они полностью совместимы и работают. Думаю, что в первых же PTF и UPGRADE данная ошибка будет исправлена.

29.08.03


Вопрос:   Какие есть категории пользователей с усеченными правами администрирования в SQLBase?

Ответ:   Существуют четыре категории пользователей, которые различны по правам:

Также можно детализировать права и привилегии пользователей специальными командами (GRANT).

Кроме того возможна работа с БД в режиме READONLY

31.07.03


Вопрос:   Каково допустимое число уровней вложенности триггеров в SQLBase?

Ответ:   Уровень вложенности триггеров в SQLBase равно 8-ми.

31.07.03


Вопрос:   При работе с CTD 1.5.1 под WINDOWS XP не можем получить доступ к функциям печати Report Builder. Печать не работает ни в режиме RUNTIME, ни в интерактивном режиме работы с RB. Что делать? Установки PTF не помогают.

Ответ:   

  1. Действительно версия 1.5.1 пока не сертифицирована для работы под XP. Кардинальный выход - переход на новую версию (любую) и все будет работать.
  2. Однако можно для режима RUNTIME сделать псевдо-PTF (поясню чуть ниже). Возможно, это не совсем законно, но если фирма не дает обновления и исправления ошибки, то думаю, что это можно сделать.
  3. Для обновления необходимо (псевдо-PTF): - из старшей версии (например CTD2000, можно из демо или evalution) перекачать DLL rdwi20.dll и переименовать ее в rdwi15.dll (данная DLL отвечает за печать RB). - подкачать еще 5 DLL, которые будут запрошены при запуске просмотра файла перед печатью (gctli20.dll, geei20.dll, gobji20.dll, gtlsi20.dll и snumi20.dll). В этом случае переименовывать ничего не нужно. - далее запустить приложение.
  4. Если у Вас стоит и новая версия и Вы по каким-либо причинам не хотите для данной программы на нее переключаться, то достаточно для установки псевдо-PTF сделать только 1-й шаг (переписав rdwi15.dll) и обеспечить путь к ее каталогу.

Кстати в этом случае будет работать и интерактивный режим RB, для чего нужно переписать файл repbi20.exe, переименовав его в repbi15.exe. Все также будет работать.


Вопрос:   Мы работаем с VB DLL построенной в виде COM DLL, но не можем получить доступа к функциям. Работа выполняется из функций окна.

Ответ:   

  1. Если СОМ объект создается в функции, то после ее завершения, как локальный объект он разрушается и это нужно учитывать. Для доступа из разных функций к одному объекту необходимо его создать как глобальный, например в секции обработки сообщений - SAM_AppStartup.
  2. При передаче параметров в методы объекта, после его создания доступ к методам выполняется так (COMVBDLL имя COM DLL, FUN - имя вызываемой функции,а PAR - параметр):

В данном примере мы получаем строковый и числовой параметр.


Вопрос:   Можно ли при работе с файлами DBF через ODBC из TD обеспечить корректную многопользовательскую работу?

Ответ:   При автономной работе с файлами ODBC вы работаете в рамках архитектуре файл-сервер. Если Вы обращаетесь автономно к файлам, то синхронизации запросов от многих пользователей достач невозможно, нужно иметь СУБД или специальные средства синхронизации. Средства ODBC, работая в этом случае как транслятор запросов, этого не обеспечивают.


Вопрос:   При работе с классом 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. Потом нужно сохранить и работать в приложении.


Вопрос:   При печати отчетов с помощью RB иногда возникает зависание для локальных принтеров. Что делать?

Ответ:   

  1. Скорее проблема связана с настройкой драйверов печати и формированием спуллинга (Spool).
  2. Если после правильных настроек проблема не пропадает, выполните настройку на непосредственный вывод информации на принтер (прямая печать) и все будет работать стабильно.

Вопрос:   Насколько сложен переход приложения для работы с новыми версиями средств разработки Centura?

Ответ:  Q перехода был описан в FAQ ранее. Практически все выполняется автоматически при движении от младших версий к старшим. Проблемы могут возникнуть только при переименовании DLL (15-20) или при вложенных модулях (include). При переименовании выполните первоначально комментирование старой библиотеки, а затем после копирования переопределите новую. Для вложенных модулей, также сначала закоменитирйте, переведите под новуюверсию отдельно все модули, а затем раскоментируйте и переведитеосновной модуль, тогда будет исключено двойное подключениесоставляющих компонент. В некоторых случаях может потребоваться для перевода предватирельно перевести модули в формат APT, а затемпосле перевода обратно в формат APP.


Вопрос:   Планируем использовать программные продукты фирмы Centura/Gupta для разработки прикладного программного обеспечения. Какие средства могут быть использованны для создания инсталяции готового программного продукта.

Ответ:   Специальных средств для создания инсталяций приложений в Centura пока не предусмотрено. Можно воспользоваться широко распространенным средством InstallShild или другими. Можно сделать и собственные.


Вопрос:   Что такое технология работы TouchPoint 1-3?

Ответ:   Технология работы TouchPoint основана на Raima Database Manager (встроенная СУБД) и предлагается фирмой Mbrane (частью фирмы Центура), которая образовалась после реорганизации. Ориентирована на множество платформ, начиная от самых малых (RTOSs, таких как VxWorks, QNX, ITRON, и Linux). Предназначена для создания распределенных систем с использованием мини-компьютерных устройств (мобильные телефоны, мини-компьютеры, записные книжки).


Вопрос:   Есть ли в Сentura средства репликации баз?

Ответ:   Для построения репликаций в Сentura предусмотрены несколько возможностей. Различают SQLBase Exchange Server и SQLBase Exchange Desktop. SQLBase Exchange Server предназначен для реализации технологии распределеных БД, включая автоматическую организацию различных видов репликаций.

SQLBase Exchange Desktop в первую очередь ориентирован на один компьютер и обеспечивает конвертирование БД различных форматов, включая и преобразование даннных. SQLBase Exchange Desktop поддерживает также выполнение скриптов для выполнения сложных репликаций. Более подробную информацию вы найдете в документации exchange.pdf.


Вопрос:   Расскажите пожалуйста, чем можно обосновать использование средств Centura? В чем преимущества работы на Centura?

Ответ:   Некоторая информация, в которой есть характеристика CTD2000, содержится на сайте www.inteface.ru в статьях, посвященных продуктам Centura. Хотя, я думаю, Вы с ней знакомы. В дополнение, и особенно для руководства, можно сформулировать следуюшие опорные критерии обоснования:

  1. Centura дает комплексное рещение (Есть родные средства разработки, СУБД, WEB поддержка, современные ОС, репликации, все уровни программирования - от C++ до Quick Object).
  2. Есть поддержка, причем с 12-летней историей, всех мощных СУБД Oracle, SQLBase, Sybase, MS SQL Server и других.
  3. Развитые и адаптированные под современные требования средства построения пользовательского интерфейса, причем программирование при минимуме ограничений намного проще, чем на C++ и Pascal (в 2-3 раза) (студенты осваивают CTD и делают на нем курсовую за 2-3 недели).
  4. Фирма Centura сейчас довольно устойчиво закрепилась на рынке, у нее мощнейший заказ для ВМФ США.
  5. В CTD 2000 много новых возможностей (AX, MS OLE DB, динамика объектов и т.д.) и исправлены предыдущие ошибки. Можно привести еще много аргументов, но и эти должны быть услышаны.

Вопрос:   Где можно найти дополнительную информацию о продуктах компании Centura?

Ответ:  На сайтах http://www.centurasoft.com и http://www.interface.ru


Вопрос:   Где я могу найти информацию о серверах баз данных компании Centura и проблеме 2000 года?

Ответ:   Все новые версии SQLBase соответствуют 2000 году. Более подробную информацию можно найти на http://www.centurasoft.com/support/tech_info/b ulletins/cli2000.htm. Ваши прикладные программы, которые обращаются к SQLBase, также следует проверить. Используйте утилиту, доступную на ftp.centurasoft.com/products/utilities/y2ksqlb.zip чтобы проанализировать ваши SQLBase базы данных. Пожалуйста, прочитайте ReadMe.txt и License.txt после извлечения их из .ZIP файла. Раздел "Поведение функции YEAR()" так же может быть интересным


Вопрос:   В каких программных продуктах фирмы Centura решена проблема 2000 года?

Ответ:  Проблема 2000 полностью решена для следующих версий самых популярных программных продуктов:

Всем пользователями более ранних версий продуктов Centura рекомендуется сделать upgrade на любую из последних версиий. В настоящий момент возможна поставка:


Вопрос:   Перед нами стоит задача написать систему производственной себестоимости (СПС). На данный момент мы пытаемся выбрать подходящее программное обеспечение для этой задачи.

Ответ:   Короткий ответ:

Ответ на поставленный вопрос зависит от целого ряда факторов и условий, уточнение которых поможет выбрать подходящее программное обеспечение для поставленной задачи. По грубой оценке задачи можно предложить проверенные на практике многих разработчиков средства: для разработчиков Centura Team Developer (1.2 - 2.0) - SQLWindows/SQLWindows32, а для хранения данных SQLBase 6.1/7.5.

Возможный распространенный ответ:

Ответ на поставленный вопрос зависит от целого ряда факторов и условий, из которых можно выделить следующие главные:

  1. Ориентировочные объемы БД (Мб - Гб)
  2. Количество пользователей в системе (возможно и однопользовательский вариант)
  3. Предполагаемая стоимость работ
  4. Квалификация разработчиков и программистов, доступных для проекта
  5. Требования к быстродействию, надежности и стоимости при эксплуатации системы.
  6. Другие факторы, существенные для конкретной реализации.

Если хотя бы ориентировочно определены перечисленные факторы, то выбор состоит все-таки из ограниченного числа вариантов:

  1. Большие, затратные системы с большим числом рабочих мест, иерархической структурой, разработчики высокой квалификации, большие затраты на эксплуатационное ПО, трудоемкой эксплуатацией, числом рабочих мест >20, длительным этапом проектирования, разработки и внедрения - СУБД - ORACLE и его родные средства разработки программного обеспечения (либо SYBASE, либо INFORMIX).
  2. Системы средней размерности, число рабочих мест от 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-ти.
  3. Для малых систем, однопользовательских систем и систем с числом РМ до 5-ти, эффективным будет применение С++ (Borland C++Builder предпочтителен по надежности ПО), правда для квалифицированных программистов, и API для работы с БД (DBD - BDE и др.), а также средств RDM/ROM (или средств этого же уровня) + СУБД Velocis, при требованиях к программистам чуть ниже целесообразно использование продуктов CENTURA (SQLWindows/ SQLWindows32 Centura Team Developer CTD 1.5 - 2.0), которые имеют и однопользовательский вариант и развитые возможности выхода на С/С++. Возможным вариантом является применение VB и настольных СУБД (MS Access) для программистов более низкой квалификции.
  4. Самым дешевым и простым способом является использование систем электронных таблиц типа MS EXCEL, однако, никакой гибкости, ненадежность и сложности в обучении пользователей гарантированы.

Вопрос:   Нас очень заинтересовала бы система разработки приложений (скажем, клиентов баз данных) с возможностью получать СТАНДАРТНЫЙ C++ код. Borland C++ Builder не очень устраивает: те функции, которые он включает в текст программы, не всегда (и все реже) поддерживаются другими разработчиками. Microsoft C++ тоже основывается на своих библиотеках, и хотя это надежнее, все же Microsoft меняет их как перчатки... Нет ли в природе чего-нибудь более универсального? Просветите, пожалуйста.

Ответ:  Вообще в вашем вопросе содержится много неопределенного (какие функции Вас не устраивают, какие системы классов и почему Вас не удовлетворяют и т.д.), однако, попробую все-таки ответить.

Если брать мировую практику разработки программ на С и С++, то действительно: оценки систем программирования 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++ и т.д.  


Вопрос:   Не подскажете, какими средствами можно решить следующую задачу: Имеется официально купленный SQLBase 6.0 for Netware 25 Users. Установлен на NetWare Server 4.1.

Сейчас стоит задача перевода всей сети на платформу Windows NT.

В связи с этим возникает вопрос: Как осуществить перенос SQLBase Server 6.0, работающего в данный момент под NetWare, на Windows NT Server?

Подскажите, пожалуйста, как это лучше осуществить технически и какие программные средства необходимо приобрести для решения этой задачи дополнительно.

Ответ:  Начну с конца. Если у Вас в комплекте SQLBase 6.0 нет дистрибуции для SQLBase под Windows NT Server, то Вам необходимо приобрести этот продукт. В настоящее время лучшая версия SQLBase 7.5.1. Она, кроме того, обеспечивает три уровня защиты данных и доступа. Цены на версии (в зависимости от числа пользователей) есть на сайте www.interface.ru. Если дистрибуция есть, то приобретать ничего не надо. Кроме того, если у Вас старый SQLWindows, желательно поменять его на CTD 1.5.1 (до 15 апреля есть льготный вариант приобретения мощнейшей версии CTD 2000 - она выйдет летом - бесплатно, купившим CTD 1.5.1).

После установки на NT SQLBase требуются минимальные штатные настройки сервера и клиента, детально описанные в документации. В принципе возникает две задачи: подключение к серверу и перенос данных из старых баз SQLBase на новые.

Первая задача решается настройками в SQL.INI на сервере и клиенте (протоколы связи должны быть одинаковыми TCP/IP). На клиенте нужно поменять настройки COMDLL в секции [winclient] или [win32client] на sqlwsock и sqlws32 соответвенно (отмечу попутно, что если у серверов разные имена, то могут одновременно работать несколько серверов на разных платформах). На сервере в доступном только ему (!) SQL.INI, нужно произвести настройки данного вашего сервера, указав COMDLL, требуемого типа в секции [dbnt25sv]

servername=server1,<ваша COMDLL для связи>,

для NT это может быть также sqlws32 для протокола TCP/IP:

servername=server1, sqlws32.

Вторая задача связана с переносом данных на новый сервер. Возможно, Вы это знаете, но я все-таки отмечу детали. На старом сервере нужно выполнить с SQLTalk команду UNLOAD для вашей БД (connect и set server обязательны). Затем создать БД с таким же именем на новом сервере и выполнить с SQLTalk команду LOAD с указанием того же файла. Детали: файл с информацией должен быть доступен серверу (расположен на сетевых томах); при новой версии сервера в этом файле возможно потребуется вручную поменять номер версии выгруженной БД (это в начале файла выгрузки).

Я думаю, что Вы по достоинству оценили надежность SQLBase и SQLWindows. Отмечу, что новые версии не менее надежны и обладают многими хорошими дополнительными возможностями.


Управление данными

Вопрос: В новых версиях ничего не говорится о поддержке протокола DDE, хотя в наших старых программах мы использует этот протокол. Будут ли работать старые программы в новых версиях TD?

Ответ:

  1. Действительно, функции для поддержки протокола для обмена данными и его упоминания исчезли из документации. Это означает, что официально данный давно устаревший протокол не поддерживается и в программах его рекомендуется заменить более новыми (OLE, COM и т.д).
  2. Однако все функции, сообщения и константы остались и старые приложения могут успешно работать, если их основа на протоколе DDE.
  3. Описание возможностей и особенностей применение протокола DDE можно найти в документации предыдущих версий.

13.02.06


Вопрос:   Как в DataBaseExplorer можно выгрузить таблицу из одной базы в текстовый файл, чтобы потом загрузить в таблицу другой базы?

Ответ:  Если Вы работаете с SQLBase, то для этой операции можете использовать команды UNLOAD и LOAD, которые доступны в утилите SQLTalk (как автономной, так и встроенной в DataBaseExplorer). Причем, если таблицы совпадают по структуре и названию, то при UNLOAD могут быть сгенерированы команды создания таблиц. В противном случае нужно немного настроить скрипт для правильной загрузки в существующие таблицы (документация - sqltalk.pdf).

Кроме того, находясь в SQLTalk и сформировав данные в окне выхода с помощью любого запроса, вы можете сохранить результаты в текстовом формате, а далее с помощью запросов загрузить в любую БД.

Но на самом деле это очень удобно делать с помощью специального продукта Сentura, который называется Сentura SQLBase Exchange. Он позволяет делать репликации (см. ответ ниже) между любыми БД, в том числе и не SQL типа.

Различают SQLBase Exchange Server и SQLBase Exchange Desktop.

Кроме этого, можно в собственной программе реализовать любые сложные преобразования данных и их загрузку в БД.


Вопрос:   Когда производится удаление из таблицы, где присутствуют внешние ключи, скорость работы ужасна! Что можно сделать, для ускорения процесса?

Ответ:  Решение заключается в том, что внешние ключи должны быть установлены после того, как будет создан индекс на ссылочную колонку в каждой дочерней таблице. Для каждой таблицы с внешним ключом:

  1. Удалить внешний ключ.
  2. Создать индекс на колонку, используемую ключем.
  3. Воссоздать внешний ключ.

Вопрос:   При попытке произвести вставку данных в таблицу появляется сообщение 'table in an incomplete state'. В чем причина и что теперь делать?

Ответ:  Похоже на то, что индекс, который был установлен при создании первичного ключа, был удален. Удалите первичный ключ, создайте индекс, и заново создайте первичный ключ. Это должно решить проблему.


Вопрос:   Возможно, ли модифицировать таблицу с данными с использованием утверждения select?

Ответ:  Для SQLBase версии 6. x.x можно производить модификацию с использованием SUBSELECT. В SQLBase версии 7.0 впервые представлена функция, выполняющая подобные действия. Имеется превосходный пример для SQLWindows, показывающий данную методику, доступный на сайте http://www.centurasoft.com/support/tech_info/knowledge_base/sbsinfo/t1tot2.zip


Вопрос:   Программа выводит сообщение об ошибке "Application Dedlock", что необходимо сделать?

Ответ:  Эта ошибка происходит, когда несколько программ пытаются установить блокировки на одной и той же странице в базе данных, при этом уже имеется блокировка на странице от других приложений. Блокировки устанавливаются, когда происходит обращение к данным, и зависят от уровня изоляции.

Например:

Оба приложения блокируются. SQLBASE выбирает один из процессов и завершает вторую задачу.

Методика уменьшения подобных проблем следующая.

В программах необходимо откорректировать порядок insert/update/delete для устранения ситуаций одновременной блокировки.


Сообщения об ошибках

Вопрос: При подключении к БД выдается ошибка 704 и подключения не происходит. Что делать?

Ответ:

  1. Вынужден Вас огорчить, Ваша БД разрушена и не подлежит восстановлению. Возможен только один вариант, восстановить из последней версии BACKUP, который желательно делать регулярно.
  2. Такая ситуация может возникнуть при некорректном проведении профилактических работ с БД, когда была выдана команда SET RECOVERY OFF (отключение транзакций) и перед завершением сессии не восстановлен режим транзакций SET RECOVERY ON. После перезагрузки сервера возможно, в этом случае, появление такой ситуации.
  3. Поэтому, перед началом регламентных работ советую многократно копировать БД или сделать BACKUP.

27.10.05


Вопрос: При тестировании новой версии мы столкнулись с проблемой, которая заключается в ошибке при загрузке исходного текста программ, работающих на старых версиях. Что можно предпринять?

Ответ:

  1. На нашем сайте в разделе FAQ есть рекомендации для такого перехода.
  2. Попробуйте сначала конвертировать исходный файл в *.apt, затем вручную поправить там вначале номер OUTLINE (этот номер для разных версий отличается, поэтому выгрузите в *.apt для каждой из них любое маленькое приложение и зафиксируйте этот номер).
  3. После конвертации загрузите в новую версию GTD, если пройдет без сбоев, то сохраняйтесь в новой версии в *.app и работайте (не забудьте заменить номера стандартных внешних DLL в тексте, например ...20-...30).
  4. Если не получиться, то в старой версии закомментируйте критические участки, можно комментировать почти все, кроме системных секций, проделайте п.п. 2-3 (выше) и еще раз проверьте. Если загрузится, то в новой версии снова раскомментируйте эти участки.
  5. Возможная проблема заключается в том, что для некоторых объектов, например для QTABS карточек, информация о DLL свойств записывается в параметрах самого окна, тогда можно (п. 3) после конвертации в *.apt, в текстовом редакторе проверить это и вручную подправить имена DLL, например ...20-...30.
  6. Можно воспользоваться копированием секций APP через Clipboard, запустив одновременно и старую, и новую версии, хотя это не всегда желательно, но "на безрыбье...".
  7. Проверьте используемые шрифты и установите стандартные для системы в системной секции.
  8. Сообщите с каких версий на какие Вы переходите. Возможно, у Вас есть маленький пример, на котором проблема проявляется, пришлите мне его и я попробую разобраться. Вообще, мне много приходилось переходить по версиям (и вверх и вниз) и всегда было без особых проблем и все разрешалось.
  9. Уверен, что и для новых версий 2005, проблемы тоже легко решаются.

05.04.05


Вопрос:   У нас возникли проблемы после с UGRADE SQLBase Embedded Deployment Pack c 7.0 до 7.6 для при установке PTF1 и 2. Что делать?

Ответ:  

  1. Действительно проблема существует, и она зафиксирована под номером case# 922057. В дальнейшей переписке можно ссылаться на этот номер.
  2. По информации Gupta нужно удостоверится, что у Вас существует только одна версия библиотек (- sqlwntm.dll, sqlngci.dll). Если этих версий несколько, то нужно их переместить из путей доступа или временно переименовать. Если Вы вручную эти библиотеки перезапишете, то, возможно, это поможет.
  3. Для версий SQLBASE TE (Treasury Edition) - новое название SafeGarde, СУБД с защитой информации, PTF не выставляются в Интернет, а поставляются на специальных CD. В этом случае при установке открытых PTF могут быть проблемы.
  4. Проверьте активный сервер в реестре по маршруту:

    HKEY_LOCAL_MACHINE\SOFTWARE\Gupta\SQLBase

При установке PTF версии должны соответствовать.


Вопрос:   При попытке распечатать 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 цифр.

Ответ:  

  1. Действительно это ошибка, которая будет исправлена в ближайшем PTF. Фирма знает о ней.
  2. В БД для SQLBase все запоминается нормально до 22 цифр, как указано в документации. При этом таблицу нужно создавать так:

    Create TABLE TEST (TEST22 FLOAT ( 22) );

    занесение данных:

    INSERT INTO TEST (TEST22 ) VALUES (1234567890123456789012);

    и выборку:

    SELECT TEST22 FROM TEST INTO :Test1;

    В результате в переменной Test1 вы получите все 22 цифры.

    Отмечу, что в самой программе на TD допустимо использовать до 45 цифр.


Вопрос:   Что означает сообщение об ошибке №63731?

Ответ:  Такой номер сообщения об ошибке недопустим. Однако существует правило для определения реального номера ошибки. Для ошибок, чей номер выше 60000, необходимо использовать формулу пересчета “(65536 - [Номер ошибки]) * (-1)”. В данном случае получаем (65536 - 63731) * (-1) = -1805 “TimeOut”.


Вопрос:   Работа сервера базы данных завершается с ошибкой 703. Что это означает?

Ответ:  Ошибка 703 - это вероятно аппаратная проблема. Выполните "Check Database", и посмотрите результат. Сервер базы данных не завершит своей работы, когда будет обнаружена ошибка. Если "Check Database" обнаруживает ошибку в индекес, удалите, а затем воссоздайте индекс. Если "Check Database" находит ошибку в странице, Вы должны найти разрушенные строки. Создайте новую таблицу с такой же структурой, как у разрушенной таблицы, затем вставьте все, не разрушенные строки в новую таблицу, удалите старую разрушенную таблицу, и переименуйте недавно созданную таблицу по имени удаленной таблицы. Этот способ позволит сохранить не разрушенные данные. После того, как устранены все неполадки и создана резервная копия, необходимо произвести UNLOAD/DROP DATABASE/CREATE DATABASE/LOAD или REORGANZE. Эта операция полностью восстановит вашу базу данных. См. также: http://www.centurasoft.com/support/tech_info/knowledge_base/sbsinfo/sbsrecov.html


Вопрос:   Выдается отрицательный номер ошибки. Каково отличие от положительных кодов возврата?

Ответ:  Отрицательная ошибка означает, что сервер базы данных произвел RollBack. В SQLBase RollBack может быть ограничен последней компилированной командой или всей транзакцией. Положительная ошибка означает, что транзакция все еще активна (то есть программа может выбрать, выполнять COMMIT либо RollBack).


Вопрос:   Почему выдается сообщение об ошибке №00422 “Invalid Servername Length”?

Ответ:  Многие клиенты не работают с более новыми серверами, и возникновение ошибки №00422 не возможно. Эта проблема возникает, когда пользователь Centura Tem Developer переходит от SQLBase 6.x на SqlBase 7.x. Необходимо заменить SQLWNTM.DLL и COMDLLS на более новые версии.


Вопрос:   После установки PTF10 для CTD 1.1.2 в программах стала возникать ошибка: cbi11.exe Ошибка приложения. Инструкция по адресу "0х0000434f" обратилась к памяти по адресу "0x0000434f". Память не может быть "read". Как можно устранить ошибку?

Ответ:   Короткий ответ:

Для ответа на Ваш явно вопрос недостаточно информации. Опишите место, оператор, действие, при котором возникает эта ошибка. Опишите среду (ОС, ЭВМ и др.) на которой возникает ошибка. Во время выполнения или при работе в режиме интерпретатора 'cbi11.exe? Попробуйте сделать .EXE, и запустить с DEPLOY.

Возможный распространенный ответ:

Для ответа на Ваш явно вопрос недостаточно информации. Опишите место, оператор, действие, при котором возникает эта ошибка. Опишите среду (ОС, ЭВМ и др.) на которой возникает ошибка. Во время выполнения или при работе в режиме интерпретатора 'cbi11.exe? Попробуйте сделать .EXE, и запустить с DEPLOY.

Кроме того, надеюсь, что Вас не обидят мои следующие рекомендации для попытки выхода из создавшегося положения.

Аксиома 1: 99.99% ошибок все-таки на совести программиста и разработчика. Если в это не верить, то программирование нужно бросать.

Аксиома 2: Выход из создавшегося положения есть, и чаще всего не один!

Ну а если всерьез, то попробуйте следующие действия, возможно, они выведут Вас из кризисной ситуации:

  1. Квалифицируйте ссылки на все дочерние объекты переменные, особенно, если их имена совпадают с названиями в других окнах (например: form1.df1).
  2. Не используйте сомнительные объекты (например - QO) функции и DLL, особенно внешнего и собственного происхождения. Если не использовать нельзя, основательно их протестируйте.
  3. Проверьте собственные классы, если они есть, попробуйте упростить и использовать стандартные объекты для эксперимента.
  4. Проверьте работоспособность системы на стандартных примерах, входящих в комплект CDT, и если на них не пойдет, то сообщите дополнительно, указав название примера.
  5. Восстановите начальную версию и проверьте на ней Ваши программы. Если программы пойдут, то делайте выводы сами.
  6. Попробуйте Ваши программы на более старших версиях, например на CTD 1.5.1 (тестовую версию можно скачать на сайте www.interface.ru). Если программы пойдут, опять же делай те выводы, если не пойдут ищите ошибку в своей программе.
  7. Используйте известные Вам методы локализации ошибок, например с помощью корректного комментирования. Локализуете ошибку вплоть до оператора или объекта. Замените или измените его.
  8. Если ошибка проявляется аналогично в разных программах, то попытайтесь найти общее между этими программами. Если на некоторых программах, например стандартных, SAMPLах не возникает, то сравните их.

Сохраненные Процедуры

Вопрос: На нашем предприятии SQLBase 6.1.1. Доступ к нему через ODBC. Вызвать хранимую процедуру из программы Delphi невозможно. Драйвер сообщает, что "command not found for retrieval". С другими SQL серверами проблем нет. В чем может быть причина?

Ответ:

  1. Судя по документации, родной драйвер ODBC для SQLBase 6.x не поддерживает выполнение хранимых процедур (см. главу 10 стр. 10-12 книги dba.def для вашей версии, там дан перечень доступных функций уровней Core, Level1, Level2), хотя в этой версии они уже введены. Доступ к хранимым процедурам возможен средствами SQLWindows, API и системными утилитами.
  2. Можно попробовать установить драйвер более старших версий, но при этом возможны и проблемы. Хотя общая рекомендация - все же воспользоваться версиями SQLbase нового поколения 8-9.
  3. Напомню также, что для выполнения хранимой процедуры необходимо выполнить ее запоминание и только затем выполнение.
  4. Можно получить доступ к выполнению хранимых процедур на уровне СИ API, там есть специальные команды для выполнения хранимых процедур (см. api.pdf).
  5. Возможен и такой хитрый способ выполнения процедур, как вызов SQLTalk в режиме командной строки, но этот вариант можно рекомендовать в первую очередь для административных операций.
  6. Посмотрите настройки драйвера ODBC - должны быть доступны все уровни доступа и привилегий (, Level1, Level).

27.10.05


Вопрос:   Необходимо использовать константу DATETIME_NULL в сохраненных процедурах, но она не работает. Что происходит?

Ответ:  Имеется ошибка использования этой константы в SQLBase версии 6.X. В SQLBase 7.0.1. это было исправлено.


Платформы

Вопрос: Что такое Web Extensions для CTD? Для чего используется?

Ответ:

  1. История такова: ранее существовал отдельный продукт Centura Web Developer (CWD), который затем был включен в состав средств разработки CTD/GTD. Это средство позволяет создавать и публиковать через web программы, разработанные в среде TD.
  2. Затем, после объединения связанных программных продуктов, на некоторое время использование CWD потеряло смысл, так как все возможности были включены в TD, а стоимости этих средств были близки.
  3. В последних версиях TD с точки зрения разработки и тестирования ограниченного числа пользователей, подключаемых к WEB приложениям (по-моему, до 5-ти) ничего не изменилось - все средства включены.
  4. Однако для большего числа клиентов WEB необходимо приобретать дополнительные лицензии, которые обеспечиваются приобретением Web Extensions.

13.02.06


Вопрос: Мы рассматриваем вариант миграции с SQLBase на ORACLE, при тестировании обнаружили, что функция SqlGetResultSetCount выдает ошибку. В чем причина и что делать?

Ответ:

  1. Для выполнения данной функции при работе с ORACLE нужно явно включить режим прокрутки Result Set (делается функцией - SqlSetResultSet (TRUE)), причем это необходимо сделать до выполнения запроса к СУБД (SqlPrepareAndExecute). После этого функция SqlGetResultSetCount не будет выдавать ошибок и возвратит правильное значение.
  2. Такие же действия необходимо сделать, если Вы собираетесь использовать режим прокрутки Result Set, как прямом, так и в обратном направлении (функции - SqlFetchPrevious и SqlFetchNext). До формирования выборки нужно включить режим функцией SqlSetResultSet.

23.11.05


Вопрос: Нельзя ли уточнить, какой объем оперативной памяти лучше всего для SQLBase и есть ли какие-либо ограничения в использовании памяти - иными словами, если, например, мы ставим 2GB а сервер может использовать, занять только 1GB, то смысла в покупке такого объема нет.

Ответ:

  1. В принципе, чем больше доступной ОП, тем больше СУБД ее использует.
  2. В последней версии 9.0 были сняты ограничения по максимальному размеру кеша (cache - для выборки) и памяти для сортировки (sortcache) эти значения каждого параметра теперь могут устанавливаться до 1 гб.
  3. Конкретные настройки и размер требуемой ОП зависят от числа пользователей и рабочей нагрузки на сервер, что требует дополнительного анализа. В технических характеристиках дана только нижняя граница - 64 мб.

12.10.05


Вопрос: Существуют ли SQLBase - инструментальные средства оптимизации запросов для выборки данных?

Ответ:

  1. Если речь идет об автоматической оптимизации, то для настройки ее режимов существуют два уровня 1 и 2, значение задается параметром: optimizefirstfetch=1 в SQL.INI
    В одном случае используется старый метод оптимизации, а в другом обновленный. Для оптимизации выполнения запросов используется собираемая статистика.
  2. Для ручной оптимизации можно воспользоваться методикой из документации, изложенной в главе 18 книги "SQLBaseAdvanced Topics Guide" (Advtop.pdf). Для выполнения запросов и команд можно применить данные измерения SQLConsole, а запросы выполнять под управлением SQLTalk.
  3. Оптимизация запросов в общем случае научно-исследовательская задача, которая решается на основе исследований. Для этих целей можно, в том числе, воспользоваться средствами, предоставляемыми в AllFusion ERwin Data Modeler (ранее: ERwin), в подсистеме анализа запросов (Examiner).

20.09.05


Вопрос: Мы планируем приобрести Gupta SQLBase 9.0 Server 5 Users (Windows). Скачали триал версию. Вопрос - как подключить существующую базу данных к серверу?

Ответ:

  1. Если БД старше версии СУБД 5.2, то проблем не должно быть, нужно перекачать БД в каталог баз данных сервера, подправить вручную SQL.INI, включив строку dbname=<имя DB>,<протокол>
  2. Настроить клиента в SQL.INI, в зависимости от протокола.
  3. Запустить СУБД SQLBASE и проверить подключение с SQLTalk
  4. Универсальный способ:
    1. Выгрузить БД c помощью UNLOAD в старой СУБД (в файле выгрузки подправить номер версии LOADVERSION на нужную новую)
    2. Создать БД в новой версии
    3. Загрузить БД командой LOAD.
  5. Для БД 5.2 все то же самое, но нужно использовать утилиту WINTALK и пункт меню выгрузки.

20.09.05


Вопрос:   При выполнении сложной транзакции для ранних версий SQLBase формируется сообщение: 03926 LOG LSC Log disk space critically short и транзакция не выполняется. При повторном запуске она проходит. При переходе на версию SQLBase 8.5 мы надеялись, что эта проблема будет снята, но не тут-то было. Места на диске достаточно для выполнения транзакций (40 Гб). Что делать?

Ответ:  В настройках есть параметр, который включает или выключает режим проверки места на диске для логов (Log disk space). По умолчанию он включен. Нужно его временно (или постоянно) выключить. Для включения нужно в SQL.INI:

disablelogspacecheck = 0

а для выключения

disablelogspacecheck= 1

В данном случае срабатывают старые проверки на возможность перекрытия ограничения размера под логи, и если Вы уверены, что места достаточно, отключаете режим безболезненно. Транзакции будут выполняться нормально.

20.06.05


Вопрос:   При выполнении команды LOAD в SQLBASe для новых версий мы столкнулись с тем, времена выполнения значительно возросли. Что делать?

Ответ:  В новых версиях при выполнении операции LOAD для многопользовательских СУБД нужно обязательно перед ее запуском выдать команду LOCK DATABASE. Это исключает проверки контроля подключения новых пользователей, загрузка БД выполняется в нормальном режиме и со скоростью большей, чем в старых версиях. Обратите внимание, что при выполнении команды REORGANIZE данная команда выдается автоматически.

20.06.05


Вопрос:   Ранее представители Гупты сообщали, что в конце 2004 года выйдет версия SQLBase для LINUX, вышла ли она и что в ней нового?

Ответ:  

  1. Могу Вас порадовать: новая версия SQLBase 9.0 вышла в начале октября 2004 года, она в том числе поддерживает и платформу LINUX. Кроме того, версия 9.0 работает на платформе WINDOWS.
  2. В этой версии оптимизирована производительность - сообщается, что время выполнения сложных запросов сокращается на 15%.
  3. Кроме этого, предусмотрена поддержка распространенных средств разработки WEB сайтов, в частности PHP. Для работы в среде LINUX предусмотрены утилиты администрирования, в том числе и утилита SQLTalk, которая известна пользователям

23.12.04


Вопрос:   Не можете ли Вы подсказать, какую литературу можно использовать для разработки COM+ в среде Gupta TD?

Ответ:  

  1. К сожалению, кроме стандартной документации, которая входит в состав поставки продукта (dev.pdf) ничего не могу порекомендовать.
  2. Однако, можно с успехом воспользоваться книгами для разработки СОМ+ для СИ++ и для VB, которые есть в продаже. В частности, одна из книг, на мой взгляд, заслуживает особого внимания. Привожу ее данные: Роберт Дж. Оберг "СОМ+ технология, основы и программирование", М., изд. "Вильямс", 2000, 478с. Вы можете заказать эту книгу в Интернет-магазине ITshop.ru, а примеры для книги скачать с сайта www.williamspublishing.com.

23.12.04


Вопрос:   При вызове почтовой системы из приложений на TD нет доступа к почтовым ящикам OUTLOOK. В чем ошибка?

Ответ:  Помимо настроек классов для работы с почтой необходимо выполнить настройки в операционной системе сети. В частности, нужно настроить почтовый офис на том компьютере, где будут храниться ящики. Это выполняется в системных настройках. Наиболее приемлемый вариант организации связи в локальной сети – использование MS Exchange. Настройка почтового офиса выполняется в панели управления в приложении "Почта" (Post).

03.11.04


Вопрос:    В документации на TD для использования сетевых COM объектов требуется использование MTS (Microsoft Transaction Server). Где взять этот продукт?

Ответ:  В Windows NT действительно требуется отдельный продукт для поддержки режима MTS. Для операционных систем начиная с Windows 2000 не требуется отдельного продукта, так как компоненты MTS включены в среду СОМ+ и поддерживаются автоматически. В частности, для настройки COM+ компонент используется Component Serviсes (Службы компонентов), который входит в административную группу системных приложений.

03.11.04


Вопрос:   Можно ли использовать Lock Manager (LM) для RDM Embeded 7.0 для работы приложений, разработанных для RDM 4.53?

Ответ:  Да эту утилиту LM можно использовать, при условии перекомпилирования приложения под среду 7.0. Если Вы не можете перекомпилировать приложение, то воспользуйтесь LM из версии 4.53.

19.10.04


Вопрос:   Можно ли из программы на TD передавать структуры данных в DLL, созданных в среде СИ/СИ++?

Ответ:  Да это можно сделать. Пример этого дан в тестовом приложении CSTRUCTL.APP и CSTRUCTL.APL, которое входит в состав стандартных примеров ГУПТЫ. Кроме того, можно передавать любые данные разных типов, включая даже указатели.

19.10.04


Вопрос:   Что нужно сделать для создания DLL? Какие дополнительно продукты нужны для этого?

Ответ:  

  1. В первую очередь Вам необходимо имеет компоненты из MS Visual Studio 6.0 для выполнения операций по созданию DLL. Должны быть настроены пути для выполнения этой операции (компиляции и редактирования DLL).
  2. Вы создаете обычную APL в среде GTD, но при компиляции указываете (в настройках проекта) создание DLL. GTD обеспечит автоматический вызов компилятора и редактора связей для создания модуля. Если функция DLL должна быть видна во вне, то для этого ее в названии необходимо пометить специальным комментарием: ! __Exported.
  3. После компиляции Вы можете подключать DLL в программу, причем для этого можно использовать специальный модуль (.APD), который обеспечит описания внешних функций созданной DLL, при этом будут использованы имена, описанные непосредственно в модуле DLL. Есть ограничения, которые накладываются на создания DLL, которые Вы найдете в документации. Например, для описания классов нужно использовать дополнительные описания или модель с расширением .APC.

22.09.04


Вопрос:   При построении репликаций на основе SQLBase Exchange нарушаются связи между таблицами, которые определяются автоматически с помощью Gupta SQLBase. Что делать?

Ответ:  Возможно, при создании БД у Вас был установлен режим связи таблиц на основе СУБД – ссылочная целостность по удалению родительских записей. Так как при создании репликаций записи переписываются через удаления, то после ее выполнения они будут отсутствовать. Возможны два способа для выхода из создавшейся ситуации:

22.09.04


Вопрос:   Как перейти с временной лицензии SQLBase 8.5 на постоянную? Дело в том, что были закуплены лицензии на SQLBase. На время поставки была предоставлена ознакомительная версия и были начаты разработки. Теперь мы боимся потерять эти наработки. Нужно ли дополнительно регистрировать СУБД SQLBase.

Ответ:  

  1. К счастью, с SQLBase 8.5 нет никаких проблем с переходом на новые версии и с переходом с временных лицензий на постоянные. Достаточно ввести ключ, который передается с программным продуктом, и версия должна работать. Никакой регистрации и привязки к технике пока не предусмотрено. Это объясняется множеством причин и, в частности с тем, что СУБД редко устанавливают на компьютерах с выходом в Интернет.
  2. Есть, правда одна особенность: теперь SQLBase поддерживает полностью стандарт SQL, поэтому OUTER JOIN записываются в стандартном формате. Для этого существуют два режима работы СУБД - старый и новый, которые пользователь может переключать; в том числе обеспечивается и автоматизированный переход на новый стандарт с помощью специальной утилиты.
  3. Перенос данных и процедур для новой версии так же прост, как и прежде. Достаточно подключить БД к СУБД и все необходимые преобразования будут выполнены автоматически.

08.07.04


Вопрос:   Изменился ли размер буферного кэша (cache) новой версии SQLBase 8.5?

Ответ:  

Да, теперь размер кэша может быть увеличен до 1,000,000, вместо 32,000 в предыдущих версиях. Теперь общий размер кеша в ОП может быть увеличен до 1 Гб. Это позволяет использовать возможности современного оборудования в полной мере и значительно повысить эффективность работы информационных систем, работающих с SQLBase. Нужно иметь в виду, что для конкретных систем это повышение может быть разным и во многом зависит от настроек и оптимизации запросов, сделанной на основе тщательного анализа работающей системы.

08.07.04


Вопрос:   Какие преимущества мы можем получить при увеличении размера кэша (cache) в СУБД SQLBase?

Ответ:  

  1. В целом увеличение размера кэша (оно задается в настройках SQL.INI и может быть скорректировано с SQLConsole) способствует созданию более комфортных условий для работы СУБД, так как часть дисковых операций заменяется операциями с оперативной памятью. Однако, в зависимости от рабочей нагрузки и особенностей запросов к данным, этот выигрыш может быть различным. Для его достижения в общем случае нужно провести измерения и целенаправленную тонкую настройку запросов и СУБД (фактически это исследовательская работа).
  2. Размер кэша в первую очередь влияет на подкачку файловых страниц БД в оперативную память, если таких страниц много, то эффективность возрастает за счет работы более быстрой оперативной памяти при доступе к данным. Специальный монитор кэша следит за тем, чтобы при возможности по времени работы, страницы возвращались на диск.
  3. Область кэша используется также для организации работы транзакций, тем самым также экономится время при их откате и использовании измененных страниц. В системах с большим числом длинных транзакций преимущества большого размера кэша неоспоримы.
  4. И, наконец, при организации выборки (сортировки) данных по сложным запросам область кэша используется вместо временных файлов, это несомненно также увеличивает производительность. Повторю еще раз, что выигрыш может оказаться и не столь существенным, если существующий размер кэша уже удовлетворяет все потребности системы. Для оценки необходимости увеличения кэша можно произвести простые измерительные эксперименты с последующим анализом, пример которых и методика проведения даны в документации по Gupta Technologies (Centura Software), разделы SQLConsole Guide и SQLBase Database Administrator’s Guide.

08.07.04


Вопрос:   Поддерживает ли новая версия СУБД SQLBase 8.0 работу в мультипроцессорном режиме.

Ответ:  

  1. СУБД SQLBase 8.0 нормально функционирует в мультипроцессорном режиме, однако пока эта версия не использует полностью его возможности.
  2. В дальнейшем предполагается обеспечить работу в мультипроцессорном режиме в полной мере, используя возможности мультипроцессорности.

Такой ответ получен на официальный запрос из фирмы Gupta Technologies.


Вопрос:   Eсть ли в продукте BIRDSTEP RDM EMBEDDED for Linux Multi-User ODBC-драйвер, если нет, то можно ли приобрести отдельно?

Ответ:  

  1. Если судить по старым версиям и архитектуре продукта (RDM), то в нем совсем другой механизм доступа к данным (NON SQL) и структура БД (сетевая). Из этого следует, что стандартного ODBC доступа к БД нет.
  2. Кроме того, в RDM EMBEDDED используется архитектура файл-сервер: все приложения сами обращаются к файлам БД, а для обеспечения корректного коллективного доступа используется специальная синхронизирующая программа.
  3. Правда есть дополнительные библиотеки, обеспечивающие эмуляцию SQL доступа, но это все-таки не стандартный вариант. Возможно в новых версиях появятся такие возможности (ODBC).
  4. Если Вы хотите непременно воспользоваться ODBC, то необходимо выбрать BIRDSTEP RDM Server (VELOCIS).

При высоком быстродействии и подобных RDM возможностях доступа в нем имеются в наличии ODBC драйверы.


Вопрос:   Какая документация нужна для начального и детального знакомства с SQLBase 8.0?

Ответ:  1. Сущеcтвует набор документации в PDF (около 30 книг, часть книг есть на сайте).

В первую очередь Вам нужны книги:


Вопрос:   Какой максимальный объём БД в байтах Для SQLBase 8.0? Есть ли ограничения на количество записей?

Ответ:  

  1. Если вы создаете несегментирумую БД для WIN 32, то максимальный размер БД - 512 Гб. Для NetWare - 2 ГБ.
  2. При создании секционированных БД (partional) размер ограничивается числом доступного дискового пространства, в том числе и для NW, причем размер сегмента для нее не более - 2 ГБ.
  3. Ограничений на число записей в документации нет, но, думаю, что оно лежит в пределах представления данных для сервера, на котором установлена СУБД.

Вопрос:   Вопрос по демо версии TD 2.1. При копировании строк из таблицы в таблицу с помощью функций SalTblCopyRows и SalTblPasteRows не копируются hidden колонки отдельных строк. Что делать?

Ответ:  

  1. Действительно такое явление имеет место, однако я не знаю ошибка ли это, или неточность в документации, в которой об условиях копирования скрытых колонок ничего не сказано.
  2. Выход из этой ситуации очено прост: сделайте перед копированием колонки видимыми (SalShowWindow), а после копировани невидимыми (SalHideWindow). Копирование выполниться быстро и правильно, а на экране пользователь не успеет ничего заметить из-за высокой скорости выполения операция.
  3. Думаю, что ближайших PTF и этот недостаток будет исправлен.

Вопрос:   По демо версии TD 2.1. При установке поля ввода как нередактируемое курсор все равно по клавише TAB устнавливается в это поле. Что делать?

Ответ:  

  1. Действительно, одной установки поля в режим Editable - NO для исключения возможности установки фокуса на поля (data field) недостаточно. Нужно применить еще функцию:
    1. Либо SalDisableWindow
    2. Либо VisWinSetStyle( <dfield>, ES_READONLY, TRUE ) из VT.

    Во втором случае мы с помощью SalColorSet можем установить любой цвет текста и фона, даже для нередактируемого поля.

  2. Думаю, что ближайших PTF и этот недостаток будет исправлен.

Вопрос:   По демо версии TD 2.1. В обычных полях ввода (data field) при задании центрирования и курсива информация высвечивается в поле с левым смещением для русского текста. Что делать?

Ответ:  

  1. В этом случае для стандартных шрифтов с TD 2.1 действительно наблюдается смещение текста. Если Вы возьмете шрифты не Unicode, то все будет нормально (например, распространенные TimesET или Pragmatica).
  2. Однако не всегда в полях ввода нужно (целесообразно) устанавливать курсив и центрирование, поэтому можно безболезненно использовать и другие стандартные шрифты, но без установки режима курсива.
  3. Думаю, что ближайших PTF этот недостаток будет исправлен.

Вопрос:   Подскажите, пожалуйста, поддерживает ли SQLBase 7.6.1 двухпроцессорную обработку?

Ответ:  К сожалению, точной информации об этой возможности нет ни в рекламе, ни в документации. Но, судя по тому, что это отдельно не выделяется, такой возможности в SQLBase 7.6.1 пока не предусмотрено. Естественно, СУБД, как и большинство других, будут работать под WindowsNT, а возможности второго процессора можно использовать под другие системные компоненты, в частности серверы приложений.


Вопрос:   Какие из продуктов Centura должны быть включены в дистрибуцию, если использование SQLBase для хранения БД не планируется, но используется CTD? Как приобрести лицензию на RUNTIME и есть ли она?

Ответ:  

  1. Все, что нужно включать для сопровождения программного продукта содержится в DEPLOY (RUNTIME), который развертывается на компьютере клиента и не требует дополнительных лицензий.
  2. Если Вы используете не все возможности средств разработки, то можете методом исключения устранить ненужные компоненты из DEPLOY (RUNTIME). В ряде случаев можно сократить объем DEPLOY до двух раз. К сожалению, в документации нет явного перечня компонент, которые нужны для конкретного случая.
  3. Если вы не планируете использовать SQLBase, то без особой опасности Вы можете исключить локальный сервер, интерфейсные DLL (comdll).

Вопрос:   Прошу Вас выяснить, можно ли заставить старые 16-разрядные exe-приложения на Gupta 5.xx, а также утилиту Quest 3.0 работать с локальным однопользовательским сервером Centura 7.50?

Ответ:  

  1. К сожалению, 16-ти разрядные приложения не могут работать с 32-ти разрядными, поэтому их нельзя связать. Решение может быть найдено на связях по сети (и для приложения Quest 3.0)
  2. Есть, впрочем, и другой выход: в версии SQLWindows 5.05, она в прошлом году распространялась Interface Ltd. и Centura бесплатно, есть локальная версия 16-ти разрядного SQLBase 7.5.1. Его можно инсталлировать и использовать. Ее и сейчас можно скопировать в Interface Ltd.

Вопрос:   Чем отличаются продукты SQLBase desktop и Server?

Ответ:  

  1. SQLBase desktop обеспечивает доступ к БД только в пределах одного компьютера и используется либо для варианта одного пользователя, либо для отладки приложений клиент-сервер. SQLBase server edition - в зависимости от числа пользователей обеспечивает доступ по сети разным приложениям к БД.
  2. Функционально продукты полностью совместимы.
  3. Есть SQLBase desktop edition на разное число пользователей, но это означает возможное число инсталяций на разных ЭВМ.

Вопрос:   Чем отличаются программные продукты Exchange Desktop и Exchange Server?

Ответ:  Exchange Desktop обеспечивает репликации БД в рамках одной ЭВМ, а Exchange Server - в рамках сетей ЭВМ. Если Вы приобретаете продукт Exchange Desktop на определенное число пользователей, то это означает, что его можно установить на заданное число ЭВМ.


Вопрос:   Является ли СУБД Velocis встроенной СУБД?

Ответ:  Нет, СУБД Velocis является выделенным сервером СУБД, работающим в SQL и NON SQL режимах. Он обеспечивает поддержку сетевых структур БД. Встроенной СУБД является RDM (Mbrane Touchpoint 2).


Вопрос:   Может ли СУБД SQLBase работать под NT и W'2000 как сервис?

Ответ:  Да, при инсталляции нужно указать загрузку СУБД как сервис (последнее окно мастера инсталляций). Если это не сделано, нужно воспользоваться утилитой "Сервисы" из панели управления и выполнить вручную эти настройки: automatic и работа под системным паролем.


Вопрос:   Можно ли из под CTD запустить фоновый процесс?

Ответ:  

  1. Вообще из CTD можно вызвать любую программу, в том числе написанную на CTD, и если обработать сообщения от таймера, то это будет фоновый процесс (функция - SalLoadApp и др.).
  2. Можно воспользоваться инструментами COM объектов, которые есть и в 2000 и в 1.5.1. 3. Обмениваться с другим процессом можно с помощью сообщений, предварительно определив handle окна (функция - SalAppFind) или на основе DDE.

Вопрос:   Как подключаться к серверу Velocis 3.0 из CTD2000?

Ответ:  

  1. После инсталяции CTD Velocis и его БД должны быть видны в DBExplorer, прямо или через ODBC. Если это не так, то нужно проверить настройки драйверов ODBC.
  2. Из CTD можно вызвать любую DLL (есть примеры для VB и С), поэтому доступ к Velocis может быть осуществлен и через родного клиента Velocis.
  3. Если не ошибаюсь, где-то на демо дисках были примеры по совместной работе CTD и Velocis.

Вопрос:   Меня интересует возможность публикации сложных отчетов на корпоративном сайте с помощью REPORT Builder.Какие существуют варианты построения информационной системы при таком подходе?

Ответ:  

  1. Принципиально существуют две возможности использования REPORT Builder. Совместно со средствами разработки (предпочтительно CTD) и в автономном режиме, как редактора шаблонов, запросов и отчетов.
  2. В первом случае, на основе предварительно построенного шаблона ( можно и без него) данные поступают из программы и формируется отчет, который в дальнейшем можно просмотреть, распечатать и сформировать в файл в распространенных форматах. В этом случае REPORT Builder взаимодействует с приложением на основе механизма сообщений, которые обрабатывает программа, поэтому практически на всех стадиях можно вмешаться в формирование отчета, передав нужные данные. Кроме того в шаблоне могут быть заложены формулы, функции, позволяющие делать расчеты и преобразования. Возможно построение отчетов самого разного характера: от простых списков, до отчетов со сложным группированием данных, итоговыми и промежуточными результатами.
  3. Во втором случае REPORT Builder может использоваться в автономном режиме, как средство конечного пользователя. Отчеты и запросы могут быть построены в визуальном режиме, также как и шаблоны.
    Имея банк настраиваемых шаблонов, можно покрыть самые изощренные потребности пользователя.
  4. Более подробную информацию о REPORT Builder Вы найдете в статье на сайте или в документации REPORT.pdf, которую тоже можно скачать с сайта.

Вопрос:   Не проходит реорганизация БД. Что делать?

Ответ:  

  1. Для уточнения этого факта неполной реорганизации БД желательно выполнить процедуру реорганизации по шагам:
  2. Команда UPDATE STATITICS может не выполняться и по причине очень большой БД и больших размерах отдельных записях. Общий объем не помещается в поля размеров БД. В таком случае придется дробить таблицы или переходить на более старшие версии. Кстати - а какая версия SQLBase у Вас?
  3. Возможно, у Вас недостаточно дисковой памяти для проведения реорганизации, которой нужно на самом деле в 2-3 раза больше, чем объем БД. Это тоже должно проявиться при пошаговой реорганизации.

Вопрос:   Как организовать автоматические репликации с помощью SQLBase Exchange?

Ответ:  Для организации автоматических репликаций необходимо использовать Replication Agent AX Control, входящий в состав SQLBase Exchange. На основе него создается процедура выполнения репликации (на любом языке, который допускает их включать и использовать, в том числе и на CTD). Эта процедура может быть вызвана автономно, или посредством механизма внешних процедур СУБД из триггеров или хранимых процедур СУБД (большинство СУБД поддерживают такие механизмы, в том числе и SQLBase). При автономном вызове можно реализовать разные механизмы организации репликаций (по таймеру, по изменениям БД). Репликация (описание ее действий) может быть построена предварительно с помощью Replication Studio, входящего в состав SQLBase Exchange, либо настроена динамически при вызовеReplication Agent.


Вопрос:   Можно ли на локальном компьютере связаться из 16-ти разрядных приложений с 32-ти локальным разрядным сервером SQLBase?

Ответ:  В дополнение к вопросу (или его уточнению) об совместном локальном использовании 16-ти разрядных приложений (Gupta SQLWindos) и 32-ти разрядного SQLBase 7.51 могу сообщить следующее:

  1. Существует все-таки такая возможность совместной работы 16-ти разрядных приложений и средств разработки и без использования 16-ти разрядного сервера (SQLBase?).
  2. Связь в этом случае может быть выполнена по протоколу TCP/IP.
  3. Для клиентской части приложений необходимо указать в SQL.INI
    [winclient.dll]
    comdll=sqlwsock
    ...
    и настроить секцию
    [winclient.wsock]
    serverpath=server1,localhost/<Ваша БД>
  4. Для настроек сервера нужно использовать протокол TCP/IP:
    [dbnt50sv]
    servername=server1,sqlws32
    ...
    dbname = <Ваша БД>, sqlws32
    [dbnt50sv.dll]
    comdll=sqlws32
  5. И, соответственно, корректно использовать вызов SQL.INI для сервера и для приложений (или средств разработки )
  6. Это проверено и работает.

Вопрос:   Можно ли в динамике создавать объекты интерфейса в CTD?

Ответ:  

  1. Во-первых, можно использовать возможности AX технологии и создавать объекты в динамике (SalActiveXCreateFromData). Далее можно использовать контейнеры и коллекции для манипуляции ими.
  2. Во-вторых, можно для динамики использовать и обычные стандартные объекты, но с некоторыми хитростями: нужно создать специальные классы окон, каждое из которых соответствует стандартному объекту и уже динамически создавать и размещать в родительском окне объекты этих окон в размер элемента интерфейса (SalCreateWindow)
  3. Можно воспользоваться технологией Custom Controls и CDK для создания собственных динамических объектов.

Вопрос:   Можно ли с помощью Centura SQLBase Exchange обеспечить репликации между любыми СУБД?

Ответ:  Единственным ограничением для организации репликаций является обязательное использование SQLBase в качестве приемника или источника данных. Для организации репликации между двумя СУБД, каждая из которых не является SQLBase, можно использовать двойные репликации, в которых посредником является SQLBase.


Вопрос:   Каков максимальный размер БД в Гбайт, поддерживаемый SQLbase?

Ответ:  В принципе при работе с SQLbase декларируется объем БД до 512 Гб (для 32-битных OC). Но такой объем достигается при секционировании БД на отдельные файлы (такой механизм поддерживается продуктом) и есть разница при работе с NT и NetWare. Для NetWare максимальный объем секции сейчас пока 2 Гб, а для NT - 4 Гб. По моим оценкам, применение SQLbase (до версии 7.6 не включая ее) достаточно эффективно при размерах БД в пределах 10 Гб. Это показывает и опыт наших клиентов. Что будет в новых версиях 7.6 и 8.0 - увидим достаточно скоро.


Вопрос:   Каково максимальное число записей в таблице для SQLbase?

Ответ:  Число возможных записей определяется доступным дисковым пространством и размером отдельной записи. Теоретически число записей определяется полями типа NUMBER в системных таблицах, которые могут содержать числа до 22 десятичных разрядов (т.е. 10 в 22).
Нужно учесть, что в каждой записи хранится и служебная информации (около 40 символов - ROWID).


Вопрос:   Появляется сообщение об ошибке '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.


Вопрос:   При закрытии SQLBASE на Novell, выдается сообщение "1.1.14 Module did not release 1152 resources". В чем заключается проблема?

Ответ:  Это - временное событие. Ресурсы станут свободными через несколько минут.


Вопрос:   Как установить SQLBase в виде сервиса Windows’95 до версии 7?

Ответ:  Сервисом в Windows’95 – это обычные программы, запущенные в момент начальной загрузки. Они выполнятся прежде, чем кто-либо зарегистрируется в системе. Чтобы настроить сервис, запустите REGEDIT.EXE, и перейдите к разделу HKEY_LOCAL_MACHINE_SOFTWARE\Microsoft\Windows\CurrentVersion\Runservices. Вставьте новое элемент и дайте ему уникальное имя, типа "SQLBASESERVER". Установите значение этого элемента равным полному пути и имени файла сервера базы данных, например "C:\centura\dbnt1sv.EXE". Чтобы выполнялся минимизированный запуск, перед указанием пути необходимо вписать "start/m".


Вопрос:   Имеется ли возможность связаться с локальным SQLBase сервером из 16- и 32-разрядных приложений?

Ответ:  Прежде чем появился SQLBase для Win’95, существовали локальные 16-разрядные SQLBase сервера (DBWSERVR.EXE и DBWINDOW.EXE). Они были довольно просты в настройке и управлении. С появлением SQLBase для Win’95 (DBNT1SV. EXE) возникло несколько соображений, которые следует принять во внимание:

Конфигурирование протокола TCP/IP для Win’95 на машине, которая не имеет сетевых адаптеров, может быть сложным и не совсем удачным делом. Шаги, перечисленные ниже разработаны для оказания помощи при установке и конфигурировании TCP/IP для Win’95 так, чтобы к SQLBase серверу для Win’95 можно было обращаться и 16- и 32-разрядным приложениям.

Если Вы уже установили TCP/IP на вашей машине с Windows’95 и он работает правильно, проделайте несколько шагов для конфигурации SQLBase. Эти шаги подразумеваюьт, что Вы знакомы с SQLEDIT:

Если у Вас не установлен TCP/IP протокол, проделуйте следующие шаги, чтобы сконфигурировать TCP/IP для Win’95:


Вопрос:   Для чего используется системная переменная SQLBASE?

Ответ:  Имеется системная переменная SQLBASE, которая указывает на каталог, в котором SQLBASE должен искать файлы SQL.INI, ERROR.SQL, MESSAGE.SQL, COUNTRY.SQL, и MAIN.INI. Эта системная переменная была создана для решения проблем пользователей, имеющих многочиленные копии одних и тех же файлов на компьютере. Чтобы определить \GUPTA каталог, добавьте следующую строку в ваш AUTOEXEC.BAT:

SET SQLBASE = C:\GUPTA

Если Вы устанавливаете системную переменную SQLBASE, просмотр будет проводиться только в этом каталоге. В противном случае, порядок поиска для вышеупомянутых файлов следующий:

  1. Текущий каталог
  2. \SQLBASE (текущего диска)
  3. Корневая директория (текущего диска)
  4. Каталоги, определенные системной переменной PATH
  5. Каталоги определенные системной переменной DPATH (только для OS/2 2.0).

Вы можете устанавливать системную переменную SQLBASE, и на клиенте и на сервере.


Вопрос:   Имеются ли проблемы, при работе с Windows’98?

Ответ:  Centura Software Corporation сертифицирует 32-разрядные программы для использования в Windows’98. Для получения дальнейшей информации посетите: http://www.centurasoft.com/support/tech_info/bulletins/win98warn.html


Вопрос:   Почему не загружается SQLBase 7.X в Novell NetWare 4.11 (NDS), хотя в Начальном Руководстве все описано?

Ответ:  Существуют ошибки в руководстве. Общий порядок загрузки должен быть:

load dsapi load spxs load dfd load dll -------- это не учтено в начальном руководстве ---------- load tlispxds load exfmgrnw load dbnwsrvr

  1. Согласно интерактивной документации p.12-9 пакет включает snapin файл для nwadmin <CNWA16. DLL>. Этот файл отсутствует. В данный момент Вы не можете управлять SQLBase в NWADMIN.
  2. Интерактивная документация p. 12-2 не содержит полной конфигурации. Конфигурация (кроме вышеупомянутой ошибки) правильна в Начальном Руководстве.

Дополнительная информация может быть найдена по следующему адресу: http://www.centurasoft.com/support/tech_info/bulletins/ndsdocpr.html


Вопрос:   После аварийного отказа сети, SQLBase сервер выводит сообщение "missing logfiles". Что необходимо делать?

Ответ:  Иногда происходит то, что последний журнал был в использовании базой данных в момент аварийного отказа файлового сервера. В этом случае сервер может удалить журнал в момент перезапуска. Восстановление журнала возможно с помощью с FILER.EXE.


Вопрос:   Клиенты Win’95 выдают ошибку "Cannot load sqlspxw.dll" хотя конфигурация – такая-же как для Win3.1 клиентов. Имеются установленные клиенты Novell. Как можно устранить ошибку?

Ответ:  См. http://www.centurasoft.com/support/tech_info/knowledge_base/sbsinfo/fileli~1.html

Всякий раз, когда Вы получаете сообщение "Cannot load library ...", это указывает, что Вы или не можете загрузить указанную DLL, или один из ее компонент. Убедитесь, что всего компоненты существуют.


Вопрос:   Требуется ли обновление клиентских компонент, если обновлена версия сервера баз данных (5.x - 6.x)?

Ответ:  Рекомендуется сделать это, для обеспечения доступа к новым свойствам сервера баз данных.


Вопрос:   Какой номер порта TCP/IP используется для SQLBase?

Ответ:  По умолчанию SQLBase использует 2155 порт, но использование ключевого слова LISTENPORT в SQL.INI в разделе протокола клиента, может изменять его. В зависимости от версии сервера настройки протокола должны быть подобны нижеуказанному:

[ <Servername>. < Tcp/ip протокол >] Listenport = <portnumber>

Если Вы не используете значение portnumber по умолчанию, оно должно быть явно указано в ключевом параметре SERVERPATH в SQL.INI клиента в разделе клиент. Настройки должны выглядеть следующим образом:

[ Winclient.wsock | win32client. ws32] Serverpath = <servername>. < Hostname | ip адрес >, <portnumber> / <servicename1> | {*, servicenamen >}

Имеется пример, использования 32-разрядного сервера и 32-разрядного пользователя:

[ Dbntsrvr. ws32] Listenport = 2500 [ Win32client. ws32] Serverpath = server1,127. 0. 0. 1,2500/island, video, payroll


Вопрос:   Какие файлы копируются при установке локальной версии SQLBase 7.X?

Ответ:  Имеется документ, доступный по адресу: http://www.centurasoft.com/support/tech_info/knowledge_base/sbsinfo/SQLBaseFileInfo.html в котором присутствует список файлов, устанавливаемых с SQLBase DeskTop v7. 0.0, вместе с их описаниями.


Вопрос:   Где можно взять файлы, необходимые для поддержки русского языка в SQLBase (country.sql, country.dbs и т.п.)?

Ответ:    В официальных поставках SQLBASE нет этих файлов, однако по методике, изложенной в документации, их легко создать. Но (!!!) в принципе незачем! Использование этой национализации ничего практически не дает, хотя создает много проблем:

  1. При их применении Вы сможете одновременно работать только с рускоязычными БД (например, тестовая ISLAND Вам станет недоступна и т.д.). Другие БД будут доступны только после замены country.sql и перезапуска сервера.
  2. Во-вторых, проблемы могут возникнуть при работе с несколькими серверами разной национализации
  3. В-втретьих, их применение влияет только на функции SQL @UPERCASE и @LOWERCASE, а это преобразование можно с успехом выполнить и в программе (SalStrUper...).
  4. Сортировка выполняется по русским символам и так правильно. Во многих проектах мы отказались от такой русификации и не жалеем.

Инструментальные средства

SQLConsole

Вопрос:   При установке SQLConsole 6.0 не удается создать локальную базу данных! Почему?

Ответ:  Вам необходимо создать локальную базу данных для SQLConsole, используя следующие шаги:

  1. Запуститься в режиме TOOLS ONLY.
  2. В меню 'Options’ будут видны две опции, 'Create SQLConsole database' и 'Enable automatic features’. Опция 'create' работает нестабильно. Выберите опцию 'enable'. При этом зпустится локальный сервер и будет произведена попытка соединения с локальной базой данных. Будет выдана ошибка, предупреждающая о том, что не возможно соединиться с базой данных и предложением создавать локальную базу данных. Выберите ‘Да’.

SQLTalk

Вопрос:   Возможно ли иметь "динамические сценарии" для утилиты TLKNRTR (старая версия DOS SQLTALK)?

Ответ:  TLKNRTR может быть запущен, как программа, управляемая с помощью пакетных файлов DOS. Параметр INPUT=CommandFile передает в TLKNRTR набор команд, которые должны быть выполнены. В качестве примера можно воспользоваться следующим кодом:

@ECHO OFF rem set variables Set BkpDir = \\ machine\vol\backupdir Set DB = MyDB Set DBSRV = MyServer Set Auth = sysadm/password rem create the commandfile echo set server % DBSRV %; > tmp.cmd echo connect % DB % % 1 Auth %; >> tmp.cmd echo backup database from % DB % to % BkpDir % on server; >> tmp.cmd echo release log; >> tmp.cmd echo backup log from % DB % to % BkpDir % on server; >> tmp.cmd echo exit; >> tmp.cmd rem execute the commandfile tlknrtr noconnect bat input = tmp.cmd output = tmp.log del tmp.cmd


Вопрос:   Как можно запустить SqlTalk, чтобы выполнить сценарий автоматически?

Ответ:  Используйте следующие параметры: SQLTALK BAT INPUT = <skriptfile.wts> OUTPUT < = Logfile >


SQL Windows

Вопрос:   В старых версиях средств разработки Gupta (SQLWindows 5.0.x) встретились с ограничением количества строк, заносимых в дочерний объект ChildTable (3500 и более), при этом таблица имеет сложную структуру (20 колонок). Что делать?

Ответ:  

  1. Действительно в Gupta SQLWindows 5.0.3 (и 5.0.4 на которой я тестировал ) при добавлении в сложную таблицу около 3500 строк возникает ошибка.
  2. Версии SQLWindows 5.0.3/04 и другие уже давно не сопровождаются, поэтому напрямую нельзя исправить эту ошибку.
  3. Причина заключается в том, что при добавлении строк в левой колонки строки добавляется символ ("->" - ROW_Edited), что приводит к сбоям алгоритмов занесения в таблицу новых строк.
  4. Если в цикле занесения в таблицу и фетчирования из БД сбросить эти флажки через 1000-3000 строк добавления: Call SalTblSetFlagsAnyRows( tblToInsert, ROW_New, FALSE, 0, 0 ), то занесение в таблицы проходить нормально. Правда, в этих версиях все равно нельзя добавлять в таблицу более 32000 строк.
  5. В CTD 2000/2.1 такой ситуации не проявляется и работает все значительно быстрее на тех же ресурсах. Кроме того, там снято ограничение числа строк в таблице 32000.

Вопрос:   Как настроить 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, которая работает прекрасно и по сравнению со старыми версиями не содержит ошибок.


Вопрос:   При использовании SQLWindows 5.0 с Microsoft SQL Server у меня возник вопрос. Используем SalTblPopulate для заполнения таблицы. Если количество записей слишком большое, то появляются проблемы. Высвечивается 100 записей (по умолчанию), остальные остаются пустыми. Если я ставлю 32753 (максимально допустимое количество загружаемых строк), то программа вешается намертво. Вероятно, я неправильно работаю с таблицей. Как это делать правильно?

Ответ:  Во-первых, нужно уточнить условия, при которых возникает эта ситуация, и обстоятельства применения функции:

  1. Используется ODBC или механизмы связи через SQL роутер для Microsoft SQL Server и какие версии данных продуктов.
  2. Каковы размеры оперативной памяти на Вашей ЭВМ (таблица храниться в ОП) и возможно свободное пространство локального HDD.
  3. Размер отдельной записи при выборке (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, буферы и т.д.


Вопрос:   При использовании SQLWindows 5.0 с Microsoft SQL Server в первом окне таблица, заполняемая с помощью функции SalTblPopulate и TBL_FillNormal, т.е. все записи еще не прочитаны из базы и соединение остается открытым. Если в этот момент выполнить другой запрос (любой) с другим Sql Handle, то появляется ошибка 20055 (Connection is busy with results for another hstmt). Похоже, это связано со свойством DBPROP_MULTIPLECONNECTIONS MS SQL Server'а. Как решить эту проблему?

Ответ:  В документации (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.


Quest

Вопрос:   При попытке запустить Quest не видно никаких кнопок, кроме "New" и "Open". Как это устранить?

Ответ:  Quest ищет файл "QUEST.INI", который включает описания всех кнопок. Необходимо повторно установить SQLWINDOWS/QUEST, чтобы получить правильные настройки. Либо можно указать правильный путь "questdir" в файле WIN.INI в разделе [QUEST].


Centura Team Developer

Вопрос: Можно ли в программе на TD автоматически обеспечить масштабирование интерфейса приложения при разных разрешающих способностях дисплея?

Ответ:

  1. Вообще это больной вопрос для любых средств разработки программ под Windows – изменение разрешающей способности дисплея приводит к несоответствиям в размерах окон и расположении их дочерних объектов.
  2. В последних версиях TD появились функции, которые помогаю решить эту проблему, однако не совсем просто. Это функции: SalGetWindowSize (получить размер окна и объекта), SalSetWindowSize (установить размер), SalSetWindowLoc и SalMoveWindow (для абсолютного и относительного перемещения объекта).
  3. С помощью этих функций можно настроить размер окна и расположение дочерних объектов приложения в зависимости от разрешающей способности дисплея.

13.02.06


Вопрос: Есть ли в GTD средства проектирования БД или необходимо приобретать другие продукты?

Ответ:

  1. Проектирование структур БД можно выполнять в среде TD. Существует две возможности:
    1. Визуальное описание и генерация таблиц и полей БД в интерактивном режиме с возможностью заполнения таблиц данными в удобной форме.
      Это может быть выполнено непосредственно в среде TD в подсистеме Data Base Explorer, которая запускается в пункте меню Tools для подключения к БД SQLBase; пароль задавать не обязательно.
    2. Вторая возможность визуального проектирования БД на логическом и физическом уровне предоставлена в подсистеме Team Object Manager (ТОМ), которая является мощным CASE средством, ориентированном на командную разработку проектов. В этой подсистеме предусмотрена БД репозитория, сопровождение всех модулей проекта включая и модели БД, создание разнообразных стандартных и собственных отчетов по процессам разработки. Визуальное моделирование БД выполняется с помощью графического редактора и обеспечивает генерацию реальной БД для SQLbase и диаграмм по БД.
      Доступны возможности определения связей, триггеров и хранимых процедур, ключей и условий контроля целостности БД. И т.д. TOM обеспечивает интеграцию с SQLWindows и другими продуктами, используемыми для поддержки проектирования, разработки и сопровождения программных систем любой сложности.
  2. Конечно, данная подсистема несколько уступает ERWIN (в части возможностей проектирования БД и разных представления БД), но то, что в ТОМ все объединено в единый комплекс, является преимуществом.

01.02.06


Вопрос: Можно ли вызвать выполнение макроса WORD из программы на GTD при работе с объектом АХ?

Ответ: Для выполнения макроса нужно создать AX объект приложение (Application) и документ. Для выполнения макроса вызывается метод - RunMacro для объекта приложение с указанием названия макроса.

12.10.05


Вопрос: Вопрос по продукту Team Developer 3.1.0-PTF2 Build 13582. В настройках Project - Build settings - Version поля Language и Encoding невозможно отредактировать, они пусты. Есть ли возможность это исправить, а то данные, скопированные из программы в буфер, неправильно раскодируются операционной системой.

Ответ:

  1. Действительно - эти настройки недоступны пока в приложениях. Думаю, что они зарезервированы для развития и пока в приложениях не используются (м.б., для контроля орфографии).
  2. Если речь идет о кодировке и языке, то все и так работает нормально - копирование и вставка из буфера обмена (Clipboard) работает правильно, если в операционной системе установлена поддержка русского языка. Единственная особенность (но она характерна для всех программ) состоит в том, что перед помещением в буфер обмена желательно переключиться на русскую раскладку.

20.09.05


Вопрос:   Как сделать, работая в GTD, в окне диалога, чтобы после ввода информации в поле ввода, кнопка подтверждения, например OK, сразу срабатывала (допустим при логине) при нажатии клавиши ENTER?

Ответ:  Можно использовать два способа:

  1. Назначить данной кнопке непосредственно акселератор - Enter, при этом нужно выключить режим автоматического срабатывания клавиши Enter как клавиши TAB. Это делается функцией - SalMapEnterToTab(FALSE).
  2. Второй способ, также при условии отключения режима TAB, заключается в использовании специальной функции - SalSetDefButton (<кнопка>).

И в первом, и во втором случае после нажатия ENTER будет срабатывать нужная кнопка.

20.06.05


Вопрос: При загрузке текста работающей программы в TD 2.1 в TD 3.0 вызов окна настройки свойств для класса Qtabs не производится. Для новых программ в TD 3.0 все работает. Что можно предпринять?

Ответ:

  1. Это недоработка процедуры конвертирования версий исходных текстов программ. В исходном тексте готовой программы в разделе свойств фиксирована DLL для Properties, поэтому вызывается старая DLL.
  2. Причина в том, что на Вашем компьютере установлено одновременно несколько версий TD. Если бы этого не было, то появилось бы сообщение об ошибке.
  3. Во-первых, нужно попробовать изменить путь к DLL свойств при настройке объекта в окне атрибутов - QuickObjectDll.
  4. Если это не поможет, то нужно выгрузить текст программы в формат .APT и в любом текстовом редакторе поправить путь и название DLL, например -QTABI20.DLL на QTABI30.Dll. Затем нужно загрузить в TD и опять сохранить текст программы в .APP.

05.04.05


Вопрос:   Может ли 16-ти битный клиент SQLWindows и других версий TD работать с SQLBASE 8.0?

Ответ:  Да, 16-ти битный клиент SQLWindows может работать с любыми версиями через протокол TCP/IP. При этом нужно настроить файл SQL.INI следующим образом:

Необходимые DLL можно взять из инсталляции клиента, в том числе и из младших версий.


Вопрос:   Существует ли среди продуктов Centura среда разработки для языка Java, подобная Centura Team Developer?

Ответ:  

  1. Базовым языком программирования в CTD является SAL(язык похожий на СИ). Информацию об этом языке Вы можете найти в статьях на нашем сайте или в документации. Язык SAL является достаточно развитыми для реализации информационных систем произвольной сложности. Других языков программирования продукты Gupta в явном виде не поддерживают.
  2. При разработке приложений в архитектуре клиент-сервер Вы можете воспользоваться для языка Java любыми доступными средствами (VJ или Borland JB и другими). Для доступа к БД можете использовать различные интерфейсы (ODBC, OLE DB и JDBC). Практика показывает, что лучше использовать драйверы фирмы Merant ( см. на нашем форуме).
  3. Если Вы разрабатываете WEB приложения, то вы можете использовать вставки на Java Script, VB Script и все то, что можно поместить в HTML вставки.

Вопрос:   Как динамически определить число строк и столбцов в таблицах TD, если не работаешь с БД (там объем выборки известен)?

Ответ:  

  1. К сожалению, в TD пока нашел функции, которые бы явно отвечали на эти вопросы. Возможно, они недокументированны.
  2. Существует много способов (хитростей) для определения числа строк и столбцов. Поясню те, которые использую.
  3. Для строк: самое простое переместиться в конец таблицы(для 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 )
    ...  

  4. Для столбцов: нужно в таблице организовать цикл опроса дескриптора по столбцам и подсчитать их число, так как номера столбцов последовательны, а при отсутствии дескриптора получаем 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 получим число столбцов, даже в том случае, если они сформированы динамически.


Вопрос:   Вопрос по использованию CTD: насколько необходимо наличие клиента Oracle (SQL Plus) на удаленной пользовательской машине при запуске клиента CTD?

Ответ:  

  1. Думаю, что в полном виде клиента Oracle вообще не нужно, так как вы работаете через роутер CTD.
  2. По документации, для корректной работы 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).

  3. Многие клиенты успешно работают из SQLWindows/CTD/TD с Oracle , их устраивают в том числе и временные характеристики, так как связь реализуется не на основе ODBC, а на основе практически "родного" роутера.

Вопрос:   При работе с целочисленными массивами в TD 2.1 при выполнении функции SalArrayMin мы всегда получаем значение 0.

Ответ:  Проверьте, как вы используете значения диапазона индексов массива. Нумерация индексов в TD выполняется как в языке СИ: от 0 до установленного значения.

Если вы заполняете массив, начиная с индекса 1, то по умолчанию незаполненный элемент <массив>[0] будет иметь нулевое значение, а результат выполнения функции SalArrayMin будет равен 0, при положительных значениях всех элементов массива.


Вопрос:   В документации на TD/CTD сказано (хотя очень кратко), что можно заносить информацию в заголовочный столбец стандартных таблиц. Мы не можем добиться этого. Что делать?

Ответ:  Этот режим действительно работает. Но нужно сделать следующее:

  1. Создать первую колонку в динамической таблице и сделать ее невидимой.
  2. Создать RowHeader и установить при этом режим TBL_RowHdr_MarkEdits
  3. Выполнить занесение текста в эту колонку (после добавления строк) и при этом в заголовочной колонке появиться текстовая информация.
  4. В ближайшее время на нашем сайте появиться статья, в которой подробно, с примерами поясняется этот режим.

Вопрос:   Не удается передать строковую переменую в функции для ActiveX объектов для TD. Например, при вызове Crystal Reports не удается подключиться с вызовами функций: Что делать?

Ответ:  

  1. Возможно для обращения к этим функциям нужна не строковая переменная, а переменная типа VARIANT.
  2. Проверьте по описаниям классов. Обычно это выполняется через переменную типа VARIANT.
  3. Если в качестве параметра используется переменная типа VARIANT, то обращаться к функции необходимо следующим образом:

    :
    ! Описание переменной имя, естественно, произвольное? Variant: StrVarName
    :
    ! Обращение к функции с указанием имени пользователя:
    ? Call StrVarName.SetString (strVariable1)
    ? Call axCrystalCtl.PropSetUserName (StrVarName)


Вопрос:   В последней версии СTD нет ссылок на использования механизмов DDE, они от него отказались?

Ответ:  Да в новых версиях CTD и Windows нет официальной поддержки протокола DDE. Micrisoft и Gupta предлагают использовать другие механизмы, в частности СОМ и OLE DB.


Вопрос:   Можно ли в CTD выполнять рекурсивный вызов функций и рекурсивно объявлять в классах объекты?

Ответ:  

  1. Если не применять дополнительных ухищрений, то рекурсивно объявлять объекты можно только в методах в качестве локальных переменных.
  2. Рекурсивный вызов функций не объявляется и не запрещается официально документации, но этот вызов работает. Существуют ограничения использования системных ресурсов при таком вызове (по всей видимости, за счет ограничений в стеке). Тестирование показывает, что вложенность вызова ограничивается количеством в 110 - 120. Но это ограничение в большинстве случаев для информационных систем не является критическим.

Вопрос:   Как настроить 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). При удачных действиях вы увидите вашу БД и сможете с ней работать.


Вопрос:   В CTD (1.5.1 и 2000) иногда возникает ситуация, при которой пропадает пункт пользовательского меню "Control ghjpertis ..."для АХ объектов. Что делать?

Ответ:  Действительно, эта ситуация возникает в версиях, у которых не установлены PTF. Для ее ликвидации, помимо установки PTF, можно предпринять следующее: добавьте новый объект данного типа в окно, проверьте вызов пункта пользовательского меню "Control ghjpertis "(он должен появиться), удалите новый объект. Связь с окном “свойства” восстановится.


Вопрос:   Можно ли в CTD нарисовать точку в окне, или график?

Ответ:  

  1. Трудно придумать ситуацию, когда в информационной системе необходимо использовать такую графику (нарисовать точку). Что это за задача и какова ее необходимость?
  2. Все-таки CTD является специализированной системой программирования, ориентированной на построение информационных систем, для этого у нее много эффективных средств. Усложнение и "отягощение" многих систем приводит к тому, что их фактически невозможно полностью освоить. CTD тоже приближается к этому порогу. Тем не менее в CTD можно тем или иным способом вывести графическую информацию.
  3. Для вывода деловой графики предусмотрены специальные объекты - cQuickGraph. Рисуйте графики или диаграммы.
  4. Для отображения рисунков можно на окно наложить - фоновые рисунки, можно их сформировать и в динамике.
  5. Можно попробовать отобразить точку посредством линий, но это не так просто.
  6. Можно создать свои собственные объекты Customer Controls или подключить существующие (к сожалению, пока не знаю, где и что искать, но уверен: такие есть)
  7. Наверняка можно найти и подключить AX объекты этого назначения, их много и на различных CD или в ИНТЕРНЕТ.
  8. Можно действительно написать собственные DLL, связанные или не связанные с п.6 и п.7. Все handle окон есть и можно в CTD обрабатывать практически любые сообщения WINDOWS (WM_PAINT)
  9. Можно работать также с объектом типа Picture (dev.pdf глава 16)
  10. Можно также запустить связанные объекты типа Диагарамм Excel и т.д.

Вопрос:   Где можно найти описание примеров для CTD?

Ответ:  Описание примеров из каталога CTD\Samples дается в тех разделах документации, где описаны данные возможности CTD. Например, описание WEB-приложений дано в книге webdev.pdf, где описаны классы и технологии работы с WEB-приложениями.


Вопрос:   Можно ли на ORACLE обратиться к двум БД - DB1 и DB2 и существует ли возможность сделать это средствами CTD?

Ответ:  Могу сообщить следующее:

  1. Точно не знаю, может ли ORACLE может выполнить запрос одновременно к двум БД, но если это так, то возможно Вам помогут новые функции, включенные в CTD2000 для работы PL/SQL блоками.
  2. Это функции:
    SqlOraPLSQLPrepare
    SqlOraPLSQLExecute
    SqlPLSQLCommand
    они включены и в описание Funcref.pdf.
  3. Если подключиться к одной БД, а затем в PL/SQL блоке выполнить нужные подключение к новой (новым) БД, то может быть запрос такого вида будет работать.

Вопрос:   В предыдущих версиях SQLBase 6 и SQLWindows был QUEST, где он в CTD2000?

Ответ:  В новой версии QUEST нет, он существует только в 16-ти разрядном варианте. Вместо него предлагается использовать DataBase Explorer. Но если Вы работаете по сети, то можете, настроив правильно протоколы подключения, подсоединиться со старым QUEST 3.1 к новому серверу и он будет работать! Только зачем?


Вопрос:   Почему при инсталляции CTD 1.5 не доступен компонент "Object Compiler"?

Ответ:  Object Compiler не был включен в поставку CTD 1.5, как сказано в сведениях к версии 1.5.1 "по причине нехватки времени". По этой причине в поставку не включены также Object Nationalizer и Lotus Notes QuickObject. Эти компоненты включены в поставку CTD 1.5.1


Вопрос:   CTD 1.1.2: При использовании экранных таблиц с динамическими (автоматическими) колонками, когда курсор уходит из отредактированной ячейки, таблица не получает сообщение SAM_Validate, как было в SQLWindows.

Ответ:  Это ошибка CTD 1.1.2. Она исправлена в PTF и в версии 1.5.


Вопрос:   Может ли SQLWindows может работать и через 32-хразрядный ODBC?

Ответ:  К сожалению прямой ссылки, на документацию о совместном использовании SQLWindows (я понимаю как 16-ти разрядную версию) ODBC32 я пока не нашел. Но, судя, по тому, как работают 16-ти разрядные приложения с 32-ти разрядными, например QUEST и локальный SQLBase 7.1 или ERWIN 2.6 c ним же, то на этот вопрос можно ответить отрицательно. Для SQLWindows нужен 16-ти разрядный ODBC. Кроме того, из логики взаимодействия, конструирования и передачи параметров в приложениях, следует, что без дополнительных "примочек" такое взаимодействие невозможно.  


Вопрос:   В программе Sqltalk не работает должным образом режим поиска в скрипте текста по образцу. При первоначальном нажатии кнопки "Найти далее" выполняется поиск образца. При повторном нажатии кнопки "Найти далее" поиск не осуществляется.

Повторный поиск выполняется успешно, если закрыть окно "Поиск" и заново открыть.

Можно ли исправить ситуацию? У нас:

Ответ:  У Вас, по всей видимости, используется библиотека - (tlkc32.dll 7.0.1) из версии CTD 1.5.1, в которой действительно проявляется перечисленная ситуация. Размер и дата создания этой библиотеки - 384 512 б и 01.03.1999. В предыдущей версии этой DLL, из CTD 1.5 этой ошибки нет (Размер и дата создания старой библиотеки - 378 880 б и 03.06.1998.). Не проявляется эта ошибка и в последующих версиях CTD, даже в BETA 1 Matternhorn. Рекомендуем Вам вернуться к прежней версии этой библиотеки, пока не появиться новый PTF, в котором данная ошибка ликвидирована.

При необходимости мы можем переслать Вам рабочую версию библиотеки tlkc32.dll по e-mail или FTP.


Вопрос:   Несмотря на многие глюки, мы собираемся и дальше разрабатывать на CTD. Кстати, Вы не знаете, почему пакет заплаток на CTD 1.5.1 (именно! дословно:"Centura Team Developer 1.5.1 PTF1 SqlWindows32 PTF Download 4909") отказывается устанавливаться на свою (1.5.1) версию, сообщая, что не находит CTD 1.5._0_? Мы-то его скачали в слабой надежде что кое-какие ошибки среды вдруг да будут исправлены, но видно жить нам с ними дальше. Самое печальное, то что CTD 2, имея какие-то не особо необходимые новшества, наверно опять не устранит старые глюки. Например, на NT 4.0 sp4-5-6 (не на одной машине) CTD версий 1.0-1.5-1.5.1 одинаково валится через раз - на третий после запуска приложения в среде дизайнера, или при открытии новой копии дизайнера при вызове библиотеки из модуля.

Ответ:  

В целом согласен, что превращение SQLWindows в супермощную систему (в том числе и для WEB) может ее сгубить. Будущее SQLWindows в вылизывании глюков, что достижимо в короткие сроки!


Вопрос:   Есть ли проблемы при миграции приложения с SWindows на CTD? Нужно ли корректировать код?

Ответ:  Проблем для перехода с SWindows на CTD нет. Все функции и операции поддерживаются. При этом выполняется процедура конвертирования в формат CTD. После конвертирования простым способом возврат в SWindows невозможен. Однако есть другие способы, так что приложение на CTD может быть конвертировано в SW, при условии, что не задействованы те возможности CTD, которых вообще нет в SW.


Вопрос:   Поддерживаются ли в CTD 2000 статдарты 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.


Вопрос:   Поддерживается ли в CTD 2000 стандарты Microsoft: ActiveX, OLE, DCOM, ODBC?

Ответ:  Стандарты ActiveX, OLE, DCOM, ODBC поддерживаются в CTD 2000. Кроме того, поддерживается OLE DB и COM объекты.


Вопрос:   Поддерживается ли в CTD 2000 элементы стандарта SQI-3, внедренные в настоящее время в Oracle, Informix, BD2?

Ответ:  SQLKBase базируется на SQL-92 и поддерживает этот стандарт полностью. Стандарт SQL-3 пока не является общепринятым. При работе CTD 2000 с соответствующими роутерами Oracle, Informix и BD2, если они соответвуют версиям СУБД, которые работают с SQLK-3, то все особенности должны поддерживаться, так как взаимодействие выполняется на SQL языке, команды которого к СУБД передаются в текстовом виде. Особенности могут быть только при визуальном проектировании запросов, что, на наш взгляд, не так существенно.


Вопрос:   Как загрузить БД при выдаче ошибки "Log disk space critically short"?

Ответ:    

  1. Постарайтесь выгрузить вашу БД по частям и загрузить ее тоже по частям в SQLBase 7. Можно по таблицам (там нужно вручную подправить в выгруженном файле номер версии перед загрузкой)
  2. Если БД выгружена полностью, то можно подредактировать скрипт, вставив туда через определенные промежутки команду COMMIT. Это тоже иожет помочь в вашем случае
  3. Если есть возможность, попробуйте загрузку в SQLBase 7.5
  4. Имейте в виду, что для LOG файлов нужно очень много места при таких базах данных. Несколько скороспелое предположение: валиться сервер может и по причине отсутствия в программах COMMIT, т.е. по такой же причине - недостатка размера для LOG. Кроме того, проверьте физику харда. Вот дополнительный коплекс мер по преодолению Вашей проблемы, включая возможно и ситуации, связанные с падением сервера БД:
    1. В специальном файле настройки SQLBase (default.doc) можно увеличить значение параметра "log file size in bytes" - для NetWare не может быть пока больше 2Гб, или параметра "checkpoint log interval in bytes" - для NetWare не может быть пока больше 2Гб. Вообще, попробуйте варьировать параметрами в этом файле, связанными с обслуживанием журнала транзакций (LOG.).
    2. Вообще самые надежные серверы Centura, как показывает практика: v 5.2, v 6.01, v 7.5.1
    3. Попробуете установить AUTOCOMMIT для транзакций.
    4. Если у Вас сервер работает круглосуточно, то возможно накапливаются большие файлы для отката транзакций. Введите десятиминутный регламент пару раз в сутки для перезагрузки СУБД (снять и снова запустить).
    5. Учтите, что log файлы всегда располагаются совместно с файлом БД.
    6. Проверьте установку параметра настройки SQLBase - LOGBACKUP, его лучше установить в состояние OFF.
    7. В SQL.ini отменить проверку размера фалов журнала: disablelogspacecheck=1
    8. Вообще, желательно детально по документации изучить и проанализировать все параметры настройки журнала транзакций. Возможно, в результате экспериментов у Вас эти параметры изменились, или в настоящий момент не соответствуют Вашей реальной ситуации с БД. Этот материал находится в книге: "SQLBase. Database Administrator's Guide". Если предпринятые меры не помогут, постарайтесь более детально описать ситуацию, (ОС, версии, номера ошибок, особенности БД и все, что вы считаете важным для вашего случая) и напишите нам. В случае необходимости мы продолжим анализ Вашей ситуации.

Connectivity

Основные

Вопрос: Для подключения к БД ORACLE мы используем интерфейсную DLL (sqlora32.dll) более новой версии CTD и приложения не могут подключиться к сервису ORACLE. Почему?

Ответ:

  1. Дело в том, что в новых интерфейсных DLL изменена последовательность импортируемых функций и поэтому приложения, сделанные в среде старых версий (например, 1.5.1) не могут правильно обращаться к внутренним функциям DLL, поэтому необходима "родная" DLL из этой версии.
  2. Если Вы инсталлировали CTD без поддержки ORACLE, то эта DLL у Вас не будет доступна, но можно не выполнять новую инсталляцию, а взять DLL их DEPLOY или с другого компьютера, на котором она есть и версии соответствуют.

01.02.06


Вопрос: Нам не удается подключиться к БД по протоколу TCP/IP, хотя все настройки в SQL.INI прописаны правильно. В Connectivity Administrator имя БД появляется со смещением. Что делать?

Ответ:

  1. Возможно у Вас при кодировании инструкции в SQL.INI serverpath в секции [win32client.ws32] допущена непроизвольная ошибка: в списке БД после запятой присутствует лишний пробел. И это приводит к неправильному восприятию имени БД. Возможно у Вас так:
    [win32client.ws32]
    serverpath=Server1,localhost/DBMAME, DBNAME1
    в этом случае имя второй БД будет неверно восприниматься, необходимо убрать пробел после запятой, правильно так:
    [win32client.ws32]
    serverpath=Server1,localhost/DBMAME,DBNAME1
  2. Можно указать также с помощью звездочки (*) перечень всех доступных БД:
    [win32client.ws32]
    serverpath=Server1,localhost/*
    тогда Вы избавитесь от необходимости контролировать пробелы.

01.02.06


Вопрос: Устанавливается СУБД RDM Server на Linux, а пользователи останутся под WINDOWS, будет ли осуществляться подключение?

Ответ:

  1. По любым доступным протоколам между сервером и рабочей станцией, в частности по протоколу TCP/IP клиенты на любой платформе получат доступ к серверу RDM Server, который развернут под Linux. Подключение (connect) будет осуществляться.
  2. Аналогичный ответ, если использовать SQLBASE для LINUX. При этом нужно учесть, что номер порта связи должен быть указан в клиентской части настроек или настроек ODBC. По умолчанию этот порт задается равным 2155.

23.11.05


Вопрос: Поддерживает ли СУБД SQL SQLBase 9.0 протокол связи с клиентом NETBIOS?

Ответ:

  1. В новых версиях, начиная с 8.5 протокол NetBiоs в явном виде не поддерживается.
  2. Однако, для связи можно использовать коммуникационную DLL (sqlntnbi.dll) из младших версий (например, 8.1). Для этого нужно переписать ее в корневой каталог сервера и настроить доступ по протоколу.
  3. Настройки могут быть выполнены с помощью Connectivity Administrator (протокол в настройках сервера должен стать доступным) или вручную в секции SQL.INI:
    ...
    servername=Server85,sqlntnbi
    DBNAME=TESTDB,sqlntnbi
    ...
    [dbnt5sv.dll]
    comdll=sqlntnbi
    и
    [dbnt*sv.dll]
    comdll=sqlntnbi

    [dbnt*sv.ntnbi]
    commands=200
    names=5
    sessions=10

12.10.05


Вопрос:   При попытке вставить пустую строку, производится замена на пробел. Это можно избежать?

Ответ:  Маршрутизатор базы данных Centura ведет себя следующим образом:

Client entry Oracle Informix MS SQLServer Sybase IBM DB2
Empty string(“”) NULL Space Space Space(constant) NULL(bind var) Space
NULL NULL NULL NULL NULL NULL
space Space Space Space Space Space
STRING_Null NULL NULL NULL NULL NULL

Чтобы избежать проблемы вставки пробела, добавьте ключевое слово "SetZeroLengthStringsToNull = 1" в SQL.INI в секции [WinClient] и [Win32Client].


Вопрос:   Как посмотреть протокол работы SQLRouters?

Ответ:  В SQLWindows или CTD, Вы можете отслеживать работу маршрутизаторов, добавив строку следующего вида log = <имя файла> в SQL.INI, в секции указанные в таблице:

SQLRouter Section 16-bit Section 32-bit
Sybase [winclient.sybw] [win32client.syb32]
Oracle [winclient.oraw] [win32client.ora32]
ODBC [winclient.odbw] [win32client.odb32]


Oracle

Вопрос: Как подключиться к СУБД ORACLE из среды Gupta Team Developer?

Ответ:

  1. Для подключения к СУБД ORACLE нужно сделать настройки в SQL.INI. Как минимум в 2-х местах. В секции:
    [win32client.dll]
    Задается новый роутер:
    comdll=sqlora32
    Имейте в виду, что эта библиотека должна быть проинсталлирована при установке GTD.
  2. В секции:
    [oragtwy]
    Задается имя БД и сервиса БД:
    remotedbname=<db_name>,<connect_string>
    например:
    remotedbname=ORDB,@,
    где имя БД - ORDB , а имя сервиса ORSERV.
    Для уточнения параметров подключения см. документацию: книга ccod.pdf раздел - 4.
    Возможны и другие настройки, здесь даны минимально необходимые, их использование и назначение Вы найдете также в документации.
  3. Отмечу также, что 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.


Вопрос:   Как установить уровень оптимизатора?

Ответ:  Параметры настройки оптимизатора могут быть изменены с помощью команды:
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-битный установщик.


Вопрос:   Почему при выполнении запроса, содержащего хранимые функции, которые возвращают VARCHAR2 (VARCHAR), результаты не передаются в приложение?

Ответ:  Это связано с тем, что максимальная длина VARCHAR2 в ORACLE – 2000 символов, что трактуется OraGtwy как LONG VARCHAR, даже если явно указать меньшую длину возвращаемого значения (например, VARCHAR(80)), поэтому данные следует принимать в переменные (или поля) типа Long String.


Вопрос:   Для вызова хранимой процедуры создана функция CTD; внутри нее вызывается функция SqlPLSQLCommand(). Передача параметров в хранимую процедуру и из нее осуществляется через параметры функции. Однако значения, возвращаемые процедурой в эти параметры не попадают.

Ответ:  Для обмена данными с хранимой процедурой следует использовать локальные переменные, а затем из них передавать значения в параметры.


Вопрос:   Что за раздел [ODBCrtr] в sql.ini? Насколько я понял, это настройки роутера. Но в документации я по этому вопросу ничего не нашел. Хотелось бы узнать о них по подробнее.

Ответ:  

Короткий ответ:
Раздел ODBCrtr в sql.ini использовался в ранних версиях SQLBase для определения удаленной (remotedbname) БД для QDBC взаимодействия. В настоящее время он заменен на настройки в файле ODBC.INI. Смотрите соответствующие разделы документации по SQLBASE Connection. Подробнее о старой версии раздела [ODBCrtr] в sql.ini можно посмотреть в документации версии 5.2 (или 6.0) SQLBase. Книга "SQLNetwork: Guide to GUPTA Connectivity " стр. 3. 24. В версии 7.5 SQLBase этот раздел [ODBCrtr] может использоваться для определения параметра buffrow (и других) для контроля за буферизацией ODBC взаимодействия ( см. стр. 8-11, 4-8, 4-10 и др. электронной книги ccon.pdf - книга Connecting Centura Objects to Databases из CTD 2.0 Matternhorn).

Возможный распространенный ответ:
Раздел ODBCrtr в sql.ini использовался в ранних версиях SQLBase для определения удаленной (remotedbname) БД для QDBC взаимодействия. В документации версии 5.2 (или 6.0) SQLBase. Книга "SQLNetwork: Guide to GUPTA Connectivity " на стр. 3. 24. Сказано буквально следующее:

(начало цитаты)
ODBC remotedbname Section [odbcrtr] Syntax remotedbname=db_name, connect__string Description db_name specifies the database. The name cannot be more than 8 characters.

The connect _string contains one required value, the DSN, which is the name of the data source as returned by SQLDataSources. This value must match the DSN value defined in ODBC. INI.

The connect string can also contain a user name (UID) and password (PWD) for Quest or SQLWindows login dialog boxes. User name and password can be defined in three places: in ODBC. INI, in SQL. INI, and at runtime; each one of these locations takes precedence over its predecessor (that is, a UID and PWD in SQL. INI override any ODBC. INI entries). If no user name or password are specified in files, you are prompted at runtime for the security information. Values in the connect string may be separated by semi-colons (;).

For more information about ODBC. INI and the connect string, read your ODBC driver manuals.

Example This example specifies a database called DEMO. It connects to a data source called MYDB, which is defined in ODBC.INI with SYSADM/SYSADM as the user name and password.

remotedbname=DEMO, DSN=MYDB;UID=SYSADM; PWD=SYSADM

(конец цитаты)Не вдаваясь в детальный перевод, можно сказать, что информация об удаленной БД ODBC дублировалась в нескольких местах: ODBC.INI и SQL.INI. Для последних версий SQLBase эта неопределенность была преодолена. В документации на SQLBase 7.1 - 7.5 уже, хотя и коротко сказано свежующее ( электронная книга Connecting Centura Objects to Databases - ссоn.pdf, раздел Connect search order стр. 1-8):

(начало цитаты)

A slight variation applies to SQLRouter/ODBC and SQLRouter/Microsoft SQL Server. Instead of searching the [odbcrtr] section of SQL.INI for a remotedbname statement, the application tries to find an ODBC data source name in the ODBC.INI file that matches the target database name. Otherwise, the processing is the same as for all the other SQLRouters.

(конец цитаты)

Все настройки для удаленных БД на базе ODBC в частности для SQLRouter/ODBC и SQLRouter/Microsoft SQL Server введены в файл настроек ODBC.INI (или в DDC.INI для последних версий CTD. DDC database connectivity configuration). Нужно посмотреть соответствующие разделы документации, связанные с настройкой драйверов ODBC на вашем компьютере. В версии 7.5 SQLBase этот раздел [ODBCrtr] может использоваться для определения параметра buffrow(и других) для контроля за буферизацией ODBC взаимодействия ( см. стр. 8-11, 4-8, 4-10 и др. электронной книги ccon.pdf - книга Connecting Centura Objects to Databases из CTD 2.0 Matternhorn). Кроме того, старый раздел поддерживался для коммуникаций в OS/2 и роутеров ДОС dbxlocal, dbrouter и dbxcompbo.


Вопрос:   Проблема с работой 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.


Вопрос:   При переходе на новую версию (с CTD 1.5) возникла следующая проблема: в новой версии, в отличие от старой, нельзя запускать хранимые процедуры Oracle операторами SqlOraPLSQLPrepare и SqlOraPLSQLExecute. Что нужно делать?

Ответ:  Действительно - в первоначальной версии CTD2000 были недочеты при выполнении этих функций. Для ликвидации данной ошибки нужно с сайта centurasof.com скачать PTF1. После установки его эти ошибки проявляться не будут.


Microsoft SQLServer

Вопрос:   На некоторых машинах, с абсолютно идентичными 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?

Ответ:  Использование ‘||’ не отрабатывается. SQL Server использует знак '+' для конкатенации столбцов, как показано в следующем примере:

SELECT colA + colB + colC FROM tableD INTO :sVar


JDBC

Вопрос:   Нет доступа к JDBC-драйверам для работы. Что неправильно?

Ответ:  

Убедитесь, что используется коммерческий выпуск JDBC драйвера а не файлы .class от бета выпуска.

Переименуйте каталог установоки следующим образом: C:\Centura\centura\java\sqlbase\

Чтобы зарегистрировать драйвер, необходимо использовать следующий способ включения: "centura.java.sqlbase.SqlbaseDriver "

Чтобы проверить подключение JDBC, используйте утилиту JDBCTest, доступную на http://www.intersolv.com


ODBC


Вопрос:    Есть возможность из переменной типа 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


Вопрос:    Что такое среда разработки клиент-серверных приложений Gupta? Интересует самый минимальный и, соответственно, дешевый вариант, который позволил бы делать приложения под MS SQL.

Ответ:  

  1. Среда разработки клиент-серверных приложений Gupta - это Team Developer (TD, старые названия: GUPTA SQLWindows, Centura Builder, Centura TD). Развитые и открытые для развития средства для разработки информационных систем любой сложности. Работает напрямую с разными СУБД, включая и MS SQL. Включает все современные технологии (WEB, СОМ и др.). Базируется на структурном языке типа СИ, который имеет дополнительные возможности и средства для объектно-ориентированного программирования. Подробнее в статьях на нашем сайте. Работает и развивается с 1987 года.
  2. Для разработки приложений под MS SQL, достаточно иметь TD любой версии. Последняя версия 3.0 (январь 2003 года).

06.06.2003


Вопрос:    У нас планировалось, что будет 2 сервера (приобрели 5 + 10 клиентов серверов). Теперь нужно, чтобы был один сервер на 15 пользователей. Если, я все правильно понимаю, то ему нужно делать апгрейд на 25 пользователей или они могут на одном сервере запустить оба пакета и все 15 будут нормально работать?

Ответ:  

  1. Сервер на определенное число пользователей можно использовать только с этим максимальным числом, объединение числа лицензий для двух серверов невозможно.
  2. В принципе можно на одном сервере запустить две СУБД с разными именами, но только при условии, что они будут работать с разными БД. Разделение доступа к одной БД пока не предусмотрено.
  3. Даже если возникнет возможность работы с двумя СУБД на одном компьютере, они сильно будут влиять друг на друга с точки зрения производительности. СУБД, обрабатывающая запрос, будет тормозить работу другого сервера. Правда, при очень мощных компьютерах и маленьких БД и рабочей нагрузке такое влияние может быть незначительным.
  4. Действительно, клиенту есть смысл сделать UPGRADE на новую версию с необходимым числом пользователей.

06.06.2003


Вопрос:    Можем ли мы использовать WORD и EXCEL при формировании выходных документов в приложениях на TD?

Ответ:   Для работы с WORD и EXCEL нужно использовать AX технологию и COM объекты этих компонент для доступа к функциям работы с этими объектами. Более подробно возможности AX и COM изложены в документации и статьях на нашем сайте.

06.06.2003


Вопрос:    Можем ли мы использовать SQLBase DeskTop на удаленной станции для продолжения непрерывной работы в удаленном офисе при разрыве связи с центральным офисом и сервером SQLBASE?

Ответ:   НSQLBase DeskTop полностью по функциям и возможностям совпадает с сервером SQLBASE. Поэтому при переключении на локальный сервер все приложения, расположенные на одном компьютере с локальным сервером, будут работать нормально. Это фактически режим распределенных БД. Конечно, нужно продумать технологию подкачки БД на локальный сервер и способ автоматического переключения на локальный сервер и обратно. С другого компьютера обратиться на локальный сервер нельзя, для этого нужно иметь дополнительный сервер БД.

06.06.2003


Вопрос:    Есть информация о выходе новой версии RDM Embedded 6.0 фирмы Birdstep Technology. Что нового в этой версии?

Ответ:   Новая версия этой системы (когда-то DB_Vista), ориентирована на класс приложений, которые используются со встраиваемыми СУБД и должны обеспечивать высокую производительность.

Основные новшества следующие:

  1. Стандартизован SQL-интерфейс для доступа к данным.
  2. Для повышения надежности функционирования, обеспечивается возможность зеркальных копий БД.
  3. Обеспечивается многопоточная технология.
  4. Добавлены новые функции для упрощения программирования.
  5. Доступны длинные имена и работа в формате UNICODE.

27.02.2003


Вопрос:    При переходе с CTD 1.5.1 на TD 2.1 мы не можем исправить и сохранить файл текста программы. Что делать?

Ответ:   Такая ситуация встречается очень редко, но она полностью не исключена в больших программах. Скорее всего, вы использовали буфер обмена при копировании фрагментов из одной версии в другую. Для исключения такой ошибки можно предпринять следующие шаги:

  1. Сохраните в версии 1.5.1 Вашу программу в текстовом формате (*.apt). Загрузите в новую версию 2.1 программу в формате *.apt, а затем запомните в формате *.app.

    Если не получится:

  2. Загрузите программу в TD 2.1. закомментируйте часть текста программы и сохраните. Если не получится, то закомментируйте другую часть программы, откоментировав первую (методом проб и ошибок). После комментирования и разкомментирования включается преобразователь комментария в текст и происходит исправление ошибок форматирования, которые могут случайно возникнуть при копировании через буфер обмена.

    Если не получится:

  3. Постарайтесь локализовать фрагмент текста, в котором возникла ошибка (методом комментирования). Это может быть 1-2 строки. Наберите текст заново.

27.02.2003


Вопрос:   Можно ли подсоединяться к SQL Base через ODBC из Delphi, Crystal Reports, Centura Report Builder, Centura Database Explorer?

Ответ:  Каких-либо проблем при соединении из Delphi, Crystal Reports к SQL Base через ODBC не возникает, но ODBC нельзя использовать для подключения из родных продуктов Centura (Centura Report Builder, Centura Database Explorer). Необходимо использовать другие протоколы: APIPE, WINSOCKS, IPX/SPX, NETBeui. ODBC используется для соединений от продуктов третьих фирм, таких как MS-SQL Server, Sybase, Oracle, Excel, etc...

Невозможность подключения из родных продуктов поясняется ниже: You do SQLConnet() (basic SQLAPI call)
- This opens SQL.INI and read thru it.
- comdll=sqlodb32 -> call ODBC admin -> call SQLBase ODBC driver
- SQLBase ODBC Driver calls the SQLAPI again and there you go...


Вопрос:   При попытке доступа к SQLBase из MS Access выводится сообщение "Table ‘TMP, % # MAU' alredy exist". Как этого избежать?

Ответ:  Детальная информация по этой теме доступна по адресу: http://www.centurasoft.com/support/tech_info/bulletins/access~1.html


Вопрос:   Используется некоторое программное обеспечение для загрузки данных в SQLBase с использованием ODBC, но при этом используются кавычки для описания столбцов, и следовательно SQLBase не распознает их правильно. Имеется ли обходной путь?

Ответ:  При использовании приложений, которые создают SQL-запросы подобно "INSERT INTO "INETLOG"("ClientHost", ..) ... " для вставки данных в SQLBase, существует проблема в том, что кавычки в именах столбцов и таблиц не воспринимаются. Обходным вариантом является следующий шаг. Необходимо создать таблицы и столбцы с кавычками в именах.
Например:

CREATE TABLE "INETLOG"("ClientHost" char (255), ...) В SQLBASE.

Либо переименуйте уже существующие таблицы.


Вопрос:   Используется CTD/SQLWindows SQLRouter для ODBC. При этом ODBC драйвер не перечислен в списке доступных драйверов. Что можно сделать?

Ответ:  Невозможно проверить все ODBC драйверы. Если драйвер совместим с ODBC 2.0, то он должен работать. Если имеются трудности с типами данных, обратитесь к интерактивной справке для получения информации о DCC.INI.


Вопрос:   Как мне восстановить информацию из системного каталога ODBC источника данных?

Ответ:  Это может быть выполнено с помощью непосредственного подключения ODBC API. Либо с помощью использования ODBCTESTX.OCX(свободно распространяемый ActiveX компонент), который работает с ODBC API.


Вопрос:   При попытке соединяться с источником данных ODBC, появляется ошибка 401 "Cannot connect to database". Как можно избежать этого?

Ответ:  Centura сохраняет информацию об ODBC в файле по имени GUPTA.INI. Это, как предполагается, делает соединение с источником данных быстрее. Этот файл хранится в каталоге, который содержит ODBC32.DLL. Рекомендуется удалить GUPTA.INI прежде, чем будет соединение с ODBC источником данных. Это предотвратит ошибку, при правильно сконфигурированом ODBC.


Вопрос:   Как можно обойти ошибку 1811 "File not found" при попытке соединения с ODBC источником данных?

Ответ:  Centura сохраняет информацию об ODBC в файле по имени GUPTA.INI. Это, как предполагается, делает соединение с источником данных быстрее. Этот файл хранится в каталоге, который содержит ODBC32.DLL. Рекомендуется удалить GUPTA.INI прежде, чем будет соединение с ODBC источником данных. Это предотвратит ошибку, при правильно сконфигурированом ODBC.


Вопрос:   При замене ODBC источника данных, для использования другой базы данных Centura хранит соединение со старой базой данных. Как это устранить?

Ответ:  Centura сохраняет информацию об ODBC в файле по имени GUPTA.INI. Это, как предполагается, делает соединение с источником данных быстрее. Этот файл хранится в каталоге, который содержит ODBC32.DLL. Рекомендуется удалить GUPTA.INI прежде, чем будет соединение с ODBC источником данных. Это предотвратит ошибку, при правильно сконфигурированом ODBC.


Вопрос:   Драйвер не поддерживает псевдонимы столбцов. Возможно ли решить эту проблему?

Ответ:  Для версии 6. 1. x утверждение, подобное 'SELECT NAME AS CUSTNAME FROM TABLE' всегда возвращает первоначальное имя столбца. Хуже, когда вычисляемые столбцы, агрегаты и т.д. в запросе не возвращают заголовки вообще. SQLBASE 7.0.1 имеет новый ODBC драйвер, версии 3.01.0006. Используя этот драйвер можно прекрасно выполнять запросы типа:

SELECT COMPANY_NAME AS NAME FROM COMPANY; SELECT INVOICE_NO, SYM(ITEM_PRICE) AS X, AVG(ITEM_PRICE) AS Y FROM INVOICE_ITEM GROUP BY 1; SELECT @LEFT(COMPANY_NAME, 4) AS SPLITNAME FROM COMPANY;


Вопрос:   Quest при обращении к базе дает ошибку Invalid SET parameter. А WinTalk вообще не видит базу по ODBC.

Ответ:  Нужно проверить настройки драйверов ODBC Quest, совершенно точно эта программа (Quest) работает с ODBC наборами. Возможно, потребуется переустановить драйверы, а затем определить настройки соответствующих наборов данных. С WinTalk, как с промежуточным продуктом, были проблемы с доступом в БД и, в частности, ODBC наборами. Используйте SQLTalk с обновленными DLL и все возможности, даже LOAD и UNLOAD, будут доступны. Из SQLWindows доступ к ODBC наборам также работает нормально (при правильной настройке драйверов).


За дополнительной информацией обращайтесь в компанию Interface Ltd.

Обсудить на форуме Gupta Technologies

Рекомендовать страницу

INTERFACE Ltd.
Телефон/Факс: +7 (495) 925-0049
Отправить E-Mail
http://www.interface.ru
Rambler's Top100
По техническим вопросам обращайтесь к вебмастеру