Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Parameter does not exists / 22 сообщений из 22, страница 1 из 1
25.10.2021, 23:27
    #40106885
LMag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter does not exists
Добрый вечер

Не могу понять почему ошибка возникает , вроде все правильно сделано.

Ругается на то что нет параметра в sql запросе, хотя он там присутствует

Ошибка приведена на изображении.

Кусок кода

Работа идет с компонентом FibDataSet

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
      dm_create.ds_covid_sem.Close;
       // dm_create.ds_covid_sem.SQLs.SelectSQL.Clear;
        if LookupForActForm.MCODLookupCombobox.Value<>null then begin

              dm_create.ds_covid_sem.SQLs.SelectSQL.Text:='select distinct u.id_sluch, p.mse, p.inv, u.podr, so.iotd,u.ds_onk,t.data_l,t.npr_mo, t.npr_date, u.p_per,t.nhistory, u.npolis, u.profil_k, p.w, '+
                                                      't.usl_ok, usl.umpname, t.for_pom, t.ishod, t.rslt, u.profil, sp.t_type, '+
                                                      't.date_1, t.date_2, u.ed_col as KD, u.koefk, t.ds0, t.ds1, t.ds2, t.ds3, t.c_zab, '+
                                                      'u.dn, t.c_zab, n.napr_v, t.disp,  u.npolis,  u.lpu, u.lpu_1, sl.m_namef, '+
                                                      't.det, p.fam, p.im, p.ot, p.dr, extract(year from t.date_1)-extract(year from p.dr) as VOZRAST, u.date_in, u.date_out, u.ds, m.name, t.iddokt, '+
                                                      'd.fio, d.spec, u.code_usl, sp.name_issl, t.prvs_s, u.zak, '+
                                                      'iif(u.sumv_usl=0,u.tarif*u.kol_usl,u.sumv_usl) as sumv_usl, '+
                                                      'IIF(sn.id_povod='',''Проверен'', sn.id_povod) as id_povod, '+
                                                      'sn.comment, sn.summa_v, sn.tip_exp, sn.data_exp,sk.sumoms_sht as mek '+
                                                      'from ut05s50'+LookupForActForm.cData+' u '+
                                                      'left join tt05s50'+LookupForActForm.cData+' t on u.id_sluch=t.id_sluch_tt '+
                                                      'left join pt05s50'+LookupForActForm.cData+' p on substring(p.id_sch from 9 for 6)=u.lpu and p.polis=t.id_pac and t.novor=p.novor and p.id_pac_new=t.id_pac_new '+
                                                      'left join sp_tarif sp on sp.ksg=u.code_usl '+
                                                      'left join uslmp usl on usl.idump=t.usl_ok '+
                                                      'left join s_lpu s on s.mcod=u.lpu_1 '+
                                                      'left join mkb m on m.lcod=t.ds1 '+
                                                      'left join stacotd so on so.kotd=u.podr and so.mcod=u.lpu_1 '+
                                                      'left join ( '+
                                                      '    select s.id, s.id_sluch, s.id_exp, s.id_povod, s.comment, s.summa_v, s.summa_m, s.data_exp, s.tip_exp from snk'+LookupForActForm.cData+' s '+
                                                      '     union all '+
                                                      '    select s.id, s.id_sluch, s.id_exp, s.id_povod, s.comment, s.summa_v, s.summa_m, s.data_exp, s.tip_exp from snk_stac'+LookupForActForm.cData+' s '+
                                                      ') sn on sn.id_sluch=u.id_sluch '+
                                                      'left join sankc sk on sk.id_sluch=u.id_sluch and sk."year"='+QuotedStr(LookupForActForm.cbyear.Text)+' and sk.mont='+QuotedStr(LookupForActForm.cbMonth.Text)+' ' +
                                                      'where u.lpu_1=:mcod and t.usl_ok<3 and extract(year from t.date_1)-extract(year from p.dr)>=70 and ((t.ds1 in (''U07.1'',''U07.2'')) or (t.ds2 in (''U07.1'',''U07.2'')) or (t.ds3 in (''U07.1'',''U07.2''))) ';
              Showmessage(IntToStr(dm_create.ds_covid_sem.ParamCount));
              dm_create.ds_covid_sem.ParamByName('mcod').AsString:=dm.ds_slpuMCOD.AsString;
              dm_create.ds_covid_sem.Open;
          end 
