Проблема блокировки клавиатуры на время выполнения процедуры | |
---|---|
proit69 Автор Сообщений: 12 Дата регистрации: 10.12.2017 |
Здравствуйте.
Программист по FoxPro задал мне вопрос почему перестала работать(неожиданно)его команда по отключению клавиатуры на время выполнения процедур в FoxPro.Скрин кода по ссылке. screenshot.ru Он говорит за 10 лет у него это случалось 1 раз когда Windows была не Professional версии.У нас версия Prof.Вчера работало сегодня уже нет. С его слов что в строчке BlockInput должна быть единичка а не ноль.Помогите пожалуйста разобраться. |
Re: Проблема блокировки клавиатуры на время выполнения процедуры | |
---|---|
pasha_usue Сообщений: 3650 Откуда: Е-бург Дата регистрации: 06.10.2006 |
Программист, говорите? А что, GetLastError он не в состоянии прочитать?
А по-существу. Программа с правами админа запущена? |
Re: Проблема блокировки клавиатуры на время выполнения процедуры | |
---|---|
pasha_usue Сообщений: 3650 Откуда: Е-бург Дата регистрации: 06.10.2006 |
А вообще. Простите, конечно, что встреваю. Вы лучше как-нибудь программиста поменяйте. У вас очень неудачная прокладка между сидением и монитором. Судя по тем двум кускам кода, которые вы на форуме выкладывали.
|
Re: Проблема блокировки клавиатуры на время выполнения процедуры | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
По существу будет вопрос нах*** блокировать ввод? Что такого делает эта "процедура", что нужно из за неё всю систему раком ставить?
Для фокса вполне достаточно настроек SET ESCAPE и/или обработки ON ESCAPE - если уж надо "по своему" реагировать на нажатие esc, не прерывая аварийно программу. Впрочем, для автора PUBLIC VOZV и DO C:\продажа\запись.fxp сии вопросы не актуальны - там нужно совсем другой вопрос ставить ------------------ WBR, Igor |
Re: Проблема блокировки клавиатуры на время выполнения процедуры | |
---|---|
proit69 Автор Сообщений: 12 Дата регистрации: 10.12.2017 |
Запущена с правами админа.Он директор не вижу возможностей его поменять))давать ему инструкции по поводу его кода я не могу.
FoxPro 7 версии Исправлено 1 раз(а). Последнее : proit69, 28.12.17 13:51 |
Re: Проблема блокировки клавиатуры на время выполнения процедуры | |
---|---|
pasha_usue Сообщений: 3650 Откуда: Е-бург Дата регистрации: 06.10.2006 |
Вот прямо правой кнопкой мыши щелкнуто и "запускать от имени администратора"? Для этой функции прямо очень высокие права надо. Попробуйте UAC отключите совсем. Помирать, так с музыкой. |
Re: Проблема блокировки клавиатуры на время выполнения процедуры | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Есть еще CLEAR TYPEAHEAD - стирает нажатые клавиши в очереди, которые не обработаны остались в процессе работы долгой программы. Т.е. после долгой процедуры издать такую команду
|
Re: Проблема блокировки клавиатуры на время выполнения процедуры | |
---|---|
proit69 Автор Сообщений: 12 Дата регистрации: 10.12.2017 |
UAC отключен программа запускается с правами админа это выставлено в параметрах запуска соответствующей галочкой.
На компе сделаны все настройки на 10 компах одинаковы на остальных все работает и на этом работало еще вчера а сегодня уже нет. |
Re: Проблема блокировки клавиатуры на время выполнения процедуры | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Даже комп не выдержал и решил таки сказать вашему директору что он долб***б
Вали пока не поздно с такой "конторы". Цитата: ------------------ WBR, Igor |
Re: Проблема блокировки клавиатуры на время выполнения процедуры | |
---|---|
descent52_tmp Сообщений: 214 Откуда: Саров Дата регистрации: 20.11.2014 |
Igor Korolyov, а что делать вот с этим? Тоже валить, поднимая пыль, роняя калл?
|
Re: Проблема блокировки клавиатуры на время выполнения процедуры | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
"В принципе" делать "одну таблицу - универсальный справочник" вполне себе можно (хотя минусов в этом способе тоже предостаточно). Только не так как описано. Как минимум в ней не должно быть полей специфичных для "конкретных сущностей" (обычно такого рода таблицу делают из полей id/table_id/name), и уж точно id не должен называться id_otdel Равно как и не ясен смысл разделения "наименования" на 2 отдельных поля...
------------------ WBR, Igor |
Re: Проблема блокировки клавиатуры на время выполнения процедуры | |
---|---|
descent52_tmp Сообщений: 214 Откуда: Саров Дата регистрации: 20.11.2014 |
Искренне тебе, Игорь, желаю никогда не встретиться с подобной бредятиной в работе, потому что понять некий код это одно, а понять логику - да вот к..й вам, а не золотая рыбка, это другое. Втыкать, почему тут id_str=2, а тут id_str=3 и т.д., a не A.id_str=B.id_str, да лопатой по башке автору ..уть пару раз, может автор начнёт кислое от длинного отличать... Паразитизм хорош только для паразита, одно дело по незнанию, и совсем другое дело осознанно такое писать |
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 символов - всё же место следует экономить ). На самом деле "работа" с такой таблицей не является "ужасно сложной и/или неудобной". Твой запрос переформулировался бы в вид:
Для чего это может быть полезно - разговор отдельный Когда в БД число таблиц переваливает за тысячу, то плодить ещё сотню "шаблонных" примитивов (id,name) да ещё и всего по 3-4 записи в каждой уже не кажется хорошей идеей. И когда "новые сущности" могут появляться динамически (т.е. без изменения кода ПО и структуры БД) - тут тоже без подобного "универсализма" не обойтись. Есть и другие "соображения". Конечно же далеко не ВСЕ сущности предметной области (т.е. грубо говоря таблицы) таким образом "универсализированы". ------------------ WBR, Igor |
Re: Проблема блокировки клавиатуры на время выполнения процедуры | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Я не понял идеи. Ты можешь изложить идею (ее плюсы) иерархически, начиная с самой простой конструкции?
|
Re: Проблема блокировки клавиатуры на время выполнения процедуры | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Может быть после НГ, если не пропадёт желание
Тезисно, это решение нескольких вопросов: 1) уменьшить число таблиц в БД - за счёт "тривиальных справочников id/name". 2) возможность "динамически создавать" такиого рода справочники (без изменения кода ПО и структуры БД). 3) позволить унифицированным образом навешивать некоторый функционал на "серьёзные" справочники (те же организации/сотрудников/работы) - в частности иерархии (при том множественные - т.е. одни и те же элементы складывать в разные деревья) и всякие "левые признаки" (бизнес-логика эта та ещё дуристика, бывает надо к той же организации прилепить кучку признаков "своя/соседская/чужая", "хорошая/плохая", "производитель/потребитель/посредник" и т.п.) 4) позволяет в некоторых местах ссылаться на РАЗНОТИПНЫЕ объекты. Это известная проблема - как, к примеру, в "договоре" сделать ссылку либо на организацию, либо на человека - физлицо, если они в разных таблицах хранятся. Два поля и контроль что "одно и только одно" из них заполнено? А если нужно на 3 разных сущности сослаться ещё поле добавить? В объектной модели это решается через интерфейс либо базовый класс (свойство принимающее объект разного "реального" типа), в реляционной - не решается никак. Не, ну есть вариант хранить id и рядом "имя таблицы" на которую идёт ссылка - только это гораздо более кривой вариант. может ещё что, с ходу не вспомню уж На самом деле есть такой хитрый подход к хранению "объектов" в реляционной БД, когда ЛЮБЫЕ сущности укладываются грубо говоря в 3-4 "абсолютно универсальные" таблицы "объект"/"свойство"/"связь". Он очень, нет ОЧЕНЬ неэффективен (любой мало-мальский запрос вынуждает соединять эти таблицы по 100 раз - просто чтобы достать все нужные "свойства"). Так что тут некоторый компромисс - "в целом" реляционная модель, а всякие "мелочи" (там где потеря производительности не очень страшна) универсализированы. ------------------ WBR, Igor |
Re: Проблема блокировки клавиатуры на время выполнения процедуры | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
опять длинная словесная конструкция, в 2 абзаца... Я ниче не понял (идею, 2х словесную, + расширение... ну куда уж...)ТС наверное поймет лучше
|
Re: Проблема блокировки клавиатуры на время выполнения процедуры | |
---|---|
PaulWist Сообщений: 14625 Дата регистрации: 01.04.2004 |
Пример: есть справочник "Тип документа" содержащий поля 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 |
Re: Проблема блокировки клавиатуры на время выполнения процедуры | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Как хранить разные "сущности" в одной табличке, это и ТС догадался. Вы с Игорем только вербализируете это способ во много абзацев текста описания...
|
Re: Проблема блокировки клавиатуры на время выполнения процедуры | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Вообще-то это было лишь 2 пункта из 4-х. И исторически они как раз "последние" были, а не первые
------------------ WBR, Igor |
Re: Проблема блокировки клавиатуры на время выполнения процедуры | |
---|---|
Ydin Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
У нас в бухгалтерии пообъектный учет в проводках.
Сущности - здания, сотрудники, машины, ... Для каждого вида сущности табличка ID, Name, ... У некоторых Parent для дерева. Еще таблица, где минимально описаны сами эти таблицы, типа Prefix,Name. Поле в журнале проводок типа Object C(24) имеет вид Dep52 или Car719,... Для ввода/редактирования в гриде для этого поля хитрый двойной комбобокс, точнее контейнер с 2-мя комбами. Они в 2 этажа. Он появляется только на фокусе. Это уже детали интерфейса. А с таблицами просто с самими сущностями. Давно работает. Сложное только в интерфейсном решении, но 1 раз сделано и все. |
© 2000-2024 Fox Club  |