powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Нужен Help по Set Filter
15 сообщений из 15, страница 1 из 1
Нужен Help по Set Filter
    #33337066
AlikWishin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток всем Лисоводам.

Помогите, запутался окончательно!

Есть таблицы OB_PD(сопроводительные документы->IDS-Primary Key) и OB_PP(состав проводок по сопров.документу IDS->Foreign Key Relation OB_PD)

В таблице OB_PD Есть записи:
IDS, Организация, док-т, дата, Номер

В таблице OB_PP на каждую сточку повешено несколько записей Типа
IDS, 1- приходный ордер №1, Склад №1, Дебет, Кредит, сумма
IDS, 1- приходный ордер №2, Склад №2, Дебет, Кредит, сумма
IDS, 2- НДС, <Пусто>, Дебет, Кредит, сумма
IDS, 3- Транспортные затраты, <Пусто>, Дебет, Кредит, сумма

др. словами на один сопроводительный документ(Входящая на предприятие накладная-товарная, отгрузочноя,...) много внутрених приходных документов на разные склады, и всякие НДС и трансп., Дополнит. расходы(для которых не заполнено поле СКЛАД).

Нашим драгоценным бухгалтерам, хочется видеть свои склады.

все хорошо пишу след код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
...
Set Filter To OB_PP.NS	==	<Заданый склад> In OB_PP
Go Top In OB_PP
llOk	=	.T.
Do While	!Eof('OB_PP')
	If	llOk
		Execscript("Set Filter To IDS == '"+(OB_PP.IDS)+"' in OB_PD")
		llOk	=	.F.
	Else
		Execscript("Set Filter To "+Filter('OB_PD')+" .Or. IDS == '"+(OB_PP.IDS)+"' in OB_PD")
	Endif
	Skip In OB_PP
Enddo
...

Вроде бы все отрабатывало нормально пока в поле IDS не появились симолы (") или ('). Убрать их уже нельзя.
А система ругаеться.
Не знаю как быть!

Зарание спасибо за подсказки и советы!!!
с Ув. Алик
...
Рейтинг: 0 / 0
Нужен Help по Set Filter
    #33337092
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если трабла с закарючками то так:

...
Set Filter To OB_PP.NS == <Заданый склад> In OB_PP
Go Top In OB_PP
llOk = .T.
Do While !Eof('OB_PP')
If llOk
Execscript("Set Filter To IDS == "+"'"+(OB_PP.IDS)+"'"+" in OB_PD")
llOk = .F.
Else
Execscript("Set Filter To "+Filter('OB_PD')+" .Or. IDS == "+"'"+(OB_PP.IDS)+"'"+" in OB_PD")
Endif
Skip In OB_PP
Enddo
...
...
Рейтинг: 0 / 0
Нужен Help по Set Filter
    #33337095
dimka@ultra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
За давностью лет не помню, но возможно функция strtran() Вам поможет... А уж как Вы будете изголяться - замените ли двойные кавычки на одинарные или же наоборот будете в запросе убивать кавычки и апострофы - дело Вашего фкуса...
...
Рейтинг: 0 / 0
Нужен Help по Set Filter
    #33337116
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Для выделения символьных строк использовать [] вместо кавычек

Зачем Execscript?
...
Рейтинг: 0 / 0
Нужен Help по Set Filter
    #33337126
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Burn
А можно об этом поподробней, впервые о таком слышу ([]).
...
Рейтинг: 0 / 0
Нужен Help по Set Filter
    #33337157
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто в Фоксе (уже не помню с какой версии) возможны три символа для задания символьных строк - кавычки, двойные кавычки и квадратные скобки:
m_str='Строка'
? m_str
m_str="Строка"
? m_str
m_str=[Строка]
? m_str
...
Рейтинг: 0 / 0
Нужен Help по Set Filter
    #33337182
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Burn
Ага, ясно. А Execscript что делает?
...
Рейтинг: 0 / 0
Нужен Help по Set Filter
    #33337236
AlikWishin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Недоходящий:
Код: plaintext
1.
2.
ExecScript(<Символьная строка>)
<Символьная строка> - Команда(ы) фокса
Выполняет эту строку.

To Burn:
Спасибо попробую, но проблемы не снимает, при условии наличия символов ([) и/или (]) в IDS

Можно конечно ловить их на наличие в IDS? но и это не спасет при наличии всех трех т.е. ('), ("), ([)и/или(]).
...
Рейтинг: 0 / 0
Нужен Help по Set Filter
    #33337266
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 AlikWishin
тебе нужно создать только строку фильтра и исполнить ее, так?
...
Рейтинг: 0 / 0
Нужен Help по Set Filter
    #33337286
AlikWishin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Недоходящий2 AlikWishin
тебе нужно создать только строку фильтра и исполнить ее, так?

Мне нужно отфильтровать верхнюю таблицу по списку IDS, который можно получить только из нижней таблицы.
...
Рейтинг: 0 / 0
Нужен Help по Set Filter
    #33337378
AlikWishin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поднял исходники формирования значения поля IDS!!!!

IDS Character 9

Значения Chr(от 0 то 255) в каждом байте.
Так что символы ', ",[,] - и их комбинации будут попадаться!!!

:-( вот такая не веселая история.
...
Рейтинг: 0 / 0
Нужен Help по Set Filter
    #33337489
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда. Получается никак. Нужен хоть один лишний символ, не используемый в ключе, для разделителя - тогда просто можно былобы сформировать длиную строку, разделая значения поля своим разделителем а потос строить фильтр по AT() или $
...
Рейтинг: 0 / 0
Нужен Help по Set Filter
    #33337766
AlikWishin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выход кажеться нашел!
Вставлю в верхнюю талицу служебное поле, ну например : Show Logical 1

И дальше приблизительно так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
...
Set Filter To OB_PP.NS==<Заданый склад> In OB_PP
Go Top In OB_PP
Update OB_PD Set Show = .F.
Do While!Eof('OB_PP')
   If IndexSeek(OB_PP.IDS, .T., 'OB_PD', 'IDS')
      Ob_PD.Show = .T.
   end
   Skip In OB_PP
End
Set filter OB_PD.Show == .T. In OB_PD
...
Рейтинг: 0 / 0
Нужен Help по Set Filter
    #33346423
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi AlikWishin!

1) STRCONV(таблица1.плохое_поле,13) = STRCONV(таблица2.плохое_поле,13) - или
15 для VFP9 - без разницы.
2) Фильтры совместно с гридами - есть зло :(

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Нужен Help по Set Filter
    #33346873
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ага, вижу фильтр в проге
начинаю злиться и плеваться
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Нужен Help по Set Filter
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]