powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / код кнопок "добавить" "удалить" "изменить"
46 сообщений из 46, показаны все 2 страниц
код кнопок "добавить" "удалить" "изменить"
    #34418116
Neta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравтствуйте, просьба помочь с написанием перечисленных выше кнопок. в кнопке добавить написала Append Blank, конечно работает. при желании отменить добавление написала в коде TableRevert(), не работает выдает ошибку function requires row or table buffering mode. Как правильно должен выглядить код?????
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34418172
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
посмотрите,
можно сделать вот так
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34418310
Neta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А где посмотреть код кнопок да и сами кнопки??? Мне б просто в обработчике события Click у кнопки написать код.
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34418576
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
все просто

1. открываете проект
2. находите нужный класс
3. смотрите код
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34418614
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторМне б просто в обработчике события Click у кнопки написать код

просто не получится
если Вы решили связаться с TableRevert()

то и должны правильно поднять буферизованный курсор
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34418668
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе, можно и проще. Указать буферизацию собственно таблицы-источника.

В DataEnvironment формы правой кнопкой мыши по таблице - пункт меню Properties - в открывшемся окне Properties установить свойство

BuferModeOverride = 5

Следует только понимать, что при буферизации данных любые модификации происходят сначала в буфере таблицы. Чтобы сбросить изменения из буфера в исходные таблицы надо дать команду TableUpdate(). Это же правило относится и к созданию новых записей.

Т.е. по APPEND BLANK Вы увидите новую запись, но пока не сделаете TableUpdate() эта запись не попаде в исходную таблицу.

Хотя, опять же, в общем случае, прямая модификация таблиц, пусть и с буферизацией, в реальных программах вещь достаточно редкая. Обычно все-таки делают выборку из таблиц-источников и работают с этой выборкой. Пример, приведенный alex11100 - это как раз и есть "общий случай".
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34418742
Neta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! При исправлении в DataEnviroment, отмена при добавлении заработала. Теперь вопрос: как запись правильно удалять, причем совсем (физически).
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34418777
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Теперь вопрос: как запись правильно удалять, причем совсем (физически).

А ЗАЧЕМ, позвольте полюбопытсвовать? Чем Set delete on не нравиться?
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34418812
Neta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну он же просто помечает запись на удаление. (если я не ошибаюсь), а мне нужно совсем чтоб удалялась. Это у меня курсовая работа такая.
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34418847
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Независимо от "курсовости" работы, еще раз - чем не нравится Set delete on? Помеченные на удаление записи где-то показываются, обрабатываются? Они чем-то мешают? Или есть подозрение, что такой способ удаления придумали придурки от нечего делать?
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34418868
Neta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! Удаление тож заработало при помоши Set Deleted on
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34418871
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Sizov.Независимо от "курсовости" работы, еще раз - чем не нравится Set delete on? Помеченные на удаление записи где-то показываются, обрабатываются? Они чем-то мешают? Или есть подозрение, что такой способ удаления придумали придурки от нечего делать?
Ну зачем так категорично про "придурки".
1. Размер файла
2. SELECT - SQL их "видит".
С уважением, Алексей.
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34418880
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34418887
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey-K2. SELECT - SQL их "видит".
При настройке SET DELETED ON - не видит.
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34418891
Neta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подозрения были, что эта запись будет снова отображаться при перезапуске программы, сейчас они развеялись. просто раньше не работало. При использовании команды Delete возникала ошибка trigger failed, сейчас ошибка не возникает.
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34418905
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2. SELECT - SQL их "видит".

Видел. В старых версиях, как минимум до версии 2.6
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34418917
Neta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вот Pack не работает. Может что неправильно пишу.
Пишу Set Deleted on
Delete
Pack
Возникает ошибка Command cannot be issued on a table with cursors in table buffering mode.
Что делаю не так????????????
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34418967
Neta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и еще несколько вопросов:
Как проверить таблицу на пустоту?
Как обратиться к записи в таблице, расположенной перед текущей?
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34419220
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну вот, опять двадцать пять...

И ЗАЧЕМ pack понадобился? Опять удаленные записи помешали? Так их в какой-нибудь служебной процедуре удаляют, а не во время текущей работы.

1.
select count(*) from YourTable into array nCount
?nCount

2.
skip -1
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34419303
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>select count(*) from YourTable into array nCount
А чем результат будет отличатся от банального RecCount()?

