Страница 1 из 2
Clarion и Firebird
Добавлено: 23 Апрель 2012, 0:20
George
Помогите начинающему.
Clarion 8.0.8973
Firebird через ODBC.
Надо добавлять в цикле записи.
Если это делать при помощи ADD(file), получается очень долго.
Конструкция типа file{PROP:SQL} = 'INSERT INTO file VALUES (field1,field2)' выдает ошибку 'File System Error'.
Re: Clarion и Firebird
Добавлено: 23 Апрель 2012, 4:30
BOB
'INSERT INTO file VALUES (field1,field2)'
'INSERT INTO file (field1,field2) VALUES (value,value)'
Re: Clarion и Firebird
Добавлено: 23 Апрель 2012, 10:13
George
Не прооходит.
Re: Clarion и Firebird
Добавлено: 23 Апрель 2012, 10:25
Дед Пахом
Проверьте, что возвращает FILEERROR(). Да и неплохо бы сделать SETCLIPBOARD(file{PROP:SQL}) и выполнить скрипт непосредственно в какой-нибудь среде для FIREBIRD (я использую IBExpert, DbWorkbench, Firebird Maestro) для проверки корректности кода.
Re: Clarion и Firebird
Добавлено: 23 Апрель 2012, 10:54
BOB
Не прооходит.
Стринговые значения и даты (для mssql) должны быть в кавычках . Лучше бы привели реальный код .
Re: Clarion и Firebird
Добавлено: 24 Апрель 2012, 0:50
George
Спасибо всем за помощь. Вроде все получилось.
Команда INSERT заработала.
Однако это не решило главной проблемы - время загрузки данных не только не уменьшилось, а наоборот увеличилось.
В чем может быть дело ?
Re: Clarion и Firebird
Добавлено: 24 Апрель 2012, 5:26
BOB
Вы же пишете
Firebird через ODBC
ну так и пользуйте ODBC api .
У ODBC api свои команды и своя скорость . Найдите файл ODBC.INC и подключите odbcx.lib.
Re: Clarion и Firebird
Добавлено: 24 Апрель 2012, 10:31
George
А можно пример (если не трудно) !
Re: Clarion и Firebird
Добавлено: 24 Апрель 2012, 12:57
George
Конструкция типа SQLPrepare(hstmt#,'INSERT INTO osmena ...',cbSqlStr#) дает ощибку "No matching prototype available", указывая на первую скобку.
В чем может быть дело ?
Re: Clarion и Firebird
Добавлено: 24 Апрель 2012, 13:57
BOB
Я уже пару лет не работаю с win , могу приблизительно .
Код: Выделить всё
aaaa procedure()
hdbc LONG
HSTMT LONG
OutStr cstring(255)
code
hdbc = file{PROP:HDBC} !у открытого файла берем hdbc
a# = SQLAllocStmt(hdbc, hstmt) !делаем hstmt
a# = SQLFreeStmt(hstmt, SQL_CLOSE) ! SQL_CLOSE и тд описано в odbc_equ.inc надо подключить
a# = SQLFreeStmt(hstmt, SQL_RESET_PARAMS)
OutStr = 'insert into....''
a# = SQLExecDirect(hstmt, OutStr, SQL_NTS) ! выполняем
По моему где-то так , а вообще на форуме есть ветка mav ее ведет специалист по odbc .
Re: Clarion и Firebird
Добавлено: 24 Апрель 2012, 19:53
Дед Пахом
Не туда Вас занесло, не нужен никакой ODBC API (хоть я им и пользуюсь регулярно

).
Если задача состоит в быстром копировании, то надо просто сформировать правильный sql INSERT, который одним махом загрузит всё в БД.
Re: Clarion и Firebird
Добавлено: 26 Апрель 2012, 10:33
George
Дед Пахом писал(а):Не туда Вас занесло, не нужен никакой ODBC API (хоть я им и пользуюсь регулярно

).
Если задача состоит в быстром копировании, то надо просто сформировать правильный sql INSERT, который одним махом загрузит всё в БД.
Дело в том, что исходная таблица TPS ...
Re: Clarion и Firebird
Добавлено: 26 Апрель 2012, 14:47
gromov
Купи у Андрея MAV и будет тебе счастье. Я, как стал его использовать, всякие TPS и DAT забыл, как страшный сон.
Re: Clarion и Firebird
Добавлено: 26 Апрель 2012, 19:27
Дед Пахом
George писал(а):Дело в том, что исходная таблица TPS ...
Какая разница, в каком формате исходные данные? Вам-то нужен INSERT в целевую SQL таблицу, ведь так?
Re: Clarion и Firebird
Добавлено: 26 Апрель 2012, 19:37
George
Какая разница, в каком формате исходные данные? Вам-то нужен INSERT в целевую SQL таблицу, ведь так?
А как это сделать ?