Почему не зупускается sql-скрипт?
Lidiya; 27.3.03

Беру пример:

*********************************
char ExportArchive[256];
char* path="E:\\SIEMENS\\Common\\sqlany\\isql.exe -q -b -c";
char* parameters="UID=DBA;PWD=SQL;DBF=E:\\Projects\\WinCC\\Demo\\Demo.db";
char* action="read E:\\Projects\\WinCC\\Demo\\SQL\\archiv.sql";

sprintf(ExportArchive,"%s %s %s",path,parameters,action);
ProgramExecute(ExportArchive);
*********************************
содержимое archiv.sql:
SELECT * FROM "DBA"."MCPTVARIABLEDESC";
OUTPUT TO E:\Projects\WinCC\Demo\archive.txt FORMAT ASCII
*********************************
В Runtime при запуске скрипта выдается сообщение: "Specified database not found".Почему?

Re: Почему не зупускается sql-скрипт?
Александр Родин, ООО "Нева Электрик"; 28.3.03

Потому что надо

1. указывать не Demo.DB, а DemoRT.DB;
2. лучше указывать не файловый доступ, а доступ через DSN, т.е. писать не "DBF=", а "DSN=".

Имя DSN можно посмотреть в настройках ODBC в виндах.

ну и замечание по написанию скриптов: таким способом строки лучше всего не делать...
лучше делать так:

char* path, parameters, action;
path = (char*) SysMalloc (256);
parameters = (char*) SysMalloc (256);
//... и т.д.
sprintf (path, "<ваша строка>\0");
// и т.д.

так есть больше уверенности, что в этих строчках не будет никакого мусора.
Re: Почему не зупускается sql-скрипт?
Lidiya; 28.3.03

А можно таким же способом запускать sql-скрипт, и указывать DSN любой другой БД, прописанной в ODBC?

Re: Почему не зупускается sql-скрипт?
Чистяков Дмитрий "СеверСталь"; 28.3.03

Можно. Если конечно имеется её драйвер.

Re: Почему не зупускается sql-скрипт?
Александр Шестаков; 27.4.03

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

2. Таблица которая приведена в примере (описание тегов) находится в конфигурационной базе данных, а не в базе данных RunTime.
3. Что касается указания DSN, вместо имени файла, то полностью с этим согласен. Для автоматического получения DSN для текущего проекта можно использовать функции работы с базами данных из ODK (рекомендую).

Re: Почему не зупускается sql-скрипт?
Lidiya; 14.5.03

Заменила в строке "DBF=" на "DSN=", DSN скопировала из ODBC. Все равно выдает ошибку "Specified database not found". Почему? непонятно...


Подскажите пожалуйста, какая функция ODK позволяет автоматически получать DSN?