Ваще, если у нас есть удаленые записи и их нам надо игнорировать то
GO TOP
IF EOF()
? 'Пустая'
ENDIF
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34419331
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>select count(*) from YourTable into array nCount
А чем результат будет отличатся от банального RecCount()?


Отсутствием в подсчитанном количестве помеченных на удаление записей.
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34419415
Neta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Sergey Sizov.]Ну вот, опять двадцать пять...

И ЗАЧЕМ pack понадобился? Опять удаленные записи помешали? Так их в какой-нибудь служебной процедуре удаляют, а не во время текущей работы.



Pack понадобился, потому что перезапускаю программу, а там опять ненужные записи вылезают, хочу от них избавиться.
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34419418
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну что мешает в самом начале программы поставить один раз Set delet on?
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34419687
Neta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поставила. Ничего не изменилось. Да и не должно наверно. Если я заново запускаю FoxPro со своим проектом эти записи возникают вновь, поэтому хотелось бы все-таки их совсем удалить
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34419735
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Должно. Где именно поставила?
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34419861
Neta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у меня главная программа main, которая запускает меню. В ней и поставила


SET DEFAULT TO &Dir_Dbf

CLOSE data
* заставка
SET DEFAULT TO &Dir_Form
*DO FORM LichnDann
SET DELET ON
SET DEFAULT TO &Dir_prg
*SET PROCEDURE TO proc
DO menu2.mpr
READ Events
CLOSE DATABASES
RETURN

это её кусок
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34419862
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем столько set default? Одного не хватает?

Ищем set delete off во всем, что запускается из меню.
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34419868
Neta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нет, там ничего такого нет


Это меню

SET SYSMENU TO
SET SYSMENU AUTOMATIC

DEFINE PAD _21r1731x3 OF _MSYSMENU PROMPT "\<1.Ввод документов" COLOR SCHEME 3 ;
KEY ALT+1, ""
DEFINE PAD kmenu2 OF _MSYSMENU PROMPT "\<2.Запросы" COLOR SCHEME 3 ;
KEY ALT+2, ""
DEFINE PAD kmenu3 OF _MSYSMENU PROMPT "\<3.Вывод документов" COLOR SCHEME 3 ;
KEY ALT+3, ""
DEFINE PAD kmenu4 OF _MSYSMENU PROMPT "\<4.Справка" COLOR SCHEME 3 ;
KEY ALT+4, ""
DEFINE PAD kmenu5 OF _MSYSMENU PROMPT "\<5.Выход" COLOR SCHEME 3 ;
KEY ALT+5, ""
ON PAD _21r1731x3 OF _MSYSMENU ACTIVATE POPUP _2160sk08s
ON PAD kmenu2 OF _MSYSMENU ACTIVATE POPUP _2160sk08t
ON PAD kmenu3 OF _MSYSMENU ACTIVATE POPUP _2160sk08u
ON SELECTION PAD kmenu5 OF _MSYSMENU Quit

DEFINE POPUP _2160sk08s MARGIN RELATIVE SHADOW COLOR SCHEME 4
DEFINE BAR 1 OF _2160sk08s PROMPT "\<1.Файл"
DEFINE BAR 2 OF _2160sk08s PROMPT "\<2.Природные условия"
DEFINE BAR 3 OF _2160sk08s PROMPT "\<3.Описание препятствия"
ON SELECTION BAR 1 OF _2160sk08s ;
DO _21r1731x5 ;
IN LOCFILE("\БД\PRG\MENU2" ,"MPX;MPR|FXP;PRG" ,"WHERE is MENU2?")
ON SELECTION BAR 2 OF _2160sk08s ;
DO _21r1731x8 ;
IN LOCFILE("\БД\PRG\MENU2" ,"MPX;MPR|FXP;PRG" ,"WHERE is MENU2?")
ON SELECTION BAR 3 OF _2160sk08s ;
DO _21r1731xb ;
IN LOCFILE("\БД\PRG\MENU2" ,"MPX;MPR|FXP;PRG" ,"WHERE is MENU2?")

DEFINE POPUP _2160sk08t MARGIN RELATIVE SHADOW COLOR SCHEME 4
DEFINE BAR 1 OF _2160sk08t PROMPT "Добавить"
ON SELECTION BAR 1 OF _2160sk08t DO FORM Погода.SCX

DEFINE POPUP _2160sk08u MARGIN RELATIVE SHADOW COLOR SCHEME 4
DEFINE BAR 1 OF _2160sk08u PROMPT "Добавить"
ON SELECTION BAR 1 OF _2160sk08u DO FORM Препятствия.SCX


* *********************************************************
* *
* * _21R1731X5 ON SELECTION BAR 1 OF POPUP _2160sk08s
* *
* * Procedure Origin:
* *
* * From Menu: MENU2.MPR, Record: 5
* * Called By: ON SELECTION BAR 1 OF POPUP _2160sk08s
* * Prompt: 1.Файл
* * Snippet: 1
* *
* *********************************************************
*
PROCEDURE _21r1731x5
SET DEFAULT TO &Dir_Form
DO FORM form1


* *********************************************************
* *
* * _21R1731X8 ON SELECTION BAR 2 OF POPUP _2160sk08s
* *
* * Procedure Origin:
* *
* * From Menu: MENU2.MPR, Record: 6
* * Called By: ON SELECTION BAR 2 OF POPUP _2160sk08s
* * Prompt: 2.Природные условия
* * Snippet: 2
* *
* *********************************************************
*
PROCEDURE _21r1731x8
SET DEFAULT TO &Dir_Form
DO FORM form2


* *********************************************************
* *
* * _21R1731XB ON SELECTION BAR 3 OF POPUP _2160sk08s
* *
* * Procedure Origin:
* *
* * From Menu: MENU2.MPR, Record: 7
* * Called By: ON SELECTION BAR 3 OF POPUP _2160sk08s
* * Prompt: 3.Описание препятствия
* * Snippet: 3
* *
* *********************************************************
*
PROCEDURE _21r1731xb
SET DEFAULT TO &Dir_Form
DO FORM form3


А эта вся main

CLEAR
CLOSE DATABASES
CLOSE ALL

* Также в main'е делаем все необходимые установки
SET DATE GERMAN
SET CENTURY on

* Описываем все переменные типа PUBLIC
****PUBLIC InAr [ 1, 11 ]
PUBLIC Dir, Dir_Dbf, Dir_Form, Dir_out, Dir_Prg, Dir_Help
PUBLIC ars [ 1 ], arc [ 1 ]


* Определяем директорию, из которой запускалась программа
DIR = SYS( 16 )
nc = RAT( '\', Dir )
DIR = SUBSTR( Dir, 1, nc - 1 )
nc = RAT( '\', Dir )
DIR = SUBSTR( Dir, 1, nc - 1 )

Dir_Dbf = Dir + '\Dbf'
Dir_Form = Dir + '\Form'
Dir_Help = Dir + '\help'
Dir_Out = Dir + '\out'
Dir_Prg = Dir + '\prg'

* Отладочная печать, которую потом нужно убрать ( или закомментарить ('*' в 1-й позиции)
*? dir, Dir_Prg

* Переключаемся на поддиректорию '..\Dbf', где расположены таблицы
*** !!! оератор "&" - очень мощный, он подставляет в текст программы значение переменной,
*** которая следует непосредственно за знаком &, с его помощью можно организовать массив
*** подпрограмм

SET DEFAULT TO &Dir_Dbf

CLOSE data
* заставка
SET DEFAULT TO &Dir_Form
*DO FORM LichnDann
SET DELET ON
* Переключаемся на поддиректорию '..\Prg', где расположены программы
SET DEFAULT TO &Dir_prg
* Указываем программе, что в файле proc.prg будут размещены подпрограммы
*SET PROCEDURE TO proc
DO menu2.mpr
READ Events
CLOSE DATABASES
RETURN
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34419927
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какое значение в свойстве DataSession у форм?
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34420384
Neta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Default Data Session
А почему нельзя воспользваться Pack?
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34420406
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Neta

Кто Вас учит программировать на фокспро??

номер версии с которой Вы работаете???
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34420500
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Neta

если Вы взялись
программировать на фокспро,
то вначале нужно азам и правилам,
которые писаны в фокспро потом и кровью

так вот, одно из первых правил,
которое заставляет Вас думать - это
правило с пом. которого программисты
дают имена функциям, процедурам, переменным ....

это так называемая Венгерская нотация.

человека, который Вам дал в руки фокспро и не объяснил
этих азов, необходимо прибить.

если Вы и дальше будете таким образом
писать свою курсовую, то к окончанию
работы, Вы сойдете с ума, и возненавидите
фокспро, в котором на самом деле все делается намного проще
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34420727
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверьте, нет ли где-нибудь в самой форме команды SET DELETED OFF. В крайнем случае, сделайте настройку

SET DELETED ON

напрямую в Init-формы

NetaА почему нельзя воспользваться Pack?
Использовать PACK в процессе работы не то, чтобы "нельзя", а "не рекомендуется".

Во-первых, эта команда предполагает открытие таблицы в режиме Exclusive. А это, в свою очередь, предполагает монопольный доступ к таблице. Т.е. ни о какой совместной работе и многопользовательском приложении не может быть и речи.

Во-вторых, использование команды PACK при открытой форме приводит к разрушению структуры Grid. Необходимо предпринять ряд специальных мер, чтобы предотвратить это разрушение.

В-третьих, сакраментальный вопрос: а зачем? Что собственно Вы выигрываете от немедленного физического удаления записей помеченных как удаленные?

Факт "видимости" таких записей регулируется настройкой SET DELETED. Если количество таких записей относительно не велико, то и замедление выборок не происходит. Т.е. нет никакой необходимости физически удалять такие записи немедленно. Только дополнительные проблемы.

Поэтому, все подобные команды выносятся в отдельные служебные процелуры по обслуживанию базы данных, которые выполняются администратором периодически. Раз в неделю, месяц, год. В зависимости от интенсивности удаления записей и ответственности администратора.
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34420874
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оператор макроподстановки & без крайней необходимости тоже лучше не использовать.

Проблема здесь в том, что программа с большим количеством макроподстановок становится "не читабельной". Трудно понять "кто на ком стоял". Это сейчас ты помнишь о чем идет речь. А отложи программку на пару недель. Придется потратить кучу времени и сил на понимание того, что же здесь понаписано.

Переход между директориями можно осуществлять командой

Код: plaintext
CD PRG

Данная команда осуществит переход в директорию PRG, находящуюся внутри текущей директории.

Кроме того, в таких переходах, вообще-то, нет особой необходимости. Достаточно настроить пути доступа к нужным директориям через настройку SET PATH.

Например, в текущей директории есть директория PRG внутри которой находится файл, который необходимо запустить.

Код: plaintext
1.
2.
SET PATH TO PRG
DO MyProg.prg

FoxPro встретив команду DO осуществляет поиск нужного файла по следующему алгоритму:

-) По пути, указанному в самой команде DO (если он там указан)
-) Если путь не указан или файл не найден, то поиск осуществляется в текущей директории
-) Если файл не найден, то поиск осуществляется по путям указанным в настройке SET PATH

Настройка SET PATH, это одна из настроек, которые делаеются один раз в главной стартовой программе.
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34432590
Neta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to alex11100

1) Собственно, программировать на FoxPro меня никто не обучал. Образно говоря, мне показали как делаются формы при помощи wizarda и сказали делай. В последний раз мой препод сказал, что я разбираюсь в FoxPro лучше чем он.
2) работаю на FoxPro 8.0 и все проблемы с удалением решила. Просто прописывала в главной программе, а запускала на выполнение просто форму, поэтому естественно записи всплывали.
3) А чем не понравились имена переменных? По-моему все довольно логично=))))
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34432654
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Netato alex11100
3) А чем не понравились имена переменных? По-моему все довольно логично=))))
Я за него попытаюсь ответить

По одной из классификаций, FoxPro относится к, так называемым, не типизированным языкам. Это значит, что у него нет жесткой привязки типов данных к переменным. Любая переменная памяти в любой момент может изменить свой тип. Поэтому и "не типизированный".

Кроме того, для написания программы существенным является "область видимости" переменных памяти. Но в FoxPro явного объявление переменных может вообще не быть или быть сделано в другом программном модуле.

Как следствие, при разборе кода программы бывает довольно трудно понять, что же это за переменная такая. Какого она типа и какова ее область видимости.

Чтобы уменьшить эту неопределенность, и была предложена, так называемая "венгерская нотация". Это не значит, что эта самая "венгерская нотация" строго обязательна для использования. Просто ее использование облегчает чтение и понимание кода, как некий "стандарт по умолчанию".

«Венгерскую нотацию» изобрел программист Microsoft Чарльз Симони, венгр по национальности. Но названа она так не только по национальности изобретателя, но и по количеству согласных в наименовании, которое характерно для венгерского языка. Цель этой нотации – лаконичное и эффективное представление информации об объекте в его имени. Имя объекта в соответствии с данной нотацией имеет следующий формат:

[Префикc][ОсновноеИмя]

Префикс представляет собой сочетание из строчных согласных букв, характеризующих объект, например – lbl – Этикетка или frm – форма.

В отношении переменных памяти, префикс состоит из 2 букв:

Первая буква - это область видимости переменной

g - Public (Global)
p - Private
l - Local
t - параметр

Вторая буква - это тип данных, содержащихся в данной переменной

n - Numeric
c - Character
d - Date
t - Time
a - Array
v - Variable (тип не известен или может изменяться)
и т.п.

В соответсвии с этой нотацией твое определение переменных

Код: plaintext
PUBLIC Dir, Dir_Dbf, Dir_Form, Dir_out, Dir_Prg, Dir_Help

Следовало бы записать так:

Код: plaintext
PUBLIC gcDir, gcDir_Dbf, gcDir_Form, gcDir_out, gcDir_Prg, gcDir_Help

Т.е. по имени переменной сразу видно, что это глобальная переменная (первая буква g) символьного типа (вторая буква - c)

Венгерская нотация стала неявным стандартом для именования переменных памяти. Хотя при наименование объектов в форме или классе ее уже не так придерживаются. А в наименовании полей таблиц вообще используют крайне редко. Просто там это не слишком удобно, да и нет того эффекта.

Но, повторюсь, следовать или не следовать венгерской нотации при именовании переменных памяти - это личное дело программиста. Никаких обязательных условий на этот счет нет.
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34438551
Neta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проблема с изменением данных в таблице. Некоторые изменения некоторых полей не сохраняются, а именно.
На форме есть TextBox, Spinner,Optiongroup. Если изменяю данные в первых двух, то в данный момент все изменяется, перезапускаю проект, смотрю все тож самое, если меняю в OptionGroup, то все изменения сохраняются и после перезапуска. Код кнопки:
flag=.T.
IF ThisForm.Command10.Caption=="Изменить"
flag=.F.
ThisForm.Text1.Enabled=.T.
ThisForm.Optiongroup1.Enabled=.T.
ThisForm.Spinner1.Enabled=.T.
thisform.Command10.Caption="Сохранить"
thisform.Command1.Enabled=.F.
thisform.Command2.Enabled=.F.
ENDIF

IF flag
IF MESSAGEBOX("Сохранить изменения?", 4+32+256,"Изменение")=6
TABLEUPDATE()
ELSE
TABLEREVERT()
ENDIF
ThisForm.Text1.Enabled=.F.
ThisForm.Optiongroup1.Enabled=.F.
ThisForm.Spinner1.Enabled=.F.
thisform.Command10.Caption="Изменить"
thisform.Command1.Enabled=.T.
thisform.Command2.Enabled=.T.
Endif
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34438837
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какое значение свойства ControlSource для всех перечисленных объектов?
Что возвращает TableUpdate() и в случае "не сохранения"? Если TableUpdate()=.F., то какая причина ошибки?
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34441890
Neta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С объектом Spinner1, связано поле файл.id типа integer (раньше было numeric, изменила на integer, суть не поменялась). С объектом TextBox файл.name типа character[10]. Все через ControlSource.
Дело в том, что он у меня то сохраняет изменения, то нет. Никак последовательость выявить не могу. Я тут правда нескоько , скажем так, "химичала", пыталась восстановить удаленые записи, т.е. я думаю, что я делала это. Последовательность действий была такова: Я открыла таблицу в режиме просмотра, увидела крайний левый столбец, в котором клеточка записи, которую я удаляла была помечена черным, щелчком цвет поменялся на белый, ну и запись восстановилась. Соответственно, после этого мне захотелось что-то поменять с формы, ну вот и наткнулась на эту проблему. Может лучше просто выложить здесь свой проект? Просто не иогу объяснить точно, что именно не сохраняется. Повторюсь, последовательность выявить не могу. Причем, сразу скажу, это касается как тех записей, которые были восстановлены, так и тех, которые никогда не удалялись.
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34444433
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выкладывайте.
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34445445
Neta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот моя база данных, проблемы с изменением решила радикально, удалила таблицу создала новую, пока ранние проблемы обнаружены не были. Правда, все равно, все вместе как то странно функционирует, последний раз вообще все зависло. Поиск то работает, то не работает... Эххх..
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34445938
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В FoxPro принципиально важно знать, какая рабочая область является текущей . Т.е. с какой рабочей областью (таблицей) будет работать все команды и функции в данный момент .

Так вот, и команда TableUpdate() и TableRevert() по умолчанию работают только и исключительно с текущей рабочей областью. Поэтому, принципиально важно убедится в том, что попытка сохранения или отмены выполняется именно в той рабочей области, которая и нужна.

Этого можно добиться двумя способами. Либо непосредственно перед использованием подобных команд обязательно делать переход в нужную рабочую область, либо, если синтаксис функции позволяет, указать нужную рабочую область в самой функции. Применительно к Вашему коду это будет один из двух вариантов:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
...
IF m.Flag = .T.
	select файл		&& переход в нужную рабочую область
	IF MESSAGEBOX("Сохранить изменения?",  4 + 32 + 256 ,"Изменение")= 6 
		TABLEUPDATE()
	ELSE
		TABLEREVERT()
	ENDIF
...
ENDIF

или

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
...
IF m.Flag = .T.
	IF MESSAGEBOX("Сохранить изменения?",  4 + 32 + 256 ,"Изменение")= 6 
		TABLEUPDATE(.F.,.T.,"файл")
	ELSE
		TABLEREVERT(.F.,"файл")
	ENDIF
...
ENDIF

Какой вариант покажется Вам наиболее удобным, решайте сами.
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34460377
Neta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще проблема:
На форме есть OptionGroup со значениями "Есть", "Нет", по соответствующему выбору в полю записи таблицы (переменная логического типа) должно быть присвоено соответственно T или F. Так вот как сделать обратную связь, т.е. если значение поле Т, то точечка появляется напротив "Есть" и наоборот.
(через ControlSourse нельзя, как я понимаю)
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34460397
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что, CheckBox использовать нельзя?

Для OptionGroup, в данном случае, придется программировать, поскольку тип данных поля таблицы не соответсвует типу данных, которые возвращает OptionGroup.

Т.е. при позиционировании указателя записи в таблице придется программно выставлять значение OptionGroup.Value, а в событии OptionGroup.Valid() также программно записывать выбранное значение в поле таблицы.

Логическое значение .T. конвертируется в целочисленное значение 1, поэтому оказывается выбранным первый пункт. А логическое значение .F. конвертируется в 0, поэтому не выбирается ни один пункт. При этом, обратная конвертация из числа в логичское значение ВСЕГДА вернет .T., поскольку выбрать 0 в OptionGroup невозможно.
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34460446
Neta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А в CheckBox ведь могут быть выбраны оба поля одновременно (или я ошибаюсь)?????, а этого не хотелось бы. В поле таблицы я вношу запись так:

DO CASE
CASE ThisForm.OptionGroup2.Value = 1
REPLACE radar WITH .T.
CASE ThisForm.OptionGroup2.Value = 2
REPLACE radar WITH .F.
ENDCASE

и здесь все вроде работает хорошо.
...
Рейтинг: 0 / 0
код кнопок "добавить" "удалить" "изменить"
    #34460707
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NetaА в CheckBox ведь могут быть выбраны оба поля одновременно (или я ошибаюсь)????
Это как? CheckBox выглядит как один квадратик в котором либо может быть птичка, либо не может. Это как раз в OptionGroup можно выбрать одновременно оба пункта (правда, только программно).

Для проверки просто "брось" на форму объект CheckBox и попробуй выбрать "оба поля (значения?) одновременно". Если получится, обязательно сообщи как ты этого добилась, мне тоже интересно

Если я правильно понимаю назначение поля, то для него идельным было бы как раз использование CheckBox, поскольку стоит вопрос не выбора значения из списка возможных вариантов (для чего и предназначен OptionGroup), а ответ на вопрос вроде "Есть ли?".

Именно для решения подобных задач CheckBox и предназначен. Он предназначен для ответа "Да" или "Нет" на вопрос, сформулированный в тексте объекта.
...
Рейтинг: 0 / 0
46 сообщений из 46, показаны все 2 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / код кнопок "добавить" "удалить" "изменить"
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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