AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.08.2006, 04:03   #1  
IDLER_imported is offline
IDLER_imported
Участник
 
3 / 10 (1) +
Регистрация: 30.07.2006
Thumbs up
Здравствуйте!

Пытаюсь создавать внешние приложения для Нава, используя C/FRONT. С использованием в СИ всё, в общем-то, понятно, но использовать придётся, скорее всего, Дельфу. Так вот, при попытке подключиться к базе, библиотека выдаёт ошибку: "Error 1406 in module 19". Причём, функция DBL_Init, судя по всему, выполняется без всяких проблем.

Код на Дельфе такой:

Код:
procedure DBL_Init;						external 'CFRONT.DLL';
procedure DBL_Exit;						external 'CFRONT.DLL';	  
procedure DBL_OpenCompany(Name: string);	external 'CFRONT.DLL';
procedure DBL_CloseDatabase;				external 'CFRONT.DLL';

procedure DBL_ConnectServer(dName: string;
sName: string; NetType: string);			external 'CFRONT.DLL';

procedure DBL_OpenDatabase(Name: string;
CacheSize: integer;CommitCache: boolean);	external 'CFRONT.DLL';

procedure DBL_CloseCompany;				 external 'CFRONT.DLL';
procedure DBL_DisconnectServer;				  external 'CFRONT.DLL';
procedure DBL_LoadLicenseFile(Name:string);	 external 'CFRONT.DLL';
function  DBL_CompanyName: string;			external 'CFRONT.DLL';


procedure TfrmMain.Button1Click(Sender: TObject);
begin
DBL_Init;


DBL_ConnectServer('NDBCN', 'accounting', 'tcp');
DBL_OpenDatabase('IDLER.fdb', 2048, False);

DBL_OpenCompany('BSOD interactive');
ShowMessage(DBL_CompanyName);
DBL_CloseCompany;

DBL_CloseDatabase;
DBL_DisconnectServer;

DBL_Exit;
end;
При отладке выяснил, что библиотеку рвёт при вызове DBL_ConnectServer. Если её убрать - на DBL_OpenDatabase.

Может, кто-то имеет подобный опыт? Или знает коды ошибок? В любом случае, буду рад любой помощи.
Старый 04.08.2006, 09:32   #2  
IDLER_imported is offline
IDLER_imported
Участник
 
3 / 10 (1) +
Регистрация: 30.07.2006


Открытия порождают вопросы

Здесь я разобрался, но возникли другие проблемы:

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

2) При попытке создать таблицу с помощью CFRONT, возникает ошибка приложения (невозможно записать данные по указанному адресу в памяти).

В чём могут быть проблемы?

И, если кому понадобится:
C\FRONT - библиотека сёвая (что означает иное, чем в Паскале, обращение к функциям), и для того, что бы её использовать в Дельфе\Паскале между объявлением функции и обращением к библиотеке нужно вставлять "cdecl" или "stdcall". Например:
Код:
procedure DBL_OpenDatabase(Name: string;
CacheSize: integer;CommitCache: boolean);
cdecl; external 'CFRONT.DLL';
Старый 04.08.2006, 16:13   #3  
Dzemon is offline
Dzemon
Moderator
 
1,247 / 12 (3) ++
Регистрация: 09.09.2004
1) Ничего смешного нет. Локальную базу без сервера можно открять только ОДНИМ клиентом.
2) сфронт, насколько я знаю, не умеет создавать/модифицировать объекты, а так же исполнять код.
Старый 04.08.2006, 19:10   #4  
IDLER_imported is offline
IDLER_imported
Участник
 
3 / 10 (1) +
Регистрация: 30.07.2006
Цитата:
сфронт, насколько я знаю, не умеет создавать/модифицировать объекты, а так же исполнять код.
То есть?! А как же, например, функция (cfront.dll) "DBL_CreateTable" или "DBL_AddTableField"?!

И зачем он, в таком случае, вообще нужен? В конце концов, к нему прилагается сёвый пример, который подключается к базе (заметьте, открытой в Наве) и создаёт в ней таблицу!
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 00:27.