![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DataSet и передача параметров (MySQL5.1) [D7, XP]
Анна © (2010-06-09 14:42:00)Такой вот Select:
DataSet_master.CommandText:='select a.id_ssd,ltrim(ves.board_number) board_number,a.datetime,r_area.red_area,a.id_area,c.koll,'+
'case when d.id_ssd is null and f.id_ssd is null then '''' else ''korr'' end prizn_korr '+
'from hssd.hssd a '+
'left join '+
'(select a.id_ssd,count(*) koll from '+
'(select aa.id_ssd,aa.id_res '+
'from hssd.hssd_catch_fish aa,hssd.hssd bb '+
'where aa.permit is not null and aa.permit<>'''' and aa.id_ssd=bb.id_ssd '+
'and bb.id_ves=:param_id_ves '+
'group by id_ssd,permit)a '+
'group by a.id_ssd) c on a.id_ssd=c.id_ssd '+
'left join '+
'(select a.id_ssd from hssd.hssd a,hssd.hssd_catch_fish b '+
'where a.id_ssd=b.id_ssd and a.id_ves=:param1_id_ves '+
'and b.blok<>10) d on a.id_ssd=d.id_ssd '+
'left join '+
'(select a.id_ssd from hssd.hssd a,hssd.hssd_catch_anim b '+
'where a.id_ssd=b.id_ssd and a.id_ves=:param2_id_ves '+
'and b.blok<>10) f on a.id_ssd=f.id_ssd '+
'join '+
'(select id_ves,board_number from hssd.ves where date_expiration_ves is null) ves '+
' on ves.id_ves=a.id_ves '+
'join hssd.r_area on r_area.id_area=a.id_area '+
'where a.id_ves=:param3_id_ves ';
DataSet_master.Parameters.ParamByName('param_id_ves').Value:=strtoint(ss_id_ves) ;
DataSet_master.Parameters.ParamByName('param1_id_ves').Value:=strtoint(ss_id_ves );
DataSet_master.Parameters.ParamByName('param2_id_ves').Value:=strtoint(ss_id_ves );
DataSet_master.Parameters.ParamByName('param3_id_ves').Value:=strtoint(ss_id_ves );
Данные выбираются правильно только в том случае, если я по тексту присваиваю каждый раз новый параметр. Если везде в каждом подзапросе присваиваю один параметр param_id_ves, то набор данных содержит 0 записей.
Я делаю неправильно. Ведь нельзя же плодить столько параметров с одинаковыми значениями... Тем более мне еще дату вставлять нужно тоже 4 раза. Подскажите пож-та как грамотно присваивать параметры, если в запросе нужно неск. раз передать одно и тоже значение?
Медвежонок Пятачок (2010-06-09 15:15:00) [21]я и говорю, что значения параметров разные в двух случаях.
в первом они такие, что записи попадают в условие.
во втором они такие, что записей удовлетворяющих условиям нет.
Анна (2010-06-09 15:11:00) [22]
> Медвежонок Пятачок © (09.06.10 15:03) [5]
Я же писала в теме, что запрос формирует НД. Но только в том случае если присваиваю 4 параметра с одним и темже значением. (или естественно ставлю в "лоб" значение)
Анна (2010-06-09 15:07:00) [23]
> RWolf © (09.06.10 15:04) [6]
В ADOConnection1 пишу так:
Provider=MSDASQL.1;Password=123;Persist Security Info=True;User ID=****;Data Source=mrcm_201;Extended Properties="DSN=mrcm_201;OPTION=0;PWD=123;PORT=0;SERVER=192.168.70.201;UID=****"
Медвежонок Пятачок (2010-06-09 15:06:00) [24]видно же что адо
RWolf (2010-06-09 15:04:00) [25]какой набор компонентов используется в программе для доступа к MySQL?
Медвежонок Пятачок (2010-06-09 15:03:00) [26]то набор данных содержит 0 записей.
Значит значения у них такие, что ни одна запись не поапала в условие Where
Анна (2010-06-09 14:58:00) [27]
> Медвежонок Пятачок © (09.06.10 14:50) [3]
У меня и так все имена параметров уникальны. 'param_id_ves','param1_id_ves','param2_id_ves' ....
Наоборот, хотелось бы использовать одно имя.
Медвежонок Пятачок (2010-06-09 14:50:00) [28]не надо понимать.
надо переименовать параметры.
чтобы имена были уникальны
Анна (2010-06-09 14:47:00) [29]
> Медвежонок Пятачок © (09.06.10 14:46) [1]
Не поняла вас.
Медвежонок Пятачок (2010-06-09 14:46:00) [30]переименовать параметры.