Форум: "Начинающим";
Текущий архив: 2009.12.27;
Скачать: [xml.tar.bz2];
ВнизПочему не фильтруется ADOQuery? Найти похожие ветки
← →
andrewtitoff © (2009-11-08 22:20) [0]Выдает ошибку "Не удается найти объект в семействе, соответствующий требуемому имени или порядковому номеру" в строке Form1.ADOQuery1.Filtered:=true;
procedure TForm2.ComboBox1Change(Sender: TObject);
begin
Form1.ADOTable4.Filter:="STREET = """+ComboBox1.Text+"""";
Form1.ADOTable4.Filtered:=true;
ComboBox2.Items.Clear;
Form1.ADOQuery1.SQL.Text := "select STREET and HOUSE from lift";
Form1.ADOQuery1.Open;
while not Form1.ADOQuery1.Eof do
begin
Form1.ADOQuery1.Next;
end;
Form1.ADOQuery1.Filter:="street = """+ComboBox1.Text+"""";
Form1.ADOQuery1.Filtered:=true;
Form1.ADOQuery1.SQL.Text := "select distinct HOUSE from lift";
Form1.ADOQuery1.Open;
while not Form1.ADOQuery1.Eof do
begin
Form2.ComboBox2.Items.Add(Form1.ADOQuery1.Fields[0].AsString);
Form1.ADOQuery1.Next;
end;
end;
← →
andrewtitoff © (2009-11-08 22:23) [1]А в целом задача такая:
После выбора улицы в первом комбобоксе нужно заполнить второй комбобокс номерами домов находящихся только на этой улице и без повторов
← →
Anatoly Podgoretsky © (2009-11-08 22:43) [2]> andrewtitoff (08.11.2009 22:20:00) [0]
Что за дурдом в запросе написан, сам изобретал синтаксис, или в каком то хитром учебнике это прочил?
← →
andrewtitoff © (2009-11-08 22:56) [3]
> Anatoly Podgoretsky © (08.11.09 22:43) [2]
> > andrewtitoff (08.11.2009 22:20:00) [0]Что за дурдом
> в запросе написан, сам изобретал синтаксис, или в каком
> то хитром учебнике это прочил?
в инете нарыл, но работает же...
А как правильно?
так тож нехочет:
Form1.ADOQuery1.SQL.Text := "select distinct HOUSE from lift WHERE """+ComboBox1.Text+"""";
Как правильно то сделать? =(((
← →
andrewtitoff © (2009-11-08 23:01) [4]Все, разобрался!, я сделал так:
Form1.ADOQuery1.SQL.Text := "select distinct HOUSE from lift WHERE STREET = """+ComboBox1.Text+"""";
← →
andrewtitoff © (2009-11-08 23:10) [5]А можно сделать запрос что бы одним запросом повторить это для 3-х полей?
← →
Anatoly Podgoretsky © (2009-11-08 23:18) [6]> andrewtitoff (08.11.2009 22:56:03) [3]
Не это а выше
← →
andrewtitoff © (2009-11-08 23:27) [7]
> Anatoly Podgoretsky © (08.11.09 23:18) [6]
> > andrewtitoff (08.11.2009 22:56:03) [3]Не это а выше
Вы говорите загадками... =)))
← →
andrewtitoff © (2009-11-09 00:02) [8]Как сделать для нескольких DISTINCT полей?
Form1.ADOQuery1.SQL.Text := "select distinct HOUSE , CORP , PARNUM from lift WHERE STREET = """+ComboBox1.Text+"""";
В таком виде запрос убирает дубликаты только у первого поля... =(((
← →
Омлет © (2009-11-09 00:12) [9]> distinct
Он возвращает униикальные строки.
← →
andrewtitoff © (2009-11-09 00:25) [10]
> Омлет © (09.11.09 00:12) [9]
> > distinct Он возвращает униикальные строки.
А как сделать что бы возвращать уникальные поля?
Хотя нет, кстати он вообще возвращает не то, т.е. для первого поля возвращает все как нужно, а для остальных distinct вроде работает, а вот условие WHERE STREET = """+ComboBox1.Text+""""; игнорируется... =(((
← →
andrewtitoff © (2009-11-09 00:27) [11]хотя нет, не выполняется..., вообще как то странно работает... =(((
← →
Германн © (2009-11-09 00:29) [12]
> Вы говорите загадками... =)))
Имхо АП имел в виду
> Form1.ADOQuery1.SQL.Text := "select STREET and HOUSE from
> lift";
← →
andrewtitoff © (2009-11-09 00:34) [13]
> Германн © (09.11.09 00:29) [12]
> > Вы говорите загадками... =)))Имхо АП имел в виду > Form1.
> ADOQuery1.SQL.Text := "select STREET and HOUSE from > lift";
>
А, ну наверное... =))))
Млин, ну подскажите кто-нибудь, уже весь инет перерыл - нигде не найти как это одним запросом сделать... =((((
← →
Германн © (2009-11-09 00:44) [14]
> Млин, ну подскажите кто-нибудь, уже весь инет перерыл -
> нигде не найти как это одним запросом сделать... =((((
>
Да вроде именно так как в andrewtitoff © (09.11.09 00:02) [8]
Только я бы туда добавил секцию GROUP BY
← →
Германн © (2009-11-09 00:55) [15]
> Германн © (09.11.09 00:44) [14]
>
>
> > Млин, ну подскажите кто-нибудь, уже весь инет перерыл
> -
> > нигде не найти как это одним запросом сделать... =((((
> >
>
> Да вроде именно так как в andrewtitoff © (09.11.09 00:
> 02) [8]
Хотя нет. Вру. Так не получится то, что (как я понял надо).
Возможное решение неявно предложено в:
> andrewtitoff © (08.11.09 23:10) [5]
>
> А можно сделать запрос что бы одним запросом повторить это
> для 3-х полей?
>
То бишь я имею в виду "вложенные запросы".
← →
Омлет © (2009-11-09 00:57) [16]> После выбора улицы в первом комбобоксе нужно заполнить второй
> комбобокс номерами домов находящихся только на этой улице
> и без повторовSELECT DISTINCT house FROM address_t
WHERE STREET = "Бориса Ельцина"
Что за таблица lift - мне не ясно.
← →
sniknik © (2009-11-09 01:02) [17]> найти как это одним запросом сделать... =((((
что это? 3 независимых набора полей получить?
тебе же прямо здесь сказали (чего инет перерывать?)
Омлет © (09.11.09 00:12) [9]
>> distinct
>Он возвращает униикальные строки.
но вообще можно, без проблем, если в "столбик", 3 запроса скрепить union-ами... ну и добавить признак разделитель.
блин, по моему, то что я сейчас сделаю так это - даю ответ на вопрос "как же сделать Y" по классификации
http://gunsmoker.blogspot.com/2008/10/x-y-z.html
← →
Омлет © (2009-11-09 01:02) [18]> нигде не найти как это одним запросом сделать
А что сделать одним запросом? Объясни.
Как получить список домов на улице такой-то я выше написал. Как получить список квартир в выбранном доме - да просто в where добавится условие flat=x, но это будет второй запрос, который произойдет после выбора дома пользователем.
← →
Омлет © (2009-11-09 01:05) [19]> запроса скрепить union-ами...
Скрепить можно только, если в скрепляемых выборках одинаковый набор полей.
А ему, похоже, надо скрепить список домов со списком подъездов и списком квартир - полная билиберда.
← →
sniknik © (2009-11-09 01:11) [20]> А что сделать одним запросом? Объясни.
ИМХО, он подготавливает данные для фильтрации (???!!!).
> если в скрепляемых выборках одинаковый набор полей.
неважно, главное одинаковый тип (или конвертируемый к одинаковому) а там у него строки.
а дома от подъездов разделяются признаком разделителем (простое поле константа в каждом запросе с разным значением)
← →
Омлет © (2009-11-09 01:17) [21]> [20] sniknik © (09.11.09 01:11)
> а дома от подъездов разделяются признаком разделителем
Ужас. ИМХО, не надо подгатавливать сразу все данные, типа список всех уникальных улиц, список всех уникальных номеров домов и т.д. Надо делать так, что пока не выбрана улица, поле с номером дома неактивно; пока не выбраны улица и дом, поле со списком квартир неактивно и т.д. Это обычные зависимые селекты, с простыми, как пробка, запросами.
← →
Омлет © (2009-11-09 01:20) [22]Хоть бы никогда andrewtitoff не пришлось работать с КЛАДРом, а то запарит вопросами ))
← →
Германн © (2009-11-09 01:22) [23]
> блин, по моему, то что я сейчас сделаю так это - даю ответ
> на вопрос "как же сделать Y"
Именно так.
Только имхо я более прав в понимании Y. :)
Автору нужен НД, (в котором будут уникальные номера домов по заданной улице, (в котором будут уникальные номера корпусов в этих домах, (в котором будут уникальные номера квартир))).
← →
Омлет © (2009-11-09 01:22) [24]> 3 запроса скрепить union-ами...
union all-ами )))
← →
andrewtitoff © (2009-11-09 01:24) [25]2 All
Бррр..., по молчали -молчали - а то выдали... =))))
В общем обьясняю подробно:
Имеется таблица, где поле номер 1 - улица, 2- дом, 3-корпус, 4 - парадная, для каждого из полей есть свой комбобокс - куда заносятся значения соответствующего столбца без повторов, тока вот задача в том - что бы когда в первом комбобоксе будет выбрана улица - в остальных комбобоксах оказались значения полей которые сожержатся только в записях с этой улицей и естественно без повторов....
← →
Омлет © (2009-11-09 01:29) [26]> [25] andrewtitoff © (09.11.09 01:24)
Ну так сделай на каждый комбобокс свой запрос. Зачем изгаляться?
И вообще, по-моему, лучше делать жестко зависимые поля (см. [21]) по иерархии данных.
Или хочется выбрать все дома, в которых есть 66 квартира на улице Вязов?
← →
andrewtitoff © (2009-11-09 01:30) [27]
> Омлет © (09.11.09 01:17) [21]
> > [20] sniknik © (09.11.09 01:11)> а дома от подъездов
> разделяются признаком разделителем Ужас. ИМХО, не надо подгатавливать
> сразу все данные, типа список всех уникальных улиц, список
> всех уникальных номеров домов и т.д. Надо делать так, что
> пока не выбрана улица, поле с номером дома неактивно; пока
> не выбраны улица и дом, поле со списком квартир неактивно
> и т.д. Это обычные зависимые селекты, с простыми, как пробка,
> запросами.
Ну я как раз подумывал над этим, но хотелось бы более универсальную выборку т.к. случаи разные бывают.., а тем более после выбора дома все равно придется и корпус и парадную делать т.к. где то они есть, а где-то нет...
← →
andrewtitoff © (2009-11-09 01:36) [28]
> Омлет © (09.11.09 01:29) [26]
> > [25] andrewtitoff © (09.11.09 01:24)Ну так сделай на
> каждый комбобокс свой запрос. Зачем изгаляться?И вообще,
> по-моему, лучше делать жестко зависимые поля (см. [21])
> по иерархии данных.Или хочется выбрать все дома, в которых
> есть 66 квартира на улице Вязов?
Ну может и такое быть, а во вторых корпуса и порадные могут быть, а могут и не быть например Ветеранов д5 п3 и Ветеранов д5 к2 т.е. получается что в первом случае после выбора дома нужно сразу знать номера парадных, а во втором случае они ненужны...
← →
Омлет © (2009-11-09 01:40) [29]> [28] andrewtitoff © (09.11.09 01:36)
Не, ну понятно, что пока не выбрана парадная, выводятся все квартиры выбранного дома.
Но, пока дом не выбран, поля квартиры, парадной и этажа должны быть задисаблены.
Выбрали дом - заполняем эти поля.
← →
andrewtitoff © (2009-11-09 01:45) [30]
> Омлет © (09.11.09 01:40) [29]
> > [28] andrewtitoff © (09.11.09 01:36)Не, ну понятно,
> что пока не выбрана парадная, выводятся все квартиры выбранного
> дома.Но, пока дом не выбран, поля квартиры, парадной и этажа
> должны быть задисаблены.Выбрали дом - заполняем эти поля.
>
Ну в принципе логично, только проблемы то не решает, все равно у нас получается два поля....
Как тогда при выборе номера дома заполнить корпуса и парадные одновременно?
← →
Германн © (2009-11-09 01:51) [31]
> В общем обьясняю подробно:
Мой телепатор сработал правильно. :)
← →
Омлет © (2009-11-09 01:54) [32]> Как тогда при выборе номера дома заполнить корпуса и парадные
> одновременно?
Два запроса. Один за другим.
← →
andrewtitoff © (2009-11-09 02:03) [33]
> Германн © (09.11.09 01:51) [31]
> > В общем обьясняю подробно:Мой телепатор сработал правильно.
> :)
Так а сделать то можно одним запросом или как говорит
> Омлет © (09.11.09 01:54) [32]
> > Как тогда при выборе номера дома заполнить корпуса и парадные
> > одновременно?Два запроса. Один за другим.
Делать несколькими запросами?
Просто с одной стороны я уже сам склоняюсь к нескольким запросам, но просто уже можно сказать дело принципа - узнать можно ли это одним запросом сделать или нет?...
← →
sniknik © (2009-11-09 02:10) [34]Омлет © (09.11.09 01:54) [32]
> Два запроса. Один за другим.
блинЮ да я ему даже наглядный пример показвал
http://delphimaster.net/view/2-1257618815/
пост [32]
из которого единственное что он понял, что его типа пытаются оскорбить...
← →
Омлет © (2009-11-09 02:11) [35]> можно ли это одним запросом сделать или нет?...
Можно - как сказал sniknik: union all + разделители-константы.
Но тогда тебе придется это разбират на стороне клиента, отделять корпуса от квартир, квартиры от парадных и т.д. Плюс озаботится тем, чтобы выбранные константы-разделители никогда не попали в базу.
← →
sniknik © (2009-11-09 02:13) [36]> можно ли это одним запросом сделать или нет?...
а разве я тебе тут не написал вариант? а в прошлой ветке тебе про множественные рекордсеты не говорили?
принципиальный ты наш...
← →
Германн © (2009-11-09 02:15) [37]
> andrewtitoff © (09.11.09 02:03) [33]
>
>
> > Германн © (09.11.09 01:51) [31]
> > > В общем обьясняю подробно:Мой телепатор сработал правильно.
>
> > :)
>
> Так а сделать то можно одним запросом или как говорит
>
> > Омлет © (09.11.09 01:54) [32]
> > > Как тогда при выборе номера дома заполнить корпуса и
> парадные
> > > одновременно?Два запроса. Один за другим.
>
> Делать несколькими запросами?
>
> Просто с одной стороны я уже сам склоняюсь к нескольким
> запросам, но просто уже можно сказать дело принципа - узнать
> можно ли это одним запросом сделать или нет?...
>
Могу только сказать, что одним запросом не обойдешься.
И ещё подсказка. "Вложенность структур".
← →
kyn66 © (2009-11-09 09:50) [38]
> andrewtitoff © (09.11.09 01:24) [25]
> тока вот задача в том - что бы когда
> в первом комбобоксе будет выбрана улица - в остальных комбобоксах
> оказались значения полей которые сожержатся только в записях
> с этой улицей и естественно без повторов....
Задействовать TDBLookupCombo. Однако без отбора SQl по ComboBox.onChange всеравно не обойтись. Делал похожую задачу по телефонной БД.
← →
sniknik © (2009-11-09 10:06) [39]> Однако без отбора SQl по ComboBox.onChange всеравно не обойтись.
да ну? а если я настрою мастер детайл, и запросы оно будет само "унутрях" формировать, не привлекая меня, это будет считаться, что обошелся без них?
в конце концов ADOTable тоже запрос посылает, но используют же его те кто хочет обойтись без знаний sql. и считают что обходится без запросов.
p.s. хотя конечно настраивать мастер детайл по строковым полям как то дико...
← →
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]Вот нашиша пользователю
> видеть в комбосписке пустое значение и выбирать его ?Кинь
> на форму крыжик.Если он отмечен юзером, то покажи комбобокс,
> в списке которого только непустые уник.значения из соотв.
> поля.Если не отчмечен - скрой этот комбобокс или сделай
> его дизейблд.При построении текста запроса или фильтра анализируй
> состояние крыжика и в зависимости от него строй соотв.запрос.
>
Мля,точно это еще большая проблема... =(((
Пользователб же не обьяснишь что просто пустое поле и выбранное пустое поле не одно и то-же... =(((
Чего то я не совсем понял про крыжик... =))))
зачем комбобокс то скрывать?
← →
Andrewtitoff © (2009-11-09 15:14) [81]
> sniknik © (09.11.09 15:12) [79]
> > А что такое Per?сокращение от слова "переменная".
Ясно, но все равно целиком конструкция не ясна... =(((
← →
Andrewtitoff © (2009-11-09 15:19) [82]2 Сергей М. ©
Просто не совсем уловил мысль, как например в приведенном выше примере быть:
>А как быть с пустыми полями в таблице?
>скажем у меня есть записи
>Ветеранов д3 к2 п1
>Ветеранов д3 к2 п2
>Ветеранов д3 к2 п3
>Ветеранов д3 п1
>Ветеранов д3 п2
>Ветеранов д3 п3
← →
Сергей М. © (2009-11-09 15:25) [83]
> Пользователб же не обьяснишь что просто пустое поле и выбранное
> пустое поле не одно и то-же
Где он увидит "просто пустое" и "выбранное пустое" ?
Если юзера не интересует критерий отбора по атрибуту "Корпус", он снимает соотв.крыжик и комбобокс либо исчезает с формы либо становится недоступным..
← →
Andrewtitoff © (2009-11-09 15:32) [84]
> Сергей М. © (09.11.09 15:25) [83]
> > Пользователб же не обьяснишь что просто пустое поле и
> выбранное > пустое поле не одно и то-жеГде он увидит "просто
> пустое" и "выбранное пустое" ?Если юзера не интересует критерий
> отбора по атрибуту "Корпус", он снимает соотв.крыжик и комбобокс
> либо исчезает с формы либо становится недоступным..
Не, ну это как то очень неудобно будет около каждого комбобокса крыжик ставить....
Может тогда попробовать все это сделать при помощи DBLookupComboBox-ов?
← →
sniknik © (2009-11-09 15:34) [85]> но все равно целиком конструкция не ясна... =(((
справка по jet + справка по бейсику. go.
>А как быть с пустыми полями в таблице?
это у тебя не пустое значение, раз к нему что-то привязано, это вполне самостоятельное просто не введенное умолчание, типа к1 если он единственный.
его нужно тоже выбирать и обрабатывать... только пустышку пользователям показывать как-то не правильно, замени ее на что нибудь типа "основной корпус" или к0/к1, а после ввода подменяй на пробел/null.
но вообще добрый совет, поручи это программисту...
← →
Andrewtitoff © (2009-11-09 15:43) [86]
> sniknik © (09.11.09 15:34) [85]
> > но все равно целиком конструкция не ясна... =(((справка
> по jet + справка по бейсику. go.>А как быть с пустыми полями
> в таблице?это у тебя не пустое значение, раз к нему что-
> то привязано, это вполне самостоятельное просто не введенное
> умолчание, типа к1 если он единственный.его нужно тоже выбирать
> и обрабатывать... только пустышку пользователям показывать
> как-то не правильно, замени ее на что нибудь типа "основной
> корпус" или к0/к1, а после ввода подменяй на пробел/null.
Хм, а вот это уже идея, действительно можно написать в комбо бокс например "нет" и пользователь должен догадаться что нет корпуса... =)))
Млин, хоть возвращайся к первоначальному варианту с одним комбобоксом и парсить строку.... =))))
> но вообще добрый совет, поручи это программисту...
Я смотрю Вы очень голодны, раз неоднократно намераете на обращение к специалисту, коим собственно говаря в том числе являетесь и Вы... =)))
Но я этого делать не буду т.к. я это делаю в первую очередь для своего самообразования во первых - а во вторых это уже решать не мне т.к. не я же из своего кармана буду платить специалисту за вещь - которая мне в общем то не нужна...
← →
Сергей М. © (2009-11-09 15:45) [87]
> вещь - которая мне в общем то не нужна
Зачем же ты тогда ее мусолишь которую уже неделю ?)
← →
Andrewtitoff © (2009-11-09 15:47) [88]
> Сергей М. © (09.11.09 15:45) [87]
> > вещь - которая мне в общем то не нужнаЗачем же ты тогда
> ее мусолишь которую уже неделю ?)
1)Для самообразования
2)Это интереснее и полезнее чем мои прямые должностные обязанности, а мне этим позволено в рабочее время заниматься
← →
Сергей М. © (2009-11-09 15:49) [89]
> 1)Для самообразования
Так возьми да почитай в конце-концов книжку какую-нибудь)
← →
Andrewtitoff © (2009-11-09 15:51) [90]
> Сергей М. © (09.11.09 15:49) [89]
> > 1)Для самообразованияТак возьми да почитай в конце-концов
> книжку какую-нибудь)
На это у меня сил не хватит, да и на работе мне не додут тупо сидеть читать книжки.... =))))
Тем более теория без практики - толку мало, а так я учусь на конкретном примере и не выдуманной задачей, а конкретно кому - то нужной!...
← →
sniknik © (2009-11-09 15:53) [91]> Я смотрю Вы очень голодны, раз неоднократно намераете на обращение к специалисту
а без домыслов нельзя? я на это намекаю(???), нет говорю открытым текстом, т.к. вижу что ты с этим явно не справляешься. и без всяких предложений себя на роль вашего программиста, я даже если предложишь, не пойду. это так абстрактно, неважно какому программисту, но программисту (все одно если нужна была бы операция то нужен был бы хирург, а не кто то другой, ремонт значит ремонтник и т.д.).
> а во вторых это уже решать не мне т.к. не я же из своего кармана буду платить специалисту за вещь - которая мне в общем то не нужна...
значит иди к тем кому нужна и кто решает, и кто это поручил тебе, и говори, "я это сделать не могу, нужен программист".
← →
sniknik © (2009-11-09 15:55) [92]> Тем более теория без практики - толку мало
в практике без знаний в интеллектуальных занятиях еще меньше толку.
← →
Сергей М. © (2009-11-09 15:59) [93]
> На это у меня сил не хватит
Это почему же ?)
← →
Andrewtitoff © (2009-11-09 16:02) [94]
> sniknik © (09.11.09 15:53) [91]
> > Я смотрю Вы очень голодны, раз неоднократно намераете
> на обращение к специалистуа без домыслов нельзя? я на это
> намекаю(???), нет говорю открытым текстом, т.к. вижу что
> ты с этим явно не справляешься. и без всяких предложений
> себя на роль вашего программиста, я даже если предложишь,
> не пойду. это так абстрактно, неважно какому программисту,
> но программисту (все одно если нужна была бы операция то
> нужен был бы хирург, а не кто то другой, ремонт значит ремонтник
> и т.д.).
Ну про прошлый мой проект года полтора назад тут мне так же говорили, однако давно уже отлично функционирует и используется пользователями по назначению и некаких ошибок и все мне благодарны!...
Неспорю что делал я его раз в 5 дольше если не больше - чем если бы взялись бы вы, и с этим проектом будет так-же, я это прекрасно понимаю, но скорость тут никого не волнует....
> а во вторых это уже решать не мне т.к. не я же
> из своего кармана буду платить специалисту за вещь - которая
> мне в общем то не нужна...значит иди к тем кому нужна и
> кто решает, и кто это поручил тебе, и говори, "я это сделать
> не могу, нужен программист".
Это пройденный этап, все сказали что будет програмист и дружно забили **й - у нас так всегда, всем все надо, но никто ничего не делает, а во вторых зачем мне это?, отказаться от интересного и полезного задания что бы вернуться к бесполезному перебиранию никому ненужных бумажек и безцельному протиранию штанов?...
← →
Andrewtitoff © (2009-11-09 16:03) [95]
> Сергей М. © (09.11.09 15:59) [93]
> > На это у меня сил не хватитЭто почему же ?)
Ну потому что на работе мне читать не дадут, дома как правило и так забот по горло, да и вообще я читаю очень редко.... =))))
← →
Сергей М. © (2009-11-09 16:04) [96]
> я читаю очень редко
Потому что писатель ?)
← →
Andrewtitoff © (2009-11-09 16:07) [97]
> Сергей М. © (09.11.09 16:04) [96]
> > я читаю очень редкоПотому что писатель ?)
Ну что то вроде того... =))))
У нас все класически: один пишет, другой читает, третий думает и.т.д.... =)))
← →
Сергей М. © (2009-11-09 16:13) [98]
> У нас все класически
Теперь я понял, почему у нас так хреново обстоит дело с лифтами)
← →
Andrewtitoff © (2009-11-09 16:17) [99]
> Сергей М. © (09.11.09 16:13) [98]
> > У нас все класическиТеперь я понял, почему у нас так хреново
> обстоит дело с лифтами)
Ну что поделаешь, если бы у нас так хреново только с лифтами обстояло... =)))
← →
Сергей М. © (2009-11-09 16:22) [100]
> если бы у нас так хреново только с лифтами обстояло
Угу.
И куда ни глянь - везде видна работа писателей. Которые не читатели и не думатели.
← →
Andrewtitoff © (2009-11-09 16:23) [101]Ну так я так понял что другого выбора нет кроме предложенного sniknik © (09.11.09 15:34) [85]?
← →
Сергей М. © (2009-11-09 16:25) [102]А чем он плох ?
← →
sniknik © (2009-11-09 16:25) [103]> везде видна работа писателей.
и все на основной работе штаны протирают, а занимаются чужой и хреново. (свою само собой вообще не делают)
← →
Andrewtitoff © (2009-11-09 16:26) [104]
> Сергей М. © (09.11.09 16:22) [100]
> > если бы у нас так хреново только с лифтами обстоялоУгу.
> И куда ни глянь - везде видна работа писателей. Которые
> не читатели и не думатели.
Ну каждый должен делать свою работу, если писатель - значит пиши, если читатель - значит читай... =)))
← →
sniknik © (2009-11-09 16:26) [105]> А чем он плох ?
отличный вариант вообще то! если вы про третий абзац.
← →
Сергей М. © (2009-11-09 16:28) [106]
> занимаются чужой и хреново
Но надеются при этом заработать на новые штаны)
← →
Andrewtitoff © (2009-11-09 16:29) [107]
> sniknik © (09.11.09 16:25) [103]
> > везде видна работа писателей.и все на основной работе
> штаны протирают, а занимаются чужой и хреново. (свою само
> собой вообще не делают)
А зачем?, все равно заплатят столько же... =))))
А работать у нас в стране вообще помоему никто не хочет!, кризис не кризис - а работать все равно небуду... =)))
Вот вы попробуйте найти работника на проценты, даже на раскошные проценты - хрен вы его найдете, все хотят оклад, даже если он небольшой - но гарантированный...
← →
Andrewtitoff © (2009-11-09 16:30) [108]
> sniknik © (09.11.09 16:26) [105]
> > А чем он плох ?отличный вариант вообще то! если вы про
> третий абзац.
Не смешно... =))))))
Я про второй....
← →
Andrewtitoff © (2009-11-09 16:32) [109]
> Сергей М. © (09.11.09 16:28) [106]
> > занимаются чужой и хреновоНо надеются при этом заработать
> на новые штаны)
Неправда, зарплату на штаны мне выдадут в любом случае, независимо делал я чего нибудь или нет, у нас один критерий: сидение - отсидел положенные 8 часов на рабочем месте - день отработал, а уж чем занимался это не так важно...
← →
Anatoly Podgoretsky © (2009-11-09 16:34) [110]> Andrewtitoff (09.11.2009 16:07:37) [97]
Ну так думай, что я думаю.
Правильно.
← →
sniknik © (2009-11-09 16:40) [111]> Вот вы попробуйте найти работника на проценты, даже на раскошные проценты - хрен вы его найдете
блин, сколько я прошлому начальнику твердил, давай заменим одну прогу на мою и перейдем на проценты с нее... и проблем было бы меньше (дерьмо прога была, жила только на моих "подпорках", при том, что был и мой аналог), и фирме дешевле и я бы уже был бы умеренно богатым (если б налоговая не вмешалась...)... нет, нельзя. типа то контора, а ты просто человек, от конторы гарантий больше (и все они кончились когда там разработчик ушел ;о)..., т.е. все одно в "человеков" все упирается)
← →
Andrewtitoff © (2009-11-09 16:41) [112]
> Anatoly Podgoretsky © (09.11.09 16:34) [110]
> > Andrewtitoff (09.11.2009 16:07:37) [97]Ну так думай,
> что я думаю. Правильно.
Ничего не понял, Вы опять загадками заговорили... =)))
← →
Anatoly Podgoretsky © (2009-11-09 16:46) [113]> Andrewtitoff (09.11.2009 16:41:52) [112]
Ну кто же на Плюке правду думает.
← →
Andrewtitoff © (2009-11-09 16:48) [114]
> sniknik © (09.11.09 16:40) [111]
> > Вот вы попробуйте найти работника на проценты, даже на
> раскошные проценты - хрен вы его найдетеблин, сколько я
> прошлому начальнику твердил, давай заменим одну прогу на
> мою и перейдем на проценты с нее... и проблем было бы меньше
> (дерьмо прога была, жила только на моих "подпорках", при
> том, что был и мой аналог), и фирме дешевле и я бы уже был
> бы умеренно богатым (если б налоговая не вмешалась...)..
> . нет, нельзя. типа то контора, а ты просто человек, от
> конторы гарантий больше (и все они кончились когда там разработчик
> ушел ;о)..., т.е. все одно в "человеков" все упирается)
Так я и не спою, причем более того полностью с вами согласен, правда не все это понимают, да и законодательство у нас тож не очень....
Но к сожалению как правило начальников не выбирают - это они вас выбирают... =)))
У нас кстати тоже так, неважно что и как функционирует, главное что бы бухгалтерии было удобно!..., у нас например уже 2 месяца связь с участками не работает потому что непонятно кто предоставляет непонятно какой выделенный канал, но зато мы работаем с одной фирмой и в бухгалтерии всего один договор...
← →
Сергей М. © (2009-11-09 16:50) [115]
> главное что бы бухгалтерии было удобно
Прогибаться под бухгалтерию - гиблое дело)
Особенно если ты нишиша не смыслишь в бухгалтерии)
← →
Andrewtitoff © (2009-11-09 16:53) [116]
> Сергей М. © (09.11.09 16:50) [115]
> > главное что бы бухгалтерии было удобноПрогибаться под
> бухгалтерию - гиблое дело)Особенно если ты нишиша не смыслишь
> в бухгалтерии)
А думаете кто-то спрашивает? =)))
← →
Сергей М. © (2009-11-09 16:56) [117]А чего вашей доблестной бухгалтерии надо из-под этой убогой базы с одной таблицей и единственным в ней индексом ?)
← →
Andrewtitoff © (2009-11-09 17:02) [118]
> Сергей М. © (09.11.09 16:56) [117]
> А чего вашей доблестной бухгалтерии надо из-под этой убогой
> базы с одной таблицей и единственным в ней индексом ?)
Да не, база не для бухгалтерии..., если бы она была нужна бухгалтерии то давно бы нашли програмиста и оплатили ему работу...
Страницы: 1 2 3 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.12.27;
Скачать: [xml.tar.bz2];
Память: 0.81 MB
Время: 0.01 c