Re: Прямой SQL
Добавлено: 14 фев 2016, 13:26
				
				в версии Atlantis 5.5.24 реализована поддержка Dual.insert into pick(wlist, crec)
select 1, #comp(1) from DUAL
union all select 1, #comp(2) from DUAL
union all select 1, #comp(23) from DUAL;

Обсуждение различных вопросов, связанных с сопровождением, администрированием и программированием
https://gw.tyumbit.ru/
в версии Atlantis 5.5.24 реализована поддержка Dual.insert into pick(wlist, crec)
select 1, #comp(1) from DUAL
union all select 1, #comp(2) from DUAL
union all select 1, #comp(23) from DUAL;

Код: Выделить всё
dbo.toatldate(convert(datetime, substring(t$katparty.f$name, 1, 10), 103))
Код: Выделить всё
#date(cast(substring(katparty.name, 1, 2) as word), ...
Для сравнения, вестимо.edward_K писал(а):зачем преобразовывать в дату?
Ошибка преобразования значения varchar "01/10/2006" в тип данных intedward_K писал(а):попробовать Cast сразу в date
Вот это хорошая идея!edward_K писал(а):дату привести в строку с маской YYYYMMDD и сравнивать
Код: Выделить всё
var dbeg, dend: date;
...  
SQLAddStr(strHandle, ' where basedoc.ddoc >= ? and basedoc.ddoc <= ?');
  sqlPrepare(stmt, strHandle);
  sqlBindParam(stmt, 1, dbeg);
  sqlBindParam(stmt, 2, dend);Код: Выделить всё
         stmt := sqlAllocStmt;
         sqlDropTmpTable('tbOracleData');
         sqlAddStr(StmtString, 'table tbOracleData');
	 sqlAddStr(StmtString, '(');
	 sqlAddStr(StmtString, ' tNsap: String,');
	 sqlAddStr(StmtString, ' tviddv: String,');
	 sqlAddStr(StmtString, ' tzavod: string,');
	 sqlAddStr(StmtString, ' tsklad: String,');
	 sqlAddStr(StmtString, ' tparty: String,');
	 sqlAddStr(StmtString, ' tKsap: String,');
	 sqlAddStr(StmtString, ' tbarkod: String,');
	 sqlAddStr(StmtString, ' td56: String,');
	 sqlAddStr(StmtString, ' ted: String,');
	 sqlAddStr(StmtString, ' tkol: double');
	 sqlAddStr(StmtString, ');');
	 sqlCreateTmpTable(StmtString, ctmDynamicIndex);
	 sqlFreeStmt(stmt);
Код: Выделить всё
                    Message(TVMain.tmain.tNsap+' '+TVMain.tmain.tviddv+' '+TVMain.tmain.tzavod,0); // данные есть
         stmt := sqlAllocStmt;
         sqlAddStr(StmtString, 'INSERT INTO tbOracleData');
         sqlAddStr(StmtString, '(');
         sqlAddStr(StmtString, '  tNsap, tviddv, tzavod, tsklad, tparty, tksap, tbarkod, td56, ted, tkol');
         sqlAddStr(StmtString, ')');
         sqlAddStr(StmtString, 'VALUES');
         sqlAddStr(StmtString, '(');
         sqlAddStr(StmtString, ''''+ TVMain.tmain.tNsap + ''',');
         sqlAddStr(StmtString, ''''+ TVMain.tmain.tviddv + ''',');
         sqlAddStr(StmtString, ''''+ TVMain.tmain.tzavod + ''',');
         sqlAddStr(StmtString, ''''+ TVMain.tmain.tsklad + ''',');
         sqlAddStr(StmtString, ''''+ TVMain.tmain.tparty + ''',');
         sqlAddStr(StmtString, ''''+ TVMain.tmain.tksap+ ''',');
         sqlAddStr(StmtString, ''''+ TVMain.tmain.tbarkod+ ''',');
         sqlAddStr(StmtString, ''''+ TVMain.tmain.td56+ ''',');
         sqlAddStr(StmtString, ''''+ TVMain.tmain.ted+ ''',');
         sqlAddStr(StmtString, ''''+ TVMain.tmain.tkol+ '''');
         sqlAddStr(StmtString, ')');
            sqlPrepare ( stmt, StmtString );   // текущий вариант
         Message( sqlExecute ( stmt ),0);    // возвращает 0
//         sqlExecDirect(StmtString);  пробовал и так
         sqlFreeStmt(stmt);
RAJAH писал(а):Как на DSQL написать конструкцию типа?Код: Выделить всё
dbo.toatldate(convert(datetime, substring(t$katparty.f$name, 1, 10), 103))
Функцияругается на cast: "Ожидалось целое число".Код: Выделить всё
#date(cast(substring(katparty.name, 1, 2) as word), ...
Код: Выделить всё
sql
 select name
          from KATPARTY
       inner join
        (
          select dsopr from katsopr where nsopr='11441122'  // накладнуха такая именно от 14/10/2010 выписана , если перебить дату накладной например 15/10/2010 то в результат ничего не вернеться
        )t1 on Cast(Substring(KATPARTY.name,1,2) as integer)+Cast(Substring(KATPARTY.name,4,2) as integer)*256+Cast(Substring(KATPARTY.name,7,4) as integer)*65536=t1.dsopr
     where name='14/10/2010qwerty'
;
Rajan, не совсем понял мысль...RAJAH писал(а):savov
Похоже, дело вот в этих последовательностях: ''''
Код: Выделить всё
         sqlAddStr(StmtString, 'INSERT INTO tblSalesNotaAuk');
         sqlAddStr(StmtString, '(');
         sqlAddStr(StmtString, '  knrec, datob, name, summa, NSklad, invero, country, rpl, vozvrat');
         sqlAddStr(StmtString, ')');
         sqlAddStr(StmtString, 'VALUES');
         sqlAddStr(StmtString, '(');
         sqlAddStr(StmtString, ''''+ String(tblSalesNotaAuk.knrec) + ''',');
         sqlAddStr(StmtString, ''''+ GetDateAsPascalLongint(tblSalesNotaAuk.datob) + ''',');
         sqlAddStr(StmtString, ''''+ tblSalesNotaAuk.name + ''',');
         sqlAddStr(StmtString, ''''+ tblSalesNotaAuk.sum + ''',');
         sqlAddStr(StmtString, ''''+ String(tblSalesNotaAuk.nSklad) + ''',');
         sqlAddStr(StmtString, ''''+ tblSalesNotaAuk.invero + ''',');
         sqlAddStr(StmtString, ''''+ tblSalesNotaAuk.country + ''',');
         sqlAddStr(StmtString, ''''+ tblSalesNotaAuk.rpl + ''',');
         sqlAddStr(StmtString, ''''+ tblSalesNotaAuk.vozvrat + '''');
         sqlAddStr(StmtString, ')');