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

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
novichok
Постоянный гость
Сообщения: 79
Зарегистрирован: 10 апр 2013, 09:24

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

Сообщение 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);
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

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

Сообщение m0p3e »

novichok
Постоянный гость
Сообщения: 79
Зарегистрирован: 10 апр 2013, 09:24

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

Сообщение 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
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

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

Сообщение edward_K »

ну 311 обычно что нет данных . А 30004 описана в vipprogr.chm - Ошибка компиляции запроса DSQL. Смотрите ms70drv.log - там обычно идет сообщение в какой строке ошиблись.
А так вы попытались исполнить запрос из атлантиса на сервере, а там синтаксис то уже стандартный - никаких (()) и ==. Читайте доку по MSSQL. Поля указываете, как в атлантисе - преобразованием займется драйвер.
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

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

Сообщение RAJAH »

Я не понял: какие == и /==? Это ж D-SQL! inner или left join должны быть!
spark
Местный житель
Сообщения: 478
Зарегистрирован: 19 окт 2005, 13:38
Контактная информация:

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

Сообщение 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 нужного документа.
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

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

Сообщение Masygreen »

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

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

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

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

sql select dogovor.nrec from dogovor;
приводите свой запрос в выполнимый в саппорте с предикатом sql для начала
Время ведет!
spark
Местный житель
Сообщения: 478
Зарегистрирован: 19 окт 2005, 13:38
Контактная информация:

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

Сообщение spark »

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

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

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

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

sql select dogovor.nrec from dogovor;
приводите свой запрос в выполнимый в саппорте с предикатом sql для начала
А почему бы потом его с этим предикатом и не оставить?
novichok
Постоянный гость
Сообщения: 79
Зарегистрирован: 10 апр 2013, 09:24

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

Сообщение novichok »

спасибо всем за помощь ! :smile:
Ответить