:: Visual Foxpro, Foxpro for DOS
Проблема блокировки клавиатуры на время выполнения процедуры
proit69
Автор

Сообщений: 12
Дата регистрации: 10.12.2017
Здравствуйте.
Программист по FoxPro задал мне вопрос почему перестала работать(неожиданно)его команда по отключению клавиатуры на время выполнения процедур в FoxPro.Скрин кода по ссылке.
screenshot.ru
Он говорит за 10 лет у него это случалось 1 раз когда Windows была не Professional версии.У нас версия Prof.Вчера работало сегодня уже нет.
С его слов что в строчке BlockInput должна быть единичка а не ноль.Помогите пожалуйста разобраться.
Ratings: 0 negative/0 positive
Re: Проблема блокировки клавиатуры на время выполнения процедуры
pasha_usue

Сообщений: 3650
Откуда: Е-бург
Дата регистрации: 06.10.2006
Программист, говорите? А что, GetLastError он не в состоянии прочитать?

А по-существу. Программа с правами админа запущена?
Ratings: 0 negative/1 positive
Re: Проблема блокировки клавиатуры на время выполнения процедуры
pasha_usue

Сообщений: 3650
Откуда: Е-бург
Дата регистрации: 06.10.2006
А вообще. Простите, конечно, что встреваю. Вы лучше как-нибудь программиста поменяйте. У вас очень неудачная прокладка между сидением и монитором. Судя по тем двум кускам кода, которые вы на форуме выкладывали.
Ratings: 0 negative/2 positive
Re: Проблема блокировки клавиатуры на время выполнения процедуры
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
По существу будет вопрос нах*** блокировать ввод? Что такого делает эта "процедура", что нужно из за неё всю систему раком ставить?
Для фокса вполне достаточно настроек SET ESCAPE и/или обработки ON ESCAPE - если уж надо "по своему" реагировать на нажатие esc, не прерывая аварийно программу.
Впрочем, для автора
PUBLIC VOZV и DO C:\продажа\запись.fxp
сии вопросы не актуальны - там нужно совсем другой вопрос ставить


------------------
WBR, Igor
Ratings: 0 negative/1 positive
Re: Проблема блокировки клавиатуры на время выполнения процедуры
proit69
Автор

Сообщений: 12
Дата регистрации: 10.12.2017
Запущена с правами админа.Он директор не вижу возможностей его поменять))давать ему инструкции по поводу его кода я не могу.
FoxPro 7 версии



Исправлено 1 раз(а). Последнее : proit69, 28.12.17 13:51
Ratings: 0 negative/0 positive
Re: Проблема блокировки клавиатуры на время выполнения процедуры
pasha_usue

Сообщений: 3650
Откуда: Е-бург
Дата регистрации: 06.10.2006
proit69
Запущена с правами админа.Он директор не вижу возможностей его поменять))давать ему инструкции по поводу его кода я не могу.
FoxPro 7 версии
Вот прямо правой кнопкой мыши щелкнуто и "запускать от имени администратора"? Для этой функции прямо очень высокие права надо.

Попробуйте UAC отключите совсем. Помирать, так с музыкой.
Ratings: 0 negative/1 positive
Re: Проблема блокировки клавиатуры на время выполнения процедуры
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Есть еще CLEAR TYPEAHEAD - стирает нажатые клавиши в очереди, которые не обработаны остались в процессе работы долгой программы. Т.е. после долгой процедуры издать такую команду
Ratings: 0 negative/1 positive
Re: Проблема блокировки клавиатуры на время выполнения процедуры
proit69
Автор

Сообщений: 12
Дата регистрации: 10.12.2017
UAC отключен программа запускается с правами админа это выставлено в параметрах запуска соответствующей галочкой.
На компе сделаны все настройки на 10 компах одинаковы на остальных все работает и на этом работало еще вчера а сегодня уже нет.
Ratings: 0 negative/0 positive
Re: Проблема блокировки клавиатуры на время выполнения процедуры
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Даже комп не выдержал и решил таки сказать вашему директору что он долб***б
Вали пока не поздно с такой "конторы".

Цитата:
Беда, коль пироги начнет печи сапожник,
А сапоги тачать пирожник,
И дело не пойдет на лад.
Да и примечено стократ,
Что кто за ремесло чужое браться любит,
Тот завсегда других упрямей и вздорней:
Он лучше дело всё погубит,
И рад скорей
Посмешищем стать света,
Чем у честных и знающих людей
Спросить иль выслушать разумного совета.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Проблема блокировки клавиатуры на время выполнения процедуры
descent52_tmp

Сообщений: 214
Откуда: Саров
Дата регистрации: 20.11.2014
Igor Korolyov
Даже комп не выдержал и решил таки сказать вашему директору что он долб***б Вали пока не поздно с такой "конторы".

Igor Korolyov, а что делать вот с этим? Тоже валить, поднимая пыль, роняя калл?
CREATE CURSOR test (Id_otdel int, Id_str int, NumStr1 char(50), NumStr2 char (50), id_glaz int, id_pol int, id_rost int)
INSERT INTO test (Id_otdel, Id_str, NumStr1, NumStr2, id_glaz, id_pol, id_rost) VALUES (1, 1, 'Иванов', 'Иван Ивыныч',1,1,1)
INSERT INTO test (Id_otdel, Id_str, NumStr1, NumStr2, id_glaz, id_pol, id_rost) VALUES (1, 1, 'Петров', 'Иван Ивыныч',2,1,2)
INSERT INTO test (Id_otdel, Id_str, NumStr1, NumStr2, id_glaz, id_pol, id_rost) VALUES (1, 1, 'Сидоров', 'Иван Ивыныч',2,2,1)
INSERT INTO test (Id_otdel, Id_str, NumStr1, NumStr2, id_glaz, id_pol, id_rost) VALUES (1, 1, 'Путенков', 'Иван Ивыныч',1,2,2)
INSERT INTO test (Id_otdel, Id_str, NumStr1, NumStr2, id_glaz, id_pol, id_rost) VALUES (1, 2, 'глаза-', 'голубые',0,0,0)
INSERT INTO test (Id_otdel, Id_str, NumStr1, NumStr2, id_glaz, id_pol, id_rost) VALUES (2, 2, 'глаза-', 'карие',0,0,0)
INSERT INTO test (Id_otdel, Id_str, NumStr1, NumStr2, id_glaz, id_pol, id_rost) VALUES (1, 3, 'пол', 'мужской',0,0,0)
INSERT INTO test (Id_otdel, Id_str, NumStr1, NumStr2, id_glaz, id_pol, id_rost) VALUES (2, 3, 'пол', 'женский',0,0,0)
INSERT INTO test (Id_otdel, Id_str, NumStr1, NumStr2, id_glaz, id_pol, id_rost) VALUES (1, 4, 'рост', '170-180',0,0,0)
INSERT INTO test (Id_otdel, Id_str, NumStr1, NumStr2, id_glaz, id_pol, id_rost) VALUES (2, 4, 'рост', '160-170',0,0,0)
SELECT A.NumStr1 as fam, A.NumStr2 as nameotch, ;
B.NumStr1 as glaz, B.NumStr2 as tip_glaz, ;
C.NumStr1 as pol, C.NumStr2 as tip_pol, ;
D.NumStr1 as rost, D.NumStr2 as tip_rost FROM test A ;
left join test B on A.id_glaz=B.id_otdel AND B.id_str=2 ;
left join test C on A.id_pol=C.id_otdel AND C.id_str=3 ;
left join test D on A.id_rost=D.id_otdel AND D.id_str=4 ;
WHERE A.id_str=1 INTO CURSOR result
BROWSE normal
Ratings: 0 negative/0 positive
Re: Проблема блокировки клавиатуры на время выполнения процедуры
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
"В принципе" делать "одну таблицу - универсальный справочник" вполне себе можно (хотя минусов в этом способе тоже предостаточно). Только не так как описано. Как минимум в ней не должно быть полей специфичных для "конкретных сущностей" (обычно такого рода таблицу делают из полей id/table_id/name), и уж точно id не должен называться id_otdel Равно как и не ясен смысл разделения "наименования" на 2 отдельных поля...


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Проблема блокировки клавиатуры на время выполнения процедуры
descent52_tmp

