Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
3-1232433164
Matveih1
2009-01-20 09:32
2009.12.27
Данные не обновляются


2-1257749650
Alex_C
2009-11-09 09:54
2009.12.27
Скрыть кнопку на панели задач


2-1257847652
Alex_C
2009-11-10 13:07
2009.12.27
По Handle окна найти окно


2-1257500615
1234567890
2009-11-06 12:43
2009.12.27
AddObject


2-1257165542
Andrewtitoff
2009-11-02 15:39
2009.12.27
DBComboBox





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский