DSQL времянки в запросах, не переносится string

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

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

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

DSQL времянки в запросах, не переносится string

Сообщение Masygreen »

Задача пусть будет такая: выбираем интерфейсом группы ТМЦ (и сохраняем их в tmGrMC), потом строим выборку из ТМЦ входящих в эту группу (задача другая но для ситуацию описывает)
в итоге сделать это мы можем типа

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

select katmc.name
from katmc 
where katmc.cgroupmc in (select nrec from tmGrMC)
1) вопрос простой, tmGrMC мне нужно не только nrec, но и name. чего делаю
создал времянку

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

          sqlFreeStr(hStr);
          sqlAddStr(hStr, ' table tmGMC ');
          sqlAddStr(hStr, ' (                         ');
          sqlAddStr(hStr, '   cGroupMC : comp,        ');
          sqlAddStr(hStr, '   kGroupMC : string,  ');
          sqlAddStr(hStr, '   sGroupMC : string  ');
          sqlAddStr(hStr, ' )                         ');
          sqlAddStr(hStr, ' with index                ');
          sqlAddStr(hStr, ' (                         ');
          sqlAddStr(hStr, '   idx1 = cGroupMC         ');
          sqlAddStr(hStr, ' );                        ');

          sqlDropTmpTable('tmGMC');
          sql_result := sqlCreateTmpTable(hStr, ctmNormal);
          sqlFreeStr(hStr);
запихиваю туда группы

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

   _loop groupmc
            sqlExecDirect('INSERT INTO tmGMC (cGroupMC,sGroupMC) VALUES (' + ' #comp(' + string(groupmc.nrec) + '),'+string(groupmc.name)+')');
   
запрос ни чего не вставить если пытаться вставить groupmc.name, если допустим вместо него вставлять groupmc.kod - все норм... какая-то проблема с длинными строками чтоле?
пробовал sustr, тоже не помогает
пробовал явно указывать размер sqlAddStr(hStr, ' sGroupMC : string[240] ');
Время ведет!
Irina_
Местный житель
Сообщения: 554
Зарегистрирован: 17 июл 2012, 11:56
Откуда: Республика Беларусь, г.Могилев

Re: DSQL времянки в запросах, не переносится string

Сообщение Irina_ »

Здравствуйте. С DSQL работала очень мало. Возможно я не права, но может проблема в том, что Вы определили таблицу на 3 поля, а вставку делаете только 2 полей, причем только 1-го и 3-го, пропустив 2-ое.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: DSQL времянки в запросах, не переносится string

Сообщение edward_K »

'+string(groupmc.name)+' - неправильно.
у вас в итоговой строке должно получиться наименование в кавычках - можете хоть по Ctr+f4 баловаться.
'+chr(39)+groupmc.name+chr(39)+'
либо ...'''+groupmc.name+'''... - по 3 кавычки. chr(39) мне наглядней. Про остальное я молчу - немножко синтаксису атлантиса не соответствует. Да и времянку можно было набить одним запросом, и если она вам не нужна на SQL , то не зачем ее там создавать - sqlFetchInto есть.
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: DSQL времянки в запросах, не переносится string

Сообщение Masygreen »

edward_K писал(а):'+string(groupmc.name)+' - неправильно.
у вас в итоговой строке должно получиться наименование в кавычках - можете хоть по Ctr+f4 баловаться.
'+chr(39)+groupmc.name+chr(39)+'
либо ...'''+groupmc.name+'''... - по 3 кавычки. chr(39) мне наглядней. Про остальное я молчу - немножко синтаксису атлантиса не соответствует. Да и времянку можно было набить одним запросом, и если она вам не нужна на SQL , то не зачем ее там создавать - sqlFetchInto есть.
точно .. .кавычижеж... О_о
вообще по хорошему мне нужна времянка которую я бы мог и в прямом SQL в запросе использовать и снаружи _loop по ней делать .. не понял совершенно есть такая возможность или нет ...
Время ведет!
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: DSQL времянки в запросах, не переносится string

Сообщение Den »

Masygreen писал(а):вообще по хорошему мне нужна времянка которую я бы мог и в прямом SQL в запросе использовать и снаружи _loop по ней делать .. не понял совершенно есть такая возможность или нет ...
Одну временную структуру и в VIP и в DSQL нет. Объект Атлантиса - это объект Атланстиса(т.е. _loop только по table struct можно делать) и сервер БД об нем ничего не знает, кнч.
Поэтому и приходиться объявлять нужные временны таблицы в DSQl на стороне сервака, когда оно того требует.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: DSQL времянки в запросах, не переносится string

Сообщение edward_K »

обратное тоже справедливо - времянку с сервака нельзя использовать внутри кода - только в запросах на DSQL. Поэтому на стороне сервака таблы создаем когда это ну очень нужно - например для отборов по множественному выбору, а так SQLFetch - смотрите в VipProgr.Chm функции по работе с DSQL , а то у вас полная каша получается. Смысла набивать построчно времянку на DSQL совершенно нет - быстродействия эт вам не добавит - insert into ... Set и все .
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: DSQL времянки в запросах, не переносится string

Сообщение Masygreen »

edward_K писал(а):обратное тоже справедливо - времянку с сервака нельзя использовать внутри кода - только в запросах на DSQL. Поэтому на стороне сервака таблы создаем когда это ну очень нужно - например для отборов по множественному выбору, а так SQLFetch - смотрите в VipProgr.Chm функции по работе с DSQL , а то у вас полная каша получается. Смысла набивать построчно времянку на DSQL совершенно нет - быстродействия эт вам не добавит - insert into ... Set и все .
да я из-за кавычек пробовал такой путь, с nrec там и sqlFetchInto проходило ) спасибо. просто думал не работает функционал ..
Время ведет!
Ответить