Страница 1 из 1

обрезается запрос

Добавлено: 15 апр 2013, 13:28
novichok
Люди, помогите !
Мой запрос почему-то обрезается !
Если это из-за того, что переменная string только 255 символов, то что делать ? :-(

query:='select katos.innum,katos.nameos,spkatos.stoim,spkatos.sumizn,spkatos.stoim-spkatos.sumizn,'
+'attrval.vstring,dogovor.ddoc '
+'from katos,spkatos,prsb,attrval,attrnam,dogovor '
+'where (( root == spkatos.nrec and (spkatos.cnastros=3) '
+'and spkatos.ckatos/==katos.nrec and katos.cprsb/==prsb.nrec and ((prsb.kod=2) or (prsb.kod=6)) '
+'and katos.nrec/==attrval.crec(noindex) '
+'and attrval.cattrnam/==attrnam.nrec and (attrnam.name=''Договор залога'') '
+'and attrval.vstring/==dogovor.nodoc_ext(noindex) and (dogovor.viddog=107))) '
+'order external by attrval.vstring,dogovor.ddoc';
message(query);
sqlExecStmt(stmt, query);

Re: обрезается запрос

Добавлено: 15 апр 2013, 13:55
m0p3e

Re: обрезается запрос

Добавлено: 15 апр 2013, 15:55
novichok
пробую сделать так:

stmt := sqlAllocStmt;
sqlBindCol(stmt, 1, kol1);
sqlBindCol(stmt, 2, kol2);
sqlBindCol(stmt, 3, kol3);
sqlBindCol(stmt, 4, kol4);
sqlBindCol(stmt, 5, kol5);
sqlBindCol(stmt, 4, kol6);
sqlBindCol(stmt, 5, kol7);
sqlAddStr(query,'select katos.innum,katos.nameos,spkatos.stoim,spkatos.sumizn,spkatos.stoim-spkatos.sumizn,attrval.vstring,dogovor.ddoc ');
sqlAddStr(query,'from katos,spkatos,prsb,attrval,attrnam,dogovor ');
sqlAddStr(query,'where (( root == spkatos.nrec and (spkatos.cnastros=3) ');
sqlAddStr(query,'and spkatos.ckatos/==katos.nrec and katos.cprsb/==prsb.nrec and ((prsb.kod=2) or (prsb.kod=6)) ');
sqlAddStr(query,'and katos.nrec/==attrval.crec(noindex) and attrval.cattrnam/==attrnam.nrec and (attrnam.name='#39+'Договор залога'#39+') ');
sqlAddStr(query,'and attrval.vstring/==dogovor.nodoc_ext(noindex) and (dogovor.viddog=107))) ');
//sqlAddStr(query,'order external by attrval.vstring,dogovor.ddoc');
k_osh:=sqlPrepare(stmt,query); message(k_osh);
k_osh:=sqlExecute(stmt); message(k_osh);

сначала ошибка 30004
потом ошибка 311

Re: обрезается запрос

Добавлено: 15 апр 2013, 16:01
edward_K
ну 311 обычно что нет данных . А 30004 описана в vipprogr.chm - Ошибка компиляции запроса DSQL. Смотрите ms70drv.log - там обычно идет сообщение в какой строке ошиблись.
А так вы попытались исполнить запрос из атлантиса на сервере, а там синтаксис то уже стандартный - никаких (()) и ==. Читайте доку по MSSQL. Поля указываете, как в атлантисе - преобразованием займется драйвер.

Re: обрезается запрос

Добавлено: 15 апр 2013, 16:04
RAJAH
Я не понял: какие == и /==? Это ж D-SQL! inner или left join должны быть!

Re: обрезается запрос

Добавлено: 15 апр 2013, 16:06
spark
novichok писал(а):Люди, помогите !
Мой запрос почему-то обрезается !
Если это из-за того, что переменная string только 255 символов, то что делать ? :-(

query:='select katos.innum,katos.nameos,spkatos.stoim,spkatos.sumizn,spkatos.stoim-spkatos.sumizn,'
+'attrval.vstring,dogovor.ddoc '
+'from katos,spkatos,prsb,attrval,attrnam,dogovor '
+'where (( root == spkatos.nrec and (spkatos.cnastros=3) '
+'and spkatos.ckatos/==katos.nrec and katos.cprsb/==prsb.nrec and ((prsb.kod=2) or (prsb.kod=6)) '
+'and katos.nrec/==attrval.crec(noindex) '
+'and attrval.cattrnam/==attrnam.nrec and (attrnam.name=''Договор залога'') '
+'and attrval.vstring/==dogovor.nodoc_ext(noindex) and (dogovor.viddog=107))) '
+'order external by attrval.vstring,dogovor.ddoc';
message(query);
sqlExecStmt(stmt, query);
Я обычно DSQL вот так делаю:

SQL select
katsopr.NREC
from
KATSOPR
join spsopr on spsopr.csopr=katsopr.nrec
join SPSOPR as spsoprmain on spsoprmain.NREC=spsopr.CSPSOPR
join KATSOPR as katsoprmain on katsoprmain.NREC=spsoprmain.CSOPR
where katsopr.vidsopr=106 and katsopr.tipsopr=1 and katsoprmain.NREC = :crec into tmpVoz;

где crec - это переменная, в которой лежит nrec нужного документа.

Re: обрезается запрос

Добавлено: 16 апр 2013, 10:49
Masygreen
RAJAH писал(а):Я не понял: какие == и /==? Это ж D-SQL! inner или left join должны быть!
если вы используете

Код: Выделить всё

sqlAddStr(query, ..
то ваш запрос должен выполнятся в спаппорте с предикатом SQL т.е. пишите в саппорте и оно работает и в саппорте и в sqlAddStr

Код: Выделить всё

sql select dogovor.nrec from dogovor;
приводите свой запрос в выполнимый в саппорте с предикатом sql для начала

Re: обрезается запрос

Добавлено: 16 апр 2013, 14:59
spark
Masygreen писал(а):
RAJAH писал(а):Я не понял: какие == и /==? Это ж D-SQL! inner или left join должны быть!
если вы используете

Код: Выделить всё

sqlAddStr(query, ..
то ваш запрос должен выполнятся в спаппорте с предикатом SQL т.е. пишите в саппорте и оно работает и в саппорте и в sqlAddStr

Код: Выделить всё

sql select dogovor.nrec from dogovor;
приводите свой запрос в выполнимый в саппорте с предикатом sql для начала
А почему бы потом его с этим предикатом и не оставить?

Re: обрезается запрос

Добавлено: 16 апр 2013, 16:35
novichok
спасибо всем за помощь ! :smile: