Форум: "Начинающим";
Текущий архив: 2009.12.27;
Скачать: [xml.tar.bz2];
ВнизПочему не фильтруется ADOQuery? Найти похожие ветки
← →
kyn66 © (2009-11-09 10:26) [40]
> sniknik © (09.11.09 10:06) [39]
> > Однако без отбора SQl по ComboBox.onChange всеравно не
> обойтись.да ну? а если я настрою мастер детайл,
Не вопрос, можно и так. Лично я мастер-детайл сейчас стораюсь применять в исключительных случаях. Есть проблемы с добавлением записей в зависимые таблицы, если за ключом клавной не уследить.
← →
Sergey13 © (2009-11-09 10:46) [41]> [40] kyn66 © (09.11.09 10:26)
> если за ключом клавной не уследить.
А как ты за ним следишь?
ЗЫ: представляю какой бардак у тебя в данных.
← →
Anatoly Podgoretsky © (2009-11-09 11:09) [42]> kyn66 (09.11.2009 10:26:40) [40]
А надо в нужных, а не в исключительных и никаких проблем с добавлением нет
← →
sniknik © (2009-11-09 11:10) [43]> Не вопрос, можно и так.
вопрос не в том можно или нет, или что предпочесть при разработке, вопрос обошелся я в этом случае без "отбора SQl" или нет?
← →
Anatoly Podgoretsky © (2009-11-09 11:22) [44]> sniknik (09.11.2009 11:10:43) [43]
Если не видно, то нет никаких SQL запрос по логике.
← →
kyn66 © (2009-11-09 11:30) [45]
Anatoly Podgoretsky © (09.11.09 11:09) [42]
> А надо в нужных, а не в исключительных и никаких проблем
> с добавлением нет
Те же ... только в профиль. Зачем по пустому придирки клеить. И так было понятно об чем речь. ВАс, уважаемый Anatoly Podgoretsky хлебом не корми, дай на кого наехать...
← →
Anatoly Podgoretsky © (2009-11-09 11:34) [46]> kyn66 (09.11.2009 11:30:45) [45]
Какой еще наезд, когда и фильтрует и добавляется без проблем, может тебе стоит посмотреть в свою сторону, а не искать врагов на стороне?
← →
kyn66 © (2009-11-09 11:44) [47]
> Anatoly Podgoretsky © (09.11.09 11:34) [46]
> > kyn66 (09.11.2009 11:30:45) [45]
Не помню уже точно какая была ситуация (давно было), но проблемы какие то были.
> может тебе стоит посмотреть в свою сторону, а не искать
> врагов на стороне?
А этот бред к чему сказан? Мы тут вроде не в песочнице общей играемся...
← →
sniknik © (2009-11-09 11:45) [48]> когда и фильтрует и добавляется без проблем
насчет фильтра... в ADO мастер детайл можно настроить двумя вариантами, первый с применением запросов, второй фильтрацией контента на клиенте...
ну думаю дальше объяснять не надо, если фильтрация уже используется, то с использованием ее еще раз возможны проблемы...
ну и само собой у "противников запросов" (ака приверженцев старой BDE-шной идеологии) проблемы как из рога изобилия.
← →
sniknik © (2009-11-09 11:49) [49]> А этот бред к чему сказан? Мы тут вроде не в песочнице общей играемся...
это не бред, и не для песочницы, это как раз очень серьезно. к любой проблеме нужно подходить так как будто ты сам накосячил, или не знаешь чего то, а не кивать на "кривые компоненты/винду/и т.д.". это здравый подход, и оправдывает себя в 97% случаев...
а вот обижаться на непонятый совет, это по детски...
← →
Anatoly Podgoretsky © (2009-11-09 11:54) [50]> kyn66 (09.11.2009 11:44:47) [47]
Как раз в песочнице копаемся.
← →
kyn66 © (2009-11-09 12:14) [51]
> Anatoly Podgoretsky © (09.11.09 11:54) [50]
No comments...
← →
Andrewtitoff © (2009-11-09 14:05) [52]А как быть с пустыми полями в таблице?
скажем у меня есть записи
Ветеранов д3 к2 п1
Ветеранов д3 к2 п2
Ветеранов д3 к2 п3
Ветеранов д3 п1
Ветеранов д3 п2
Ветеранов д3 п3
Как в запросе и в сортировке указать что мне нужны именно те записи - где поле корпус пустое?, т.к. при выборе из комбобокса загруженного ранее туда при помоши запроса пустого значения(я так понимаю что оно не пустое - а там неотображаемый символ какой -то) и результат запроса и фильтра АДОТайбла оказываются пустыми... =(((
← →
sniknik © (2009-11-09 14:09) [53]> нужны именно те записи - где поле корпус пустое?
WHERE корпус = ""
или
WHERE корпус IS NULL
в зависимости от того, что у тебя там.
← →
Сергей М. © (2009-11-09 14:11) [54]
> где поле корпус пустое?SELECT ... FROM .. WHERE
(где)MyField
(поле корпус)IS NULL
(пустое)
← →
Andrewtitoff © (2009-11-09 14:15) [55]
> sniknik © (09.11.09 14:09) [53]
> > нужны именно те записи - где поле корпус пустое?WHERE
> корпус = ""илиWHERE корпус IS NULLв зависимости от того,
> что у тебя там.
Ну так я сейчас посмотред про помощи Шовмессаге - что получается у меня в фильтре - как раз " корпус = "" " и получается, а таблица с таким фильтром пустой остается....
← →
Andrewtitoff © (2009-11-09 14:16) [56]
> Сергей М. © (09.11.09 14:11) [54]
> > где поле корпус пустое?SELECT ... FROM .. WHERE (где)
> MyField (поле корпус) IS NULL (пустое)
Не совсем, я же из комбобокса выбираю, т.е. запрос выглядит так:
Form1.ADOQuery1.SQL.Text := "select distinct PARNUM from lift WHERE (STREET = """+ComboBox1.Text+""") and (HOUSE = """+ComboBox2.Text+""") and (CORP = """+ComboBox3.Text+""")";
← →
Сергей М. © (2009-11-09 14:19) [57]
> я же из комбобокса выбираю
Да по барабану откуда ты выбираешь.
Если "пустое" по факту есть NULL, значит и условие отбора д.б.Is NULL
, а не=""
← →
Andrewtitoff © (2009-11-09 14:20) [58]А не может информация искажаться из - перетаскивания в комбобокс и обратно?
Ну скажем в таблице ячейка равна Nil, а после манипуляций с комбобоксом возвращается в каком нибудь другом виде?
← →
Andrewtitoff © (2009-11-09 14:22) [59]
> Сергей М. © (09.11.09 14:19) [57]
> > я же из комбобокса выбираюДа по барабану откуда ты выбираешь.
> Если "пустое" по факту есть NULL, значит и условие отбора
> д.б. Is NULL, а не =""
Да это я понимаю, я непонимаю как это в запрос вставить, т.е. как подменять "" на NULL...
← →
Сергей М. © (2009-11-09 14:23) [60]
> в таблице ячейка равна Nil
Не может быть она Nil.
Nil и Null - это две разных разницы.
> перетаскивания в комбобокс и обратно
Как ты упарил уже своими комбобоксами)
Открой MSAccess и потренируйся с запросами к своей таблице, используя встроенный в него визуальный построитель запросов.
← →
sniknik © (2009-11-09 14:26) [61]кто такой Шовмессаге? он тебе врет, дай ему в нос... или врешь ты, дай в нос себе.
или не понимаешь, вот тебя дя понимания чуток правды ...
1 NULL не равно пустой строке, хотя может в нее конвертироваться, иногда неявно.
2 пустая строка не равна пробелу, хотя и там и там видно "пустоту".
3 фильтры составляй сам, по TADOTable помощи не будет никакой, почему сказано в том самом "бредовом" сообщении.
4 нахрапом, пусть и с помощью форума у тебя ничего не выйдет. как ни банально но - учится надо.
← →
sniknik © (2009-11-09 14:30) [62]> А не может информация искажаться из - перетаскивания в
простое чтение "в строку",а не в variant, гарантированно "убьет" null.
← →
Andrewtitoff © (2009-11-09 14:31) [63]
> sniknik © (09.11.09 14:26) [61]
> кто такой Шовмессаге? он тебе врет, дай ему в нос... или
> врешь ты, дай в нос себе.или не понимаешь, вот тебя дя
> понимания чуток правды ... 1 NULL не равно пустой строке,
> хотя может в нее конвертироваться, иногда неявно.2 пустая
> строка не равна пробелу, хотя и там и там видно "пустоту".
> 3 фильтры составляй сам, по TADOTable помощи не будет никакой,
> почему сказано в том самом "бредовом" сообщении.4 нахрапом,
> пусть и с помощью форума у тебя ничего не выйдет. как ни
> банально но - учится надо.
1,2)Да я это прекрасно понимаю поэтому и спрашиваю, у меня такое впечетление что поскольку комбобокс.текст имеет тип стринг и при помещении поля из базы значение NULL пресращается в пустую строку в базе и соответственно когда я делаю запрос при помощи комбобокса я уже делаю запрос с пустой строкой, а база естественно не понимает что пустая сторока - это NULL....
← →
Andrewtitoff © (2009-11-09 14:32) [64]
> sniknik © (09.11.09 14:30) [62]
> > А не может информация искажаться из - перетаскивания впростое
> чтение "в строку",а не в variant, гарантированно "убьет"
> null.
Ну так и я про то же....
Так вот вопрос собственно и заключается в том - как это обойти....
← →
Сергей М. © (2009-11-09 14:35) [65]
> как это обойти
Если текст комбобокса есть пустая строка, то вместо=""
написатьIS NULL
Неужели это так сложно дотумкать ?)
← →
Andrewtitoff © (2009-11-09 14:39) [66]
> Сергей М. © (09.11.09 14:35) [65]
> > как это обойтиЕсли текст комбобокса есть пустая строка,
> то вместо ="" написать IS NULLНеужели это так сложно дотумкать
> ?)
Не, это то я понимаю, только решение в голову приходит только одно:
вводить строковую переменную, присваивать ей текст комбобокса, потом IF-ом проверять на пустую строку и заменять на IS NULL и потом эту переменную пихать в запрос....
Я вои и додумал может это как то менее громоздко можно сделать?
← →
Сергей М. © (2009-11-09 14:45) [67]ну напиши функцию, принимающую параметром строковое значение и возвращающую результатом строку с тем или иным фильтр-условием, в зависимости от значения строки-параметра ..
← →
Andrewtitoff © (2009-11-09 14:48) [68]
> Сергей М. © (09.11.09 14:45) [67]
> ну напиши функцию, принимающую параметром строковое значение
> и возвращающую результатом строку с тем или иным фильтр-
> условием, в зависимости от значения строки-параметра ..
Да, пожалуй так и сделаю, раз никаких хитрых вариантов нету... =)))
← →
sniknik © (2009-11-09 14:52) [69]> как то менее громоздко можно сделать?
насчет "громоздкости" это еще вопрос, что будет менее... но по другому сделать завсегда практически можно, например
... WHERE (:Per = "" AND корпус IS Null) OR (корпус = :Per)
p.s. только не вздумай этим без понимания пользоваться... есть один нюанс который делает такое условие нерабочим (логически верным но не рабочим...).
> ну напиши функцию
в ассессе? ха.
← →
Сергей М. © (2009-11-09 14:54) [70]
> в ассессе? ха.
В кл.приложении)
← →
Andrewtitoff © (2009-11-09 14:57) [71]
> sniknik © (09.11.09 14:52) [69]
> > как то менее громоздко можно сделать?насчет "громоздкости"
> это еще вопрос, что будет менее... но по другому сделать
> завсегда практически можно, например ... WHERE (:Per =
> "" AND корпус IS Null) OR (корпус = :Per)p.s. только не
> вздумай этим без понимания пользоваться... есть один нюанс
> который делает такое условие нерабочим (логически верным
> но не рабочим...).
Честно говоря не очень понял - поэтому пока использовать небуду... =)))
> ну напиши функциюв ассессе? ха.
А при чем тут ассесс?
← →
sniknik © (2009-11-09 15:02) [72]при том что, это самый "негромоздкий" вариант, если бы аксесс позволял функции (как mssql например), передаешь в параметр всегда одинаково, один параметр, а уже в функции делаешь сравнение на то и другое.
← →
Andrewtitoff © (2009-11-09 15:02) [73]Млин... а как различать выбрал ли пользователь пустое поле или ничего не выбрал?, я так понимаю что только через ItemIndex?
← →
sniknik © (2009-11-09 15:05) [74]блин, хотя чего это я, есть похожий вариант и без функций -
... WHERE iif(корпус IS Null, "", корпус) = :Per
← →
Andrewtitoff © (2009-11-09 15:05) [75]Я же так понимаю - по умолчанию он помоему -1, а если я выберу пустую запись - то будет 0, правильно я рассуждаю?
← →
sniknik © (2009-11-09 15:06) [76]> правильно я рассуждаю?
а о чем ты рассуждаешь? (телепатор отказал)
← →
Сергей М. © (2009-11-09 15:09) [77]
> Andrewtitoff © (09.11.09 15:02) [73]
Вот нашиша пользователю видеть в комбосписке пустое значение и выбирать его ?
Кинь на форму крыжик.
Если он отмечен юзером, то покажи комбобокс, в списке которого только непустые уник.значения из соотв.поля.
Если не отчмечен - скрой этот комбобокс или сделай его дизейблд.
При построении текста запроса или фильтра анализируй состояние крыжика и в зависимости от него строй соотв.запрос.
← →
Andrewtitoff © (2009-11-09 15:09) [78]
> sniknik © (09.11.09 15:05) [74]
> блин, хотя чего это я, есть похожий вариант и без функций
> - ... WHERE iif(корпус IS Null, "", корпус) = :Per
А что такое Per?, хотя я в принципе давно уже функцию сделал...., просто боюсь накосячить еще больше с такими запросами... =)))
← →
sniknik © (2009-11-09 15:12) [79]> А что такое Per?
сокращение от слова "переменная".
← →
Andrewtitoff © (2009-11-09 15:12) [80]
> Сергей М. © (09.11.09 15:09) [77]
> > Andrewtitoff © (09.11.09 15:02) [73]Вот нашиша пользователю
> видеть в комбосписке пустое значение и выбирать его ?Кинь
> на форму крыжик.Если он отмечен юзером, то покажи комбобокс,
> в списке которого только непустые уник.значения из соотв.
> поля.Если не отчмечен - скрой этот комбобокс или сделай
> его дизейблд.При построении текста запроса или фильтра анализируй
> состояние крыжика и в зависимости от него строй соотв.запрос.
>
Мля,точно это еще большая проблема... =(((
Пользователб же не обьяснишь что просто пустое поле и выбранное пустое поле не одно и то-же... =(((
Чего то я не совсем понял про крыжик... =))))
зачем комбобокс то скрывать?
Страницы: 1 2 3 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.12.27;
Скачать: [xml.tar.bz2];
Память: 0.63 MB
Время: 0.011 c