Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
ptaxa888 Автор Сообщений: 61 Дата регистрации: 07.03.2018 |
Содержимое переменной при каждом запросе новая, поэтому брать ее например из thisform.text1.value кажется удобным. Задумка какая была, не знаю есть ли правда в ней:
Исправлено 2 раз(а). Последнее : ptaxa888, 13.03.18 10:08 |
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
ptaxa888 Автор Сообщений: 61 Дата регистрации: 07.03.2018 |
Люди подскажите одну вещь.
Организовал я в итоге эту задачу. Единственная проблема не могу взять в кавычки значение переменной т.е Text1=thisform.text1.value Uslovie=thisform.combo2.value cWhere= [where]+(cChoice.tblfld)+uslovie+text1 Вообщем нужно чтобы значение text1 бралось в кавычки ‘ИВАНОВ’ |
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
AndyNigmatec Сообщений: 1573 Откуда: Волгоград Дата регистрации: 28.06.2015 |
мне вот интерестно, ну ладно, опустим жуткое нагромождение при поиске фамилии... но сама логика то какая?
когда уже выбрали конкретное ФИО - нафига там "=" и выполнить запрос? в комбо то уже конкретное значение выбрано. И еще более не понятен тогда смыл "!=" ... загадки пряма ))) а по поводу кавычек = так чего сложного то
|
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
ptaxa888 Автор Сообщений: 61 Дата регистрации: 07.03.2018 |
Все эти нагромождения с IF чисто для пользователя, чтобы выскакивали Сообщения по которым можно понять где ошибка. Супееер, спасибо)) Я все переорганизовал, без использования созданных queries. Вечером скину как все изменилось. Все же такой избыточный бред был написан у меня до этого. Спасибо большое) Вот только сейчас станет вопрос с как применить CTOD когда в text1 попадёт дата(D). Исправлено 4 раз(а). Последнее : ptaxa888, 13.03.18 15:58 |
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
ptaxa888 Автор Сообщений: 61 Дата регистрации: 07.03.2018 |
C этим разобрался.
|
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
Sawradym Сообщений: 2244 Откуда: Винница Дата регистрации: 15.05.2007 |
|
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Не надо никаких кавычек. Просто сделай переменную со ЗНАЧЕНИЕМ из поля
Для чисел просто проинициализируй текстбокс числом (.Value = 0), для дат - датой (.Value = {} - это пустая дата). И всё, никаких кавычек и тем более никакого г*на с CTOD не нужно ------------------ WBR, Igor |
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
ptaxa888 Автор Сообщений: 61 Дата регистрации: 07.03.2018 |
Я в принципе так и сделал, но уйти от CTOD не получилось чисто из за незнания всех возможностей языка. Это хорошее решение т.к. оно поможет мне уйти от IF и его длинного хвоста. IF применил т.к. пришлось поделить пути следования от выбранного типа переменной text1. Нужно переработать свою избыточность. Пока сделал так, работает пока
К символьному полю применил, работает
Может добавить дополнительное поле в курсор с указанием типа данный C или D!? и тогда условие стороить
Исправлено 3 раз(а). Последнее : ptaxa888, 14.03.18 01:44 |
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
of63 Сообщений: 25244 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Ты вобще не спишь )
Посмотри как выглядят даты в фоксе ? DTOC(DATE()) && вот так и выглядит дата-строка, зависит от SET DATE, как и все нижележащее ? DATE() && такой вида значения "дата" по человечески. Ее вид на твоем экране может отличаться от моего вида этой даты, это просто следствия твоих установок SET DATE и подобных. Ты можешь получить эту же строку "изображение даты" из ф-ии TRANSFORM(), она все возвращает в C-виде, как CSTR() ...вроде в VBA... забыл) |
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
ptaxa888 Автор Сообщений: 61 Дата регистрации: 07.03.2018 |
Сплю прямо на клаве) Была бы такая функция которая переводила Char в Char т.е. не ломала символьный тип. и в тоже время тип Data переводила в Char cXXXXX(Иванов) - тип Char cXXXXX(12.12.2012) - тип Char |
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
AndyNigmatec Сообщений: 1573 Откуда: Волгоград Дата регистрации: 28.06.2015 |
- так напиши свою )))) ... типа (тупо смысл):
Исправлено 1 раз(а). Последнее : AndyNigmatec, 14.03.18 08:38 |
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
ptaxa888 Автор Сообщений: 61 Дата регистрации: 07.03.2018 |
Ну да, мысль ясна. Можно конечно и через IF т.к. всего два типа данных С и D. Я так понял функцию можно запихнуть в .prg а в форму прописать к примеру DO MyConvert в нужном месте!? Но это чуть позже, нарисовалась новая задача, пока попробую сам реализовать) |
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
AndyNigmatec Сообщений: 1573 Откуда: Волгоград Дата регистрации: 28.06.2015 |
да, ф-ю можно в prg ... а вызывать где требуется, типа
asd = MyConvert(lcInData) или сразу в select-е SELECT field1, MyConvert(field2) as field2 ... и .т.д. а можно ее вообще как метод формы сделать и в самой форме уже пользовать : asd = thisform.MyConvert(lcInData) Исправлено 1 раз(а). Последнее : AndyNigmatec, 14.03.18 09:34 |
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
От этого IF, а точнее CASE и не уйти. Можно поместить на форме 3 текстбокса друг под другом и переключать их видимость в зависимости от требуемого "типа данных". Можно собственно в одном текстбоксе делать переключение (присваивая в его .Value "пустое" значение нужного типа - т.е. "", 0 или {} ) Делать это нужно в коде связанном с выбором поля в комбо со списокм - скажем в .Valid() Проблема с кавычками возникнет моментально как только пользователь введёт в качестве поисковой фразы что-то с этими самыми кавычками - всё сломается. Про SQL-инъекцию (т.е. возможность через штатный интерфейс программы выполнить ну совсем "нештатное" действие) я вообще молчу. Проблема CTOD() - разнообразие форматов даты представленной в виде строки. При том если текстбокс проинициализировать значением даты (пустой если присвоить ={} или, к примеру, текущей если присвоить =DATE()) то он ещё и не позволит абы чего вводить - т.е. сразу заработает ограничение по формату, и по допустимым значениям для элементов даты - т.е. "забесплатно" получаем какие-никакие а удобства - по сравнению с текстбоксом принимающем строки, где юзер может ввести к примеру "14 марта" и потом жаловаться что система его "не понимает" - т.к. ты же не запретил вводить в такое поле что угодно Да, это имеет смысл. В перспективе - ещё и размер (число символов, или диапазон чисел для числовых полей) ограничивать. ------------------ WBR, Igor |
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
ptaxa888 Автор Сообщений: 61 Дата регистрации: 07.03.2018 |
Спасибо, поковыряюсь.
Есть вопрос, как в ListBox организовывается что то на подобии Multiselect? вообщем нужен одновременный выбор нескольких значений поля |
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
По тупому - через свойство MultiSelect. Но это для пользователя (для 90% типичных) весьма недружественно - надо всякие Crtl зажимать чтобы прокликать нужные элементы, слетает выбор если чуть не туда кликнул...
А по хорошему - классом листбокса который картинки показывает перед каждым элементом, и ловит нажатия мышкой на них - ну плюс к тому контекстное меню для "выбрать всё, снять выбор со всего, инвертировать выбор"... Выглядит он примерно так: [attachment 29137 checklist.png] Исходник я приложу, только он писался больше 15 лет назад и ещё под 7 фокс Он точно некорректно работает будучи размещён внутри контейнера (координаты клика мышки неверно считаются - надо было на OBJTOCLIENT переделать). [attachment 29139 CheckList.zip] ------------------ WBR, Igor |
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
AndyNigmatec Сообщений: 1573 Откуда: Волгоград Дата регистрации: 28.06.2015 |
а в случАе испольхования грида а лист - все еще проще )))
|
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Нет, не проще. Ты глянь для начала на объём кода
А с гридом довольно много возни/борьбы - сделай автопереход по нажатию первых буковок (встроен в листбокс), сделай не уползающий вверх список при прокрутке вниз - с огромной пустой простынёй, повесь меню - и на контролы и на грид. Всякому контролу своё применение - листбокс вполне адекватен для указанной простой цели. Даже просто нагенерить кодом чекбоксов было бы можно, если бы элементов в списке выбора было с пяток ------------------ WBR, Igor |
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
ptaxa888 Автор Сообщений: 61 Дата регистрации: 07.03.2018 |
Пример как вариант, но хочу понять есть ли тот путь который я воображаю. На данный момент выбор справочного значения построен на ComboBox3 (скрин во вложении), НО в нем допустим одновременный выбор только единственного значения, а т.к. нужен множественный выбор приходится менять Combo3 на List3. Выбор значения в combo3 формирует следующее условие where в динамическом запросе:
Исправлено 1 раз(а). Последнее : ptaxa888, 16.03.18 23:01 |
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
В принципе, конечно, можно и через OR насобирать условий. Но есть и другие способы:
- если выбранных значений не очень много, то можно использовать условие вида
- если выбранных значений может быть больше десятка, то использовать выбор отмеченных в курсор (типа как мой класс делает) и в запросе прописать
P.S. обычно префикс l имеют логические поля, там не будет никаких 0/1, там будет .T. и .F. и потому условие будет выглядеть вот так вот "просто" если там всё же число, то условие в подзапросе будет nCheck=1 - т.к. и поле уж тогда надо назвать с префиксом n ------------------ WBR, Igor |
© 2000-2024 Fox Club  |