...
Рейтинг: 0 / 0
25.10.2021, 23:36
    #40106887
Softologic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter does not exists
LMag, "Модную" болезнь кодите, однако...

По существу: а есть уверенность, что при дебаге "LookupForActForm.MCODLookupCombobox.Value<>null" ? Может там null и, возможно, срабатывает уже SelectSQL.Text, который задан непосредственно в дизайн-тайме. В котором искомого параметра нет (запрос может там хранится устаревший...). Я на что то подобное с фибами нарывался. Проверьте в дизайн-тайме, что у датасета прописано внутри.
...
Рейтинг: 0 / 0
25.10.2021, 23:44
    #40106889
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter does not exists
LMag,

1. вместо '+LookupForActForm.cData+' используйте параметры. Оно надежнее, особенно если у юзера другой формат даты, чем вы предполагали

2. картинки тут с сообщениями не приведствуются, в редких и исключительных случаях. Как правило на почти любом сообщении об ошибке можно нажать Ctrl-C, и ТЕКСТОВОЕ сообщение скопируется. Тем более, что вы даже умудрились окно ошибки скопировать на фоне текста запроса. Это зачем?

3. вместо текста запроса из дельфей надо приводить голый текст запроса, без дельфевого кода. Как и куда вы его там вставляете - мало кому интересно.

4. вот это что - t.ds1 in (''U07.1''. По-моему оно так в дельфях не работает. разве не три одинарных кавычки там должно быть?

5. ни одного двоеточия (сиречь параметра sql) я в вашем тексте поиском не нахожу.
...
Рейтинг: 0 / 0
25.10.2021, 23:47
    #40106891
Softologic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter does not exists
kdv


5. ни одного двоеточия (сиречь параметра sql) я в вашем тексте поиском не нахожу.

Вот, в последней строке этот параметр mcod у него :
Код: pascal
1.
where u.lpu_1=:mcod and t.usl_ok<3 and extract(year from t.date_1)-extract(year from p.dr)>=70 and ((t.ds1 in (''U07.1'',''U07.2'')) or (t.ds2 in (''U07.1'',''U07.2'')) or (t.ds3 in (''U07.1'',''U07.2''))) 
...
Рейтинг: 0 / 0
25.10.2021, 23:47
    #40106892
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter does not exists
LMag,

параметров в запросе нет, при этом написано
dm_create.ds_covid_sem.ParamByName('mcod').AsString:=dm.ds_slpuMCOD.AsString;
зачем эта шлабуда? Вы сами не могли это найти?
В отладке же у вас именно на этой строке идет exception. Или F8 не работает?
...
Рейтинг: 0 / 0
25.10.2021, 23:48
    #40106893
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter does not exists
kdv,

Код: sql
1.
where u.lpu_1=:mcod
...
Рейтинг: 0 / 0
25.10.2021, 23:50
    #40106894
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter does not exists
Softologic,

и правда, ок, был невнимателен. Ну хорошо. В отладке у вас же есть проперть
dm_create.ds_covid_sem.SQLs.SelectSQL.Text
и вы можете ее посмотреть в отладчике ПЕРЕД строкой присвоения значения параметру, и убедиться, что текст SQL верный.
В конце-концов, взять этот текст, и попробовать выполнить в IBExpert. Он же вас попросит ввести значение параметра, если таковой обнаружит в тексте запроса.
Вдруг у вас в конкатенации еще где есть :, и текст запроса корёжится напрочь?
...
Рейтинг: 0 / 0
25.10.2021, 23:54
    #40106898
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter does not exists
Для начала стоит посмотреть на dm_create.ds_covid_sem.SQLs.SelectSQL.Text
...
Рейтинг: 0 / 0
25.10.2021, 23:58
    #40106900
Softologic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter does not exists
hvlad
Для начала стоит посмотреть на dm_create.ds_covid_sem.SQLs.SelectSQL.Text

+1, ну да, я вот про то же. Скорее всего там параметра и нет как раз.
...
Рейтинг: 0 / 0
26.10.2021, 00:02
    #40106901
Polesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter does not exists
LMag
Добрый вечер

Не могу понять почему ошибка возникает , вроде все правильно сделано.

Код: pascal
1.
  'IIF(sn.id_povod='',''Проверен'', sn.id_povod) as id_povod, '+



Привет.

Мне кажется, пустая строка в сравнении должна быть представлена 4-мя одинарными кавычками:
Код: pascal
1.
  'IIF(sn.id_povod='''',''Проверен'', sn.id_povod) as id_povod, '+
...
Рейтинг: 0 / 0
26.10.2021, 00:04
    #40106902
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter does not exists
Polesov,

лично меня это всегда бесило. то-ли три кавычки, то-ли четыре...
...
Рейтинг: 0 / 0
26.10.2021, 00:05
    #40106903
Polesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter does not exists
kdv, акамущаслихко? )
...
Рейтинг: 0 / 0
26.10.2021, 00:22
    #40106906
LMag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter does not exists
Данный sql запрос , выполнял через ibexpert и он отлично выполняется, предлагает ввести значение параметра
...
Рейтинг: 0 / 0
26.10.2021, 00:23
    #40106907
LMag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter does not exists
Softologic
LMag, "Модную" болезнь кодите, однако...

По существу: а есть уверенность, что при дебаге "LookupForActForm.MCODLookupCombobox.Value<>null" ? Может там null и, возможно, срабатывает уже SelectSQL.Text, который задан непосредственно в дизайн-тайме. В котором искомого параметра нет (запрос может там хранится устаревший...). Я на что то подобное с фибами нарывался. Проверьте в дизайн-тайме, что у датасета прописано внутри.


LookupForActForm.MCODLookupCombobox.Value равно определенному значению и он не равен null
...
Рейтинг: 0 / 0
26.10.2021, 00:25
    #40106908
LMag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter does not exists
kdv
LMag,

1. вместо '+LookupForActForm.cData+' используйте параметры. Оно надежнее, особенно если у юзера другой формат даты, чем вы предполагали

2. картинки тут с сообщениями не приведствуются, в редких и исключительных случаях. Как правило на почти любом сообщении об ошибке можно нажать Ctrl-C, и ТЕКСТОВОЕ сообщение скопируется. Тем более, что вы даже умудрились окно ошибки скопировать на фоне текста запроса. Это зачем?

3. вместо текста запроса из дельфей надо приводить голый текст запроса, без дельфевого кода. Как и куда вы его там вставляете - мало кому интересно.

4. вот это что - t.ds1 in (''U07.1''. По-моему оно так в дельфях не работает. разве не три одинарных кавычки там должно быть?

5. ни одного двоеточия (сиречь параметра sql) я в вашем тексте поиском не нахожу.


Вот sql запрос

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
select distinct u.id_sluch, p.mse, p.inv, u.podr, so.iotd,u.ds_onk,t.data_l,t.npr_mo, t.npr_date, u.p_per,t.nhistory, u.npolis, u.profil_k, p.w,
    t.usl_ok, usl.umpname, t.for_pom, t.ishod, t.rslt, u.profil, sp.t_type,
    t.date_1, t.date_2, u.ed_col as KD, u.koefk, t.ds0, t.ds1, t.ds2, t.ds3, t.c_zab,
    u.dn, t.c_zab, n.napr_v, t.disp,  u.npolis,  u.lpu, u.lpu_1, sl.m_namef,
    t.det, p.fam, p.im, p.ot, p.dr, extract(year from t.date_1)-extract(year from p.dr) as VOZRAST, u.date_in, u.date_out, u.ds, m.name, t.iddokt,
    d.fio, d.spec, u.code_usl, sp.name_issl, t.prvs_s, u.zak,
    iif(u.sumv_usl=0,u.tarif*u.kol_usl,u.sumv_usl) as sumv_usl,
    IIF(sn.id_povod='','Проверен', sn.id_povod) as id_povod,
    sn.comment,
    sn.summa_v, sn.tip_exp, sn.data_exp,sk.sumoms_sht as mek
from ut05s50202108 u
left join tt05s50202108 t on u.id_sluch=t.id_sluch_tt
left join pt05s50202108 p on substring(p.id_sch from 9 for 6)=u.lpu and p.polis=t.id_pac and t.novor=p.novor and p.id_pac_new=t.id_pac_new
left join NPR05s50202108 n on n.idserv=u.idserv
left join dt05s50202108 d on d.kod=t.iddokt and d.mcod=u.lpu_1
left join sp_tarif sp on sp.ksg=u.code_usl
left join uslmp usl on usl.idump=t.usl_ok
left join s_lpu sl on sl.mcod=u.lpu_1
left join mkb m on m.lcod=t.ds1
left join stacotd so on so.kotd=u.podr and so.mcod=u.lpu_1
left join (
    select s.id, s.id_sluch, s.id_exp, s.id_povod, s.comment, s.summa_v, s.summa_m, s.data_exp, s.tip_exp from snk202108 s
    union all
    select s.id, s.id_sluch, s.id_exp, s.id_povod, s.comment, s.summa_v, s.summa_m, s.data_exp, s.tip_exp from snk_stac202108 s
) sn on sn.id_sluch=u.id_sluch
left join sankc sk on sk.id_sluch=u.id_sluch and sk."year"='2021' and sk.mont='07'
where u.lpu_1=:glpu and t.usl_ok<3 and extract(year from t.date_1)-extract(year from p.dr)>=70 and ((t.ds1 in ('U07.1','U07.2')) or (t.ds2 in ('U07.1','U07.2')) or (t.ds3 in ('U07.1','U07.2')))
...
Рейтинг: 0 / 0
26.10.2021, 00:25
    #40106909
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter does not exists
LMagДанный sql запрос

В приведённом тексте нет SQL запроса. Только совершенно безумный код его
генерации. Так что не надо ля-ля про "данный запрос".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.10.2021, 00:26
    #40106910
LMag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter does not exists
Вы думаете , это все из за ковычек
...
Рейтинг: 0 / 0
26.10.2021, 00:27
    #40106911
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter does not exists
LMagВот sql запрос

А теперь сравниваем по буквам "glpu" и "mcod". Видишь между ними что-то общее?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.10.2021, 00:42
    #40106912
LMag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter does not exists
Спасибо Всем, разобрался в запросе
...
Рейтинг: 0 / 0
26.10.2021, 00:43
    #40106913
LMag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter does not exists
Можно закрыть
...
Рейтинг: 0 / 0
26.10.2021, 00:45
    #40106914
Softologic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter does not exists
LMag,
кусок из запроса в первом посте:
Код: pascal
1.
2.
3.
4.
where u.lpu_1=:mcod and t.usl_ok<3 and extract(year from t.date_1)-extract(year from p.dr)>=70 and ((t.ds1 in (''U07.1'',''U07.2'')) or (t.ds2 in (''U07.1'',''U07.2'')) or (t.ds3 in (''U07.1'',''U07.2'')))

кусок из запроса из недавнего:
where u.lpu_1=:glpu and t.usl_ok<3 and extract(year from t.date_1)-extract(year from p.dr)>=70 and ((t.ds1 in ('U07.1','U07.2')) or (t.ds2 in ('U07.1','U07.2')) or (t.ds3 in ('U07.1','U07.2')))



Упс, уже все закончилось благополучно :)
...
Рейтинг: 0 / 0
26.10.2021, 01:17
    #40106916
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parameter does not exists
Softologic,
меня браузер ФФ подвел. по поиску : почему-то не дал ничего в первый раз.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Parameter does not exists / 22 сообщений из 22, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]