Сообщений: 214
Откуда: Саров
Дата регистрации: 20.11.2014
Igor Korolyov
"В принципе" делать "одну таблицу - универсальный справочник" ...
Искренне тебе, Игорь, желаю никогда не встретиться с подобной бредятиной в работе, потому что понять некий код это одно, а понять логику - да вот к..й вам, а не золотая рыбка, это другое. Втыкать, почему тут id_str=2, а тут id_str=3 и т.д., a не A.id_str=B.id_str, да лопатой по башке автору ..уть пару раз, может автор начнёт кислое от длинного отличать... Паразитизм хорош только для паразита, одно дело по незнанию, и совсем другое дело осознанно такое писать
Ratings: 0 negative/0 positive
Re: Проблема блокировки клавиатуры на время выполнения процедуры
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
На самом деле у нас в системе подобный подход используется
Скажем есть таблица entity, в которой "смешались в кучу кони, люди" находятся абсолютно разные сущности - ну к примеру там есть организации, сотрудники, материалы, работы, объекты строительства и многое многое прочее, включая штуки очень сходные с "цвет глаз", "форма носа" и "пол".
Правда для большинства таких сущностей есть и "конкретизирующие" таблицы типа Organization, Employee, Material, Work... Там хранятся как раз все "специфичные" реквизиты. Т.е. в самой entity нет никаких id_glaz да id_pol. Плюс к тому в этих таблицах хранится/дублируется и собственно name - т.е. по большому счёту если нам нужен "точно сотрудник", то ходить к таблице entity для получения его реквизитов не требуется. Триггера обеспечивают и согласованное состояние между этими таблицами - в частности синхронное изменение поля name. Да, связаны они по id - т.е. скажем в таблице Organization поле id является одновременно и первичным ключом и внешним (со связью на Entity).
"Примитивные" сущности, где кроме как "название" и нет никаких более реквизитов, хранятся только в таблице entity - т.е. это в "чистом виде" универсальный справочник выходит.
Служебный реквизит отделяющий мух от котлет - поле discriminator, и оно строковое (хотя и урезано по размеру до 3 символов - всё же место следует экономить ).
На самом деле "работа" с такой таблицей не является "ужасно сложной и/или неудобной". Твой запрос переформулировался бы в вид:
select emp.id, emp.name, emp.age, eye.name eye_color, gender.name gender, height.name height_class
from employee emp
left join entity eye on eye.id = emp.eye_id and eye.discriminarot = 'EYE'
left join entity gender on gender.id = emp.gender_id and gender.discriminarot = 'GEN'
left join entity height on height.id = emp.height_id and height.discriminarot = 'HGH'
Я лично не вижу в этом особых проблем...

Для чего это может быть полезно - разговор отдельный
Когда в БД число таблиц переваливает за тысячу, то плодить ещё сотню "шаблонных" примитивов (id,name) да ещё и всего по 3-4 записи в каждой уже не кажется хорошей идеей. И когда "новые сущности" могут появляться динамически (т.е. без изменения кода ПО и структуры БД) - тут тоже без подобного "универсализма" не обойтись. Есть и другие "соображения".
Конечно же далеко не ВСЕ сущности предметной области (т.е. грубо говоря таблицы) таким образом "универсализированы".


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Проблема блокировки клавиатуры на время выполнения процедуры
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Я не понял идеи. Ты можешь изложить идею (ее плюсы) иерархически, начиная с самой простой конструкции?
Ratings: 0 negative/0 positive
Re: Проблема блокировки клавиатуры на время выполнения процедуры
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Может быть после НГ, если не пропадёт желание
Тезисно, это решение нескольких вопросов:
1) уменьшить число таблиц в БД - за счёт "тривиальных справочников id/name".
2) возможность "динамически создавать" такиого рода справочники (без изменения кода ПО и структуры БД).
3) позволить унифицированным образом навешивать некоторый функционал на "серьёзные" справочники (те же организации/сотрудников/работы) - в частности иерархии (при том множественные - т.е. одни и те же элементы складывать в разные деревья) и всякие "левые признаки" (бизнес-логика эта та ещё дуристика, бывает надо к той же организации прилепить кучку признаков "своя/соседская/чужая", "хорошая/плохая", "производитель/потребитель/посредник" и т.п.)
4) позволяет в некоторых местах ссылаться на РАЗНОТИПНЫЕ объекты. Это известная проблема - как, к примеру, в "договоре" сделать ссылку либо на организацию, либо на человека - физлицо, если они в разных таблицах хранятся. Два поля и контроль что "одно и только одно" из них заполнено? А если нужно на 3 разных сущности сослаться ещё поле добавить? В объектной модели это решается через интерфейс либо базовый класс (свойство принимающее объект разного "реального" типа), в реляционной - не решается никак. Не, ну есть вариант хранить id и рядом "имя таблицы" на которую идёт ссылка - только это гораздо более кривой вариант.
может ещё что, с ходу не вспомню уж

На самом деле есть такой хитрый подход к хранению "объектов" в реляционной БД, когда ЛЮБЫЕ сущности укладываются грубо говоря в 3-4 "абсолютно универсальные" таблицы "объект"/"свойство"/"связь". Он очень, нет ОЧЕНЬ неэффективен (любой мало-мальский запрос вынуждает соединять эти таблицы по 100 раз - просто чтобы достать все нужные "свойства"). Так что тут некоторый компромисс - "в целом" реляционная модель, а всякие "мелочи" (там где потеря производительности не очень страшна) универсализированы.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Проблема блокировки клавиатуры на время выполнения процедуры
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
опять длинная словесная конструкция, в 2 абзаца... Я ниче не понял (идею, 2х словесную, + расширение... ну куда уж...)ТС наверное поймет лучше
Ratings: 0 negative/0 positive
Re: Проблема блокировки клавиатуры на время выполнения процедуры
PaulWist

Сообщений: 14625
Дата регистрации: 01.04.2004
of63
... Я ниче не понял ...

Пример: есть справочник "Тип документа" содержащий поля TypeDoc_ID, Name, так же есть справочник "Должности" с полями Appointment_ID, Name, ну и до кучи справочник валют с полями TypeCurrency_ID, Name.
Что общего у этих справочников - это структура данных ID, Name.

Что напрашивается сделать - поместить все три справочника в одну таблицу, поскольку структура у них одинаковая.
Какие выгоды это даст - можно создавать любое количество справочников с таким типом данных, те юзеру не нужны права на create/alter/drop table, а достаточно прав на Insert/Update/Delete одной таблицы (вернее двух).

Таким образом, структура данных из множества таблиц вырождается в две таблички:
таблица метаданных - Dictionary (ID primary key, Name) это название справочников ("Тип документа", "Должности", "Валюты" итд).

И табличка самих данных DictDetails (ID primary key, Dictionary_ID foreing key on Dictionary (ID), Name) это Директор, Дворник, Рубли, Юани, Договор, Заявка итд.

PS Вроде Игорь "разжевал на пальцах".

PSS Аналогичную структуру использует всё "конфигурируемое" ПО (1С, Навижен, Аксапта итд)


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)




Исправлено 2 раз(а). Последнее : PaulWist, 30.12.17 01:31
Ratings: 0 negative/0 positive
Re: Проблема блокировки клавиатуры на время выполнения процедуры
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Как хранить разные "сущности" в одной табличке, это и ТС догадался. Вы с Игорем только вербализируете это способ во много абзацев текста описания...
Ratings: 0 negative/0 positive
Re: Проблема блокировки клавиатуры на время выполнения процедуры
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Вообще-то это было лишь 2 пункта из 4-х. И исторически они как раз "последние" были, а не первые


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Проблема блокировки клавиатуры на время выполнения процедуры
Ydin

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
У нас в бухгалтерии пообъектный учет в проводках.
Сущности - здания, сотрудники, машины, ...
Для каждого вида сущности табличка ID, Name, ...
У некоторых Parent для дерева.
Еще таблица, где минимально описаны сами эти таблицы, типа
Prefix,Name.
Поле в журнале проводок типа Object C(24) имеет вид
Dep52 или Car719,...

Для ввода/редактирования в гриде для этого поля хитрый двойной комбобокс, точнее контейнер с 2-мя комбами. Они в 2 этажа.
Он появляется только на фокусе. Это уже детали интерфейса.
А с таблицами просто с самими сущностями.
Давно работает. Сложное только в интерфейсном решении, но 1 раз сделано и все.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 34 Burn  (Гостей: 33)

© 2000-2024 Fox Club 
Яндекс.Метрика