Re: Прямой SQL
Добавлено: 15 сен 2010, 16:53
Нет, это не очень хорошее решение .Мне кажется проблема кроется в схемах. Пробовал katmc - всё нормально отрабатывает... Вот как обойти эти схемы?
Обсуждение различных вопросов, связанных с сопровождением, администрированием и программированием
https://ns1.tyumbit.ru/
Код: Выделить всё
stmt := sqlAllocStmt;
sqlExecStmt(stmt, 'SELECT id,name, mckod, ed,ware, month_plan, plan_from_month_begin, fact_from_month_begin, difference from gal810.pp_tmp_table');
Message('Код sqlExecStmt: ' + string(sqlErrorCode(stmt)));
sqlFetchInto(stmt, #plans);
sqlFreeStmt(stmt);
Код: Выделить всё
create or replace
PROCEDURE "biblises.s$map"
AS
myvar int;
BEGIN
SELECT id,name, mckod, ed,ware, month_plan, plan_from_month_begin, fact_from_month_begin, difference from biblises.pp_tmp_table;
END;
Код: Выделить всё
sqlExecStmt(stmt,'map');
Message('Код sqlExecStmt: ' + string(sqlErrorCode(stmt)));
var mt : longInt;
sqlFetchIntoMT(stmt, mt);
//----- обработка созданной таблицы
var rec : array[1..1] of variant;
if (sqlNavigateMT(mt, ffGetFirst, rec) = tsOk)
do
{
var i : integer;
var s : string;
s := '';
for (i:=1; i<=Count(rec); i:=i+1)
s := s + ' ' + string(rec[i]);
Message(s);
// message(mt.name);
}
while (sqlNavigateMT( mt, ffGetNext, rec ) = tsOk);
sqlFreeStmt(stmt)
sqlFreeMT(mt)
Где то на форумах такое кто то писал что с таким префиксом должна процедура обзываться..или в доке ..не помню сейчас, блин (BlazeBio писал(а): И что за (s$*)? Почему пишется testorg при вызове, а не dbo.S$testorg?
Код: Выделить всё
SQLAddStr(strHandle, 'select cmc, cpodr, cparty, dsaldo, kol FROM (SELECT max(dSaldo) over (PARTITION BY cmc, cpodr, cparty) max_dsaldo, cmc, cpodr, cparty, dsaldo, kol')
SQLAddStr(strHandle, 'FROM SaldoMc where cpodr in (SELECT ttt.nrec FROM ttt) cParty <> comp(0)and dsaldo < ?) where max_dsaldo = dsaldo and kol > 0 order by cmc, cpodr')
Код: Выделить всё
table struct ChooseSklad
(
NREC : comp
)
With index (ind01=nrec);
Код: Выделить всё
create view ttt as select nrec from ChooseSklad;
Код: Выделить всё
SELECT Pick.cRec FROM Pick WHERE Pick.wList = 1
Код: Выделить всё
Parameters parDateB,
parDateE,
parWhat,
parDelit,
parStroka,
parWhat2;
Screen Real;
Fields
parDateB : NoProtect;
parDateE : NoProtect;
parWhat : NoProtect;
parWhat1 : NoProtect;
parWhat2 : [ list '0', '1', '2', '3'], NoProtect;
Buttons
cmOK,default; cmCancel;
<<
Дата начала .@@@@@@@@@
Дата окончания .@@@@@@@@@
(.) Суммы отгрузок` (.) млн.руб.`
(.) Суммы оплат ` (.) тыс.руб.`
Знаков после запятой .@@@@@
<. OK .> <. Отмена .>
>>
End;
datastream TestStream
(
table FRTable
(
[Name] KatName;
[Summa] Summa;
);
)
end;
handleEvent
!cmInit: {}
cmOK:{
Message(parDateB);
var stmt : longInt;
stmt := sqlAllocStmt;
sqlBindCol(stmt, 1, KatName);
sqlBindCol(stmt, 2, Summa);
sqlExecStmt(stmt, 'SELECT Name, SUM(Summa) FROM (SELECT Katorg.Name AS Name, Katsopr.Summa AS Summa FROM Katsopr INNER JOIN Katorg ON Katsopr.Corg = Katorg.Nrec WHERE Katsopr.Dopr BETWEEN ДАТА1 and ДАТА2 ) AS NN GROUP BY Name ORDER BY Name');
sqlFetchInto(stmt, tnFRTable);
RunFReport(TestStream, '', true);
Код: Выделить всё
sqlBindParam(stmt, 1, date(01,01,2011));
Код: Выделить всё
sqlAddStr(stmt_str,'where ? <> katsopr.dto');
Код: Выделить всё
var stmt,str_handle: longint;
stmt := sqlAllocStmt;
sqlBindParam(stmt, 1, 'user'); //параметр №1
sqlBindParam(stmt, 2, 5599);
sqlAddStr(str_handle, 'select UserDeskRep.ownname ');
sqlAddStr(str_handle, 'from ');
sqlAddStr(str_handle, 'UserDeskRep ');
sqlAddStr(str_handle, 'where ');
sqlAddStr(str_handle, ' ? = UserDeskRep.ownname ');
sqlAddStr(str_handle, ' and ? = UserDeskRep.nrep ');
sqlPrepare(stmt, str_handle);
sqlExecute(stmt);
sqlFetchInto(stmt, #tmp);
Код: Выделить всё
sqlAddStr(str_handle, '''user'' = UserDeskRep.ownname ');