Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.12.27;
Скачать: CL | DM;

Вниз

Почему не фильтруется 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;
Скачать: CL | DM;

Наверх




Память: 0.65 MB
Время: 0.013 c
8-1172599000
shart
2007-02-27 20:56
2009.12.27
Удаление шума на изображении


15-1256342365
POOP
2009-10-24 03:59
2009.12.27
Простое проектирование схем


2-1257501455
d@nger
2009-11-06 12:57
2009.12.27
dxDBTreeView и картинки


15-1256324917
GDI+
2009-10-23 23:08
2009.12.27
Почему многопоточное программирование на Delphi


15-1256481374
berlios
2009-10-25 17:36
2009.12.27
Треугольник