Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
ругать за [не]понимание никто не будет, главное - (участие в программерстве) - грамотное изложение своей задачи, и умение найти контакт. Тут не звери.
|
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
Ясно. Элементарное недопонимание начинающих. То что вы получили, и то что выводите на экран... могут быть сильно различны. Простой пример. При выводе пользователю некой сложной структуры, заодно подтягиваются FK, но видеть их юзеру, совершенно не нужно. Попробуйте пойти по этому пути. Задача может сильно облегчиться. Например. Делаете полный запрос, на грид (именно на него) выводите все поля. В таблице критериев, каждому критерию назначаете columnN/ И далее просто делаете эти колонки невидимыми. Плюс этого решения, вы всегда оперируете одним набором данных (не знаю что дальше с этим будете делать) Минус, чуть более сложная передача в ексель, но думаю тут вам помогут))) Дел минут на 10. Совет. Смотрите на проблему так. Данные - это отдельная песня. Вывод на экран - другая. передача в ексель третья. ------------------ |
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
ptaxa888 Автор Сообщений: 61 Дата регистрации: 07.03.2018 |
Даже если идти по этому пути в любом случае разбираться как сделать динамический запрос собранный из данных listbox2, как ни крути |
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
AndyNigmatec Сообщений: 1574 Откуда: Волгоград Дата регистрации: 28.06.2015 |
- а чего тут разбираться - то же самое (я про SQL-запрос) что руками в коде пишете, тока записанный программно в строку-переменную. Фокс позволяет вообще отдельные блоки кода (программы) таким образом запускать-выполнять - главное не увлекаться а использовать там и тогда когда это действительно оправдано - например, в вашем случае, это на мой взгляд самый простой путь. Технически реализация создания/склеивания/прочее этой строки ничего сложного не представляет, ну вот простой как топор пример:
ну или как у вас на скрине с листбоксами (хотя я предпочитаю гриды) - тоже только для примера - прикрепил форму Исправлено 2 раз(а). Последнее : AndyNigmatec, 09.03.18 09:57 |
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
ptaxa888 Автор Сообщений: 61 Дата регистрации: 07.03.2018 |
С Вашей формой разобрался. Есть вопрос. В примере в listbox-сах Вы оперируете выбором (наличием/отсутствием) строк, но у меня задача "поиграть" с полями с помощью этих самых listbox. Подскажите-научите. Исправлено 1 раз(а). Последнее : ptaxa888, 10.03.18 03:20 |
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
ptaxa888 Автор Сообщений: 61 Дата регистрации: 07.03.2018 |
|
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
AndyNigmatec Сообщений: 1574 Откуда: Волгоград Дата регистрации: 28.06.2015 |
Ну формочка то простенькая только для иллюстрации, в ней был обычный select на основе проставленного в таблице поля отвечающего за выбор (поле lcheck) ... непосредственно именно так как в примере я пожалуй бы делать не стал (здесь просто смоделировал вашу картинку). Теперь что касается самого выбора - а в чем сложность аналогичным образом выбирать поля? Здесь вам просто определиться с самим базовым запросом в котором эти выбранные поля будут участвовать - т.е. набросать себе сам запрос со всеми возможными полями - проверить работоспособность - и если все устраивает - то переписать его уже через макроподстановку выбранных полей. вот вам примерчик на основе предыдущей формы ... |
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
ptaxa888 Автор Сообщений: 61 Дата регистрации: 07.03.2018 |
Запросик какой-никакой но рабочий имеется
Исправлено 1 раз(а). Последнее : ptaxa888, 10.03.18 16:30 |
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
Громоздкое у вас формирование списков.
Попробуйте так - добавьте в LISTBOX-ы еще два столбца для полей и таблиц соответмтвенно и формируйте строки в цикле.
Исправлено 1 раз(а). Последнее : lulgu, 10.03.18 19:48 |
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
ptaxa888 Автор Сообщений: 61 Дата регистрации: 07.03.2018 |
Всё получилось, спасибо всем большое. Пошел по пути Andy и Аспида. Хотелось уйти от создания курсора Fields в Load формы, а брать данные уже из заполненной table1.dbf с аналогичными полями и данными. Подскажите-помогите пожалуйста как. В builder подключаю поле table1.sname для Listbox1, отображает вложенные атрибуты но не кидает в listbox2. В свою очередь addchoice имеет структуру:
Исправлено 1 раз(а). Последнее : ptaxa888, 11.03.18 17:29 |
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
AndyNigmatec Сообщений: 1574 Откуда: Волгоград Дата регистрации: 28.06.2015 |
Ну что вы - это ж я от балды для примера вам набросал ... у вас свои данные, своя логика приложения - а пример - он просто для демонстрации того о чем вам писали.
- открою вам маааленький секрет - работа с курсором мало отличается от работы с реальной таблицей. Хотя чем вам курсор не нравится - временная табла, твори что хошь ))). Вот в нашем примере: открываем вашу заполененную таблу и выбираем из нее в курсор - делов то
- я бы не советовал всякими билдерами пользоваться - по мне так лучше вручную прописать нужное свойство - оно как-то спокойнее и надежнее Исправлено 8 раз(а). Последнее : AndyNigmatec, 11.03.18 20:32 |
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
ptaxa888 Автор Сообщений: 61 Дата регистрации: 07.03.2018 |
[quote AndyNigmatec]Ну что вы - это ж я от балды для примера вам набросал ... у вас свои данные, своя логика приложения - а пример - он просто для демонстрации того о чем вам писали.
[quote ptaxa888]Хотелось уйти от создания курсора Fields в Load формы, а брать данные уже из заполненной table1.dbf с аналогичными полями и даннымиХотелось уйти от создания курсора Fields в Load формы, а брать данные уже из заполненной table1.dbf с аналогичными полями и данными[/quote]- открою вам маааленький секрет - работа с курсором мало отличается от работы с реальной таблицей. Хотя чем вам курсор не нравится - временная табла, твори что хошь ))). Вот в нашем примере: открываем вашу заполененную таблу и выбираем из нее в курсор - делов то
|
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
Непонятно, зачем к Mover нужен курсор - в нем ведь уже сидят выбранные данные.
|
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
ptaxa888 Автор Сообщений: 61 Дата регистрации: 07.03.2018 |
Форма реализована на listbox'сах, не mover. |
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
mover - это и есть пара листбоксов, кнопки перемещения элементов между ними, возможно поддержка drag'n'drop (перетаскивания мышкой из одного в другой).
Для удобства оформляют всё это хозяйство как класс, и потом, когда надо, просто бросают на форму уже готовый "комплект", а не занимаются копированием объектов и кода из какой-то "формы где такое уже было". В этом и заключается ООП подход - именно так в нём повторно используется код. ------------------ WBR, Igor |
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
ptaxa888 Автор Сообщений: 61 Дата регистрации: 07.03.2018 |
[quote ptaxa888][quote AndyNigmatec][quote ptaxa888]любом случае разбираться как сделать динамический запрос собранный из данных listbox2, как ни крути[/quote]
- а чего тут разбираться - то же самое (я про SQL-запрос) что руками в коде пишете, тока записанный программно в строку-переменную. Фокс позволяет вообще отдельные блоки кода (программы) таким образом запускать-выполнять - главное не увлекаться а использовать там и тогда когда это действительно оправдано - например, в вашем случае, это на мой взгляд самый простой путь. Технически реализация создания/склеивания/прочее этой строки ничего сложного не представляет, ну вот простой как топор пример:
ну или как у вас на скрине с листбоксами (хотя я предпочитаю гриды) - тоже только для примера - прикрепил форму[/quote] Было две задачи: 1. Формирование запроса по всем полям (вывод всех полей но с фильтром по одному из полей) поиск организован через LOCATE 2. Формирование курсора (без условий отбора) 1+2. Теперь все объединяется в одну задачу. Как построить условие &lcWhere когда оно имеет следующий вид: Условие: lcWhere=[ where a+c+b] Где a=thisform.combo1.value (в combo1 будут сидеть данные из Fields.sname b=thisform.text1.value (искомый текст,дата) c=thisform.combo2.value (вложены операторы =,!=,>,<) Задача: задаём поле поиска, задаём оператор писка и искомый текст в базе. Затем определяем поля для вывода и выводим в курсор. Как я понимаю для lcWhere проводим туже процедуру как и для формирования lcScript в selbrowse Вашей формы. Не знаю синтаксиса для формирования lcWhere=[ where a+c+b] Исправлено 1 раз(а). Последнее : ptaxa888, 12.03.18 19:12 |
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
AndyNigmatec Сообщений: 1574 Откуда: Волгоград Дата регистрации: 28.06.2015 |
lcWhere - в примере я просто так переменную обозвал ...
теперь к сути - вам нужно установить условие отбора - т.е. то что в sql-запросе будет после ключевого слова where - ну так напишите сначала (и заодно проверьте работоспособность) тупо в тестовой prg-ке пару вариантов своего запроса - а как убедитесь что все работает как задумано - переложите уже в приложение в динамическое формирование ... вот этого у вас:
я пока не смог расшифровать, уж не обессудьте ))) SELECT ... FROM ... WHERE [вот тут и пересчиляем наши условия отбора записей] в простейшем виде условия - это - условие1 AND/OR условие2 AND/OR условие3 ... и т.п. давайте в студию текст запроса к котрому вы хотите прикрутить - where a+c+b - будет понятнее Исправлено 1 раз(а). Последнее : AndyNigmatec, 12.03.18 20:35 |
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Locate не делает фильтрации - он лишь перемещает указатель на первую подходящую запись - в гриде/бровзе/при экспорте всё равно будут все записи. Фильтр можно сделать по старому, через SET FILTER или опции FOR в соответствующих командах вывода (BROWSE/EXPORT/COPY TO), но лучше запросом с WHERE - потом такой отфильтрованный курсор уже можно показывать/экспортировать - всё что угодно делать. Так и построить.
В принципе, конечно, можно и в строку запроса вместо + "m.filterValue" написать + "ThisForm.txtFilter.Value" - если в Value этого элемента будет обеспечен надлежащий тип данных. Но лучше всё же через промежуточную переменную работать. Главное обеспечить её видимость в строке с командой SELECT - это если вдруг строка условия, переменная со значением и сам SELECT находятся в разных методах. Есть вариант преобразовывать значение в литерал. Т.е. чтобы в переменной lcWhere получалась строка вида tbl1.someString>="Иванов"или tbl1.someNumber=123или tbl1.someDate<DATE(2018,3,12)но это чуть больше кода, чуть сложнее логика построения (особенно для строк, где внутри строки надо как-то с кавычками которые пользователь может ввести разбираться). В общем я такой вариант не рекомендую. ------------------ WBR, Igor |
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
ptaxa888 Автор Сообщений: 61 Дата регистрации: 07.03.2018 |
Для понимания друг-друга решил не менять переменные, итак сложно понять что я тут пишу Вот код selbrowse формирования таблицы (всё рабоатет вопросов к нему нет):
Вот код который содержится в форме запроса, но там использовались не динамические запросы, теперь то от этого и нужно уйти.
|
Re: Вывод БД на экран по реквизитам содержащихся в ListBox. | |
---|---|
ptaxa888 Автор Сообщений: 61 Дата регистрации: 07.03.2018 |
Прошу прощения, locate у меня работает на поиск значения в dbf. Фильтр (where)находится в самом запросе. Завтра буду разбираться с Вашими подсказками, спасибо, но силы оставляют меня на сегодня Исправлено 2 раз(а). Последнее : ptaxa888, 12.03.18 23:14 |
© 2000-2024 Fox Club  |