Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.09.05;
Скачать: [xml.tar.bz2];

Вниз

DataSet и передача параметров (MySQL5.1)   Найти похожие ветки 

 
Анна   (2010-06-09 14:42) [0]

Такой вот 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 14:46) [1]

переименовать параметры.


 
Анна   (2010-06-09 14:47) [2]


> Медвежонок Пятачок ©   (09.06.10 14:46) [1]

Не поняла вас.


 
Медвежонок Пятачок ©   (2010-06-09 14:50) [3]

не надо понимать.
надо переименовать параметры.
чтобы имена были уникальны


 
Анна   (2010-06-09 14:58) [4]


> Медвежонок Пятачок ©   (09.06.10 14:50) [3]

У меня и так все имена параметров уникальны. "param_id_ves","param1_id_ves","param2_id_ves" ....
Наоборот, хотелось бы использовать одно имя.


 
Медвежонок Пятачок ©   (2010-06-09 15:03) [5]

то набор данных содержит 0 записей.

Значит значения у них  такие, что ни одна запись не поапала в условие Where


 
RWolf ©   (2010-06-09 15:04) [6]

какой набор компонентов используется в программе для доступа к MySQL?


 
Медвежонок Пятачок ©   (2010-06-09 15:06) [7]

видно же что адо


 
Анна   (2010-06-09 15:07) [8]


> 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:11) [9]


> Медвежонок Пятачок ©   (09.06.10 15:03) [5]

Я же писала в теме, что запрос формирует НД. Но только в том случае если присваиваю 4 параметра с одним и темже значением. (или естественно ставлю в "лоб" значение)


 
Медвежонок Пятачок ©   (2010-06-09 15:15) [10]

я и говорю, что значения параметров разные в двух случаях.
в первом они такие, что записи попадают в условие.
во втором они такие, что записей удовлетворяющих условиям нет.


 
Анна   (2010-06-09 15:28) [11]


> Медвежонок Пятачок ©   (09.06.10 15:15) [10]
> я и говорю, что значения параметров разные в двух случаях.
>
> в первом они такие, что записи попадают в условие.
> во втором они такие, что записей удовлетворяющих условиям
> нет.

 Нет, вы не так меня понимаете.
Смотрите, если я пишу

DataSet_master.Parameters.ParamByName("param_id_ves").Value:=30570;

И далее в тексте запроса 4 раза пишу  id_ves=:param_id_ves, то 0 записей.

Но если пишу:

DataSet_master.Parameters.ParamByName("param_id_ves").Value:=30570;
DataSet_master.Parameters.ParamByName("param1_id_ves").Value:=30570;
DataSet_master.Parameters.ParamByName("param2_id_ves").Value:=30570;
DataSet_master.Parameters.ParamByName("param3_id_ves").Value:=30570;

и подставляю эти 4 параметра (с одинаковым значением) в запрос

...id_ves=:param_id_ves
...id_ves=:param1_id_ves
...id_ves=:param2_id_ves
...id_ves=:param3_id_ves
, то все отрабатывает.


 
Медвежонок Пятачок ©   (2010-06-09 15:40) [12]

значения параметров во втором случае такие, что нет записей им удовлетворяющих.


 
Анна   (2010-06-09 15:46) [13]


> Медвежонок Пятачок ©   (09.06.10 15:40) [12]

вы же прекрасно видите, что значение параметров в обоих случаях одно: 30570


 
Медвежонок Пятачок ©   (2010-06-09 15:48) [14]

осталось убедить sql сервер в том, что они одинаковые.


 
Медвежонок Пятачок ©   (2010-06-09 15:50) [15]

он в отличие от вас видит разницу в значениях параметров в первом и втором случае.
потому и результат селекта разный.

если же вы умнее сервера, то зачем он вам вообще?
работайте без него и не отправляйте ему запросы.
вы же без сервера знаете, что должно получиться в результате.


 
Anatoly Podgoretsky ©   (2010-06-09 15:50) [16]

> Анна  (09.06.2010 15:28:11)  [11]

Вот последний вариант и используй, он правильный.


 
Анна   (2010-06-09 15:53) [17]


> Anatoly Podgoretsky ©   (09.06.10 15:50) [16]

Естественно я его и использую. Но, сомневаюсь в грамотности. Зачем повторять одно и тоже значение 30570 в четырех параметрах? Почему с одним -то не проходит?


 
Anatoly Podgoretsky ©   (2010-06-09 15:55) [18]

> Анна  (09.06.2010 15:46:13)  [13]

Не параметров, а первого параметра с таким именем.


 
Медвежонок Пятачок ©   (2010-06-09 15:55) [19]

Почему с одним -то не проходит?

Потому что ты тупая овца.

значения параметров во втором случае такие, что нет записей им удовлетворяющих.


 
Anatoly Podgoretsky ©   (2010-06-09 15:56) [20]

> Медвежонок Пятачок  (09.06.2010 15:48:14)  [14]

А нафига это серверу, он оперирует позициями в запросе (PlaceHolders) и
часто в качестве имени передается знак вопроса.


 
Anatoly Podgoretsky ©   (2010-06-09 16:01) [21]

> Анна  (09.06.2010 15:53:17)  [17]

Потому что это не параметры, а держатели значенией (Parameters.Items[x]) и
по какому то недоразумению програмист им дал одинаковое имя. На самом деле
имена не нужны совсем, это просто именованые параметры, для удобства
программиста. Если хочешь другого поведения, то напиши свою функцию, можно
как наследника с сокрытием основного метода.


 
Медвежонок Пятачок ©   (2010-06-09 16:03) [22]

А нафига это серверу, он оперирует позициями в запросе (PlaceHolders) и

Там в адо реализация такая.
Присвоение значения параметру сканирует их список, находит первый по указанному имени, дает ему значение и делает брейк.
остальные одноименные остаются без значения (в отличие от бде-шной реализации аналогичного метода)


 
Анна   (2010-06-09 16:11) [23]


> Медвежонок Пятачок ©   (09.06.10 16:03) [22]


если бы вы написали это в самом начале моего вопроса, то тогда и не было бы продолжения и я не была бы тупой овцой.
спасибо.
вопрос снят.


 
Медвежонок Пятачок ©   (2010-06-09 16:14) [24]

у вас не тот случай.
параметры не одноименные.
значит дело не в этом, а в значениях этих параметров.


 
Омлет ©   (2010-06-09 16:22) [25]

> Медвежонок Пятачок ©   (09.06.10 15:55) [19]
> Потому что ты тупая овца.


С гаража что ли упал?


 
Медвежонок Пятачок ©   (2010-06-09 16:24) [26]

белый лыцарь?


 
Медвежонок Пятачок ©   (2010-06-09 16:58) [27]

первая заповедь программиста - верь серверу а не своим глазам, даже если у тебя единица.

вопрос-то элементарнейший.
имеем один и тот же текст запроса.

и два варианта присвоения параметров.

сервер - он человек простой. он не видит вашего паскалевского кода, не видит как именно присваиваются параметры.

зато он видит реальные значения параметров, присланных ему клиентской библиотекой.

И если выборки сервера в разных случаях разные, то это значит только одно:

значения параметров были разные.

все.

но нет же.
пытливый ум упорно считает, что в обих случаях все было абсолютно одинаково, а сервер просто над нами прикалывается.


 
Омлет ©   (2010-06-09 18:15) [28]

> Медвежонок Пятачок ©   (09.06.10 16:58) [27]
> пытливый ум упорно считает,


Это повод его оскорблять?
В глаза поди такого не сказал бы, светлая ты голова.


 
Leonid Troyanovsky ©   (2010-06-09 20:47) [29]


> Омлет ©   (09.06.10 18:15) [28]

Реально же поросенок.

--
Regards, LVT.


 
Медвежонок Пятачок ©   (2010-06-10 09:27) [30]

Сначала в этой ветке было пять раз сказано, что сервер получает два разных комплекта параметров.

не помогло.

затем была применена шоковая терапия.

и вопрос вроде решился.

это не оскорбление, это именно шоковая терапия.

пациенту иногда дают понюхать нашатырь или бьют по щекам.
когда ничего не помогает.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2010.09.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.004 c
6-1225550596
Andrey_
2008-11-01 17:43
2010.09.05
TIdHTTP


2-1276061538
Delphist2
2010-06-09 09:32
2010.09.05
работа с excel


3-1244113042
ganda
2009-06-04 14:57
2010.09.05
Работа функцией UDF при вставки записи в Таблицу


15-1276189342
turbouser
2010-06-10 21:02
2010.09.05
Купил монитор :(


2-1275988679
И. Павел
2010-06-08 13:17
2010.09.05
Как определить, что приложение освободилось?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский