Код: Выделить всё
Dummy{PROP:SQL} = 'Create table...'
IF ErrorCode()
Message('Ошибка ....')
END
Кто знает решение или видит ошибку в данном коде, откликнитесь.
Спасибо за внимание
Модератор: Дед Пахом
Код: Выделить всё
Dummy{PROP:SQL} = 'Create table...'
IF ErrorCode()
Message('Ошибка ....')
END
Фиктивная таблица в DCT
Код: Выделить всё
Fstr FILE,DRIVER('ODBC'),OWNER(fil:owner),NAME(fil:fstr),PRE(Fstr),CREATE,BINDABLE,THREAD ! Фиктивная таблица
Record RECORD,PRE()
StrValue CSTRING(8000) ! Строка SQL данных
END
END
Код: Выделить всё
! проверка на наличие таблицы на сервере, если ее нет - создаем
LoadQueueFromSQL('SELECT COUNT(*) FROM information_schema.columns where TABLE_SCHEMA = "'& |
Fil:dbase & '" and TABLE_NAME = "barcodes"',,field#)
IF NOT field#
Fstr{PROP:SQL} = 'CREATE TABLE `barcodes` ('&|
'`PROD_ID` int(11) NOT NULL,'&|
'`CUST_ID` int(11) NOT NULL,'&|
'`BARCODE` varchar(127) NOT NULL,'&|
'`PRINTED` tinyint(4) DEFAULT NULL,'&|
'`PRINTCOUNT` int(11) DEFAULT NULL,'&|
'`FDELETE` tinyint(4) DEFAULT NULL,'&|
'PRIMARY KEY (`PROD_ID`,`CUST_ID`),'&|
'UNIQUE KEY `BAR_BARCODEKEY` (`BARCODE`)'&|
') ENGINE=InnoDB DEFAULT CHARSET=cp1251;'
IF ERRORCODE() THEN Message('Ошибка создания - barcodes!'); l_error = 1; EXIT; END
Fstr{PROP:SQL} = 'CREATE TRIGGER `barcodes_add` AFTER INSERT ON `barcodes` FOR EACH ROW BEGIN INSERT INTO barcodes_log (LOG_ID,LOG_USER,LOG_STATUS,PROD_ID,CUST_ID,BARCODE,FDELETE) VALUES (NULL,0,1,NEW.PROD_ID,NEW.CUST_ID,NEW.BARCODE,NEW.FDELETE); END;'
Fstr{PROP:SQL} = 'CREATE TRIGGER `barcodes_upd` AFTER UPDATE ON `barcodes` FOR EACH ROW BEGIN INSERT INTO barcodes_log (LOG_ID,LOG_USER,LOG_STATUS,PROD_ID,CUST_ID,BARCODE,FDELETE) VALUES (NULL,0,2,NEW.PROD_ID,NEW.CUST_ID,NEW.BARCODE,NEW.FDELETE);END;'
Fstr{PROP:SQL} = 'CREATE TRIGGER `barcodes_del` AFTER DELETE ON `barcodes` FOR EACH ROW BEGIN INSERT INTO barcodes_log (LOG_ID,LOG_USER,LOG_STATUS,PROD_ID,CUST_ID,BARCODE,FDELETE) VALUES (NULL,0,3,OLD.PROD_ID,OLD.CUST_ID,OLD.BARCODE,OLD.FDELETE);END;'
END
Вроде всегда работает, вот для вывода ошибок, да нужно это - FILEERRORCODE() и FILEERROR()
Open() - есть, /TURBOSQL - для Mysql нужно?ingasoftplus писал(а): ↑05 Май 2021, 21:45 да что гадать - может он таблицу не Open() даже. Может это не Dummy таблица, а физическая. Может /TURBOSQL не прописан....
ErrorCode() сообщает код, а FILEERRORCODE() и FILEERROR() конкретизирует
Код: Выделить всё
Fstr{PROP:SQL} = 'CREATE TABLE barcodes ('&|
'PROD_ID int(11) NOT NULL,'&|
'CUST_ID int(11) NOT NULL,'&|
'BARCODE varchar(127) NOT NULL,'&|
'PRINTED tinyint(4) DEFAULT NULL,'&| etc.