|
|
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
Здравтствуйте, просьба помочь с написанием перечисленных выше кнопок. в кнопке добавить написала Append Blank, конечно работает. при желании отменить добавление написала в коде TableRevert(), не работает выдает ошибку function requires row or table buffering mode. Как правильно должен выглядить код????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 13:14 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
посмотрите, можно сделать вот так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 13:25 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
А где посмотреть код кнопок да и сами кнопки??? Мне б просто в обработчике события Click у кнопки написать код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 13:54 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
все просто 1. открываете проект 2. находите нужный класс 3. смотрите код ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 14:56 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
авторМне б просто в обработчике события Click у кнопки написать код просто не получится если Вы решили связаться с TableRevert() то и должны правильно поднять буферизованный курсор ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 15:03 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
В принципе, можно и проще. Указать буферизацию собственно таблицы-источника. В DataEnvironment формы правой кнопкой мыши по таблице - пункт меню Properties - в открывшемся окне Properties установить свойство BuferModeOverride = 5 Следует только понимать, что при буферизации данных любые модификации происходят сначала в буфере таблицы. Чтобы сбросить изменения из буфера в исходные таблицы надо дать команду TableUpdate(). Это же правило относится и к созданию новых записей. Т.е. по APPEND BLANK Вы увидите новую запись, но пока не сделаете TableUpdate() эта запись не попаде в исходную таблицу. Хотя, опять же, в общем случае, прямая модификация таблиц, пусть и с буферизацией, в реальных программах вещь достаточно редкая. Обычно все-таки делают выборку из таблиц-источников и работают с этой выборкой. Пример, приведенный alex11100 - это как раз и есть "общий случай". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 15:16 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
Спасибо! При исправлении в DataEnviroment, отмена при добавлении заработала. Теперь вопрос: как запись правильно удалять, причем совсем (физически). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 15:33 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
Теперь вопрос: как запись правильно удалять, причем совсем (физически). А ЗАЧЕМ, позвольте полюбопытсвовать? Чем Set delete on не нравиться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 15:41 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
ну он же просто помечает запись на удаление. (если я не ошибаюсь), а мне нужно совсем чтоб удалялась. Это у меня курсовая работа такая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 15:48 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
Независимо от "курсовости" работы, еще раз - чем не нравится Set delete on? Помеченные на удаление записи где-то показываются, обрабатываются? Они чем-то мешают? Или есть подозрение, что такой способ удаления придумали придурки от нечего делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 15:57 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
Спасибо! Удаление тож заработало при помоши Set Deleted on ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 16:03 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
Sergey Sizov.Независимо от "курсовости" работы, еще раз - чем не нравится Set delete on? Помеченные на удаление записи где-то показываются, обрабатываются? Они чем-то мешают? Или есть подозрение, что такой способ удаления придумали придурки от нечего делать? Ну зачем так категорично про "придурки". 1. Размер файла 2. SELECT - SQL их "видит". С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 16:04 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 16:05 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
Aleksey-K2. SELECT - SQL их "видит". При настройке SET DELETED ON - не видит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 16:07 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
Подозрения были, что эта запись будет снова отображаться при перезапуске программы, сейчас они развеялись. просто раньше не работало. При использовании команды Delete возникала ошибка trigger failed, сейчас ошибка не возникает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 16:07 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
2. SELECT - SQL их "видит". Видел. В старых версиях, как минимум до версии 2.6 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 16:10 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
А вот Pack не работает. Может что неправильно пишу. Пишу Set Deleted on Delete Pack Возникает ошибка Command cannot be issued on a table with cursors in table buffering mode. Что делаю не так???????????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 16:13 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
и еще несколько вопросов: Как проверить таблицу на пустоту? Как обратиться к записи в таблице, расположенной перед текущей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 16:25 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
Ну вот, опять двадцать пять... И ЗАЧЕМ pack понадобился? Опять удаленные записи помешали? Так их в какой-нибудь служебной процедуре удаляют, а не во время текущей работы. 1. select count(*) from YourTable into array nCount ?nCount 2. skip -1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 17:27 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
>select count(*) from YourTable into array nCount А чем результат будет отличатся от банального RecCount()? Ваще, если у нас есть удаленые записи и их нам надо игнорировать то GO TOP IF EOF() ? 'Пустая' ENDIF ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 17:47 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
>select count(*) from YourTable into array nCount А чем результат будет отличатся от банального RecCount()? Отсутствием в подсчитанном количестве помеченных на удаление записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 17:57 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
[quot Sergey Sizov.]Ну вот, опять двадцать пять... И ЗАЧЕМ pack понадобился? Опять удаленные записи помешали? Так их в какой-нибудь служебной процедуре удаляют, а не во время текущей работы. Pack понадобился, потому что перезапускаю программу, а там опять ненужные записи вылезают, хочу от них избавиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 18:24 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
ну что мешает в самом начале программы поставить один раз Set delet on? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 18:25 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
Поставила. Ничего не изменилось. Да и не должно наверно. Если я заново запускаю FoxPro со своим проектом эти записи возникают вновь, поэтому хотелось бы все-таки их совсем удалить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 20:07 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
Должно. Где именно поставила? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 20:45 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
у меня главная программа 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 это её кусок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 22:21 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
Зачем столько set default? Одного не хватает? Ищем set delete off во всем, что запускается из меню. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 22:23 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
нет, там ничего такого нет Это меню 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 22:34 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
Какое значение в свойстве DataSession у форм? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 23:35 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
1. Default Data Session А почему нельзя воспользваться Pack? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2007, 10:02 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
2 Neta Кто Вас учит программировать на фокспро?? номер версии с которой Вы работаете??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2007, 10:07 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
2 Neta если Вы взялись программировать на фокспро, то вначале нужно азам и правилам, которые писаны в фокспро потом и кровью так вот, одно из первых правил, которое заставляет Вас думать - это правило с пом. которого программисты дают имена функциям, процедурам, переменным .... это так называемая Венгерская нотация. человека, который Вам дал в руки фокспро и не объяснил этих азов, необходимо прибить. если Вы и дальше будете таким образом писать свою курсовую, то к окончанию работы, Вы сойдете с ума, и возненавидите фокспро, в котором на самом деле все делается намного проще ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2007, 10:26 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
Проверьте, нет ли где-нибудь в самой форме команды SET DELETED OFF. В крайнем случае, сделайте настройку SET DELETED ON напрямую в Init-формы NetaА почему нельзя воспользваться Pack? Использовать PACK в процессе работы не то, чтобы "нельзя", а "не рекомендуется". Во-первых, эта команда предполагает открытие таблицы в режиме Exclusive. А это, в свою очередь, предполагает монопольный доступ к таблице. Т.е. ни о какой совместной работе и многопользовательском приложении не может быть и речи. Во-вторых, использование команды PACK при открытой форме приводит к разрушению структуры Grid. Необходимо предпринять ряд специальных мер, чтобы предотвратить это разрушение. В-третьих, сакраментальный вопрос: а зачем? Что собственно Вы выигрываете от немедленного физического удаления записей помеченных как удаленные? Факт "видимости" таких записей регулируется настройкой SET DELETED. Если количество таких записей относительно не велико, то и замедление выборок не происходит. Т.е. нет никакой необходимости физически удалять такие записи немедленно. Только дополнительные проблемы. Поэтому, все подобные команды выносятся в отдельные служебные процелуры по обслуживанию базы данных, которые выполняются администратором периодически. Раз в неделю, месяц, год. В зависимости от интенсивности удаления записей и ответственности администратора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2007, 11:12 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
Оператор макроподстановки & без крайней необходимости тоже лучше не использовать. Проблема здесь в том, что программа с большим количеством макроподстановок становится "не читабельной". Трудно понять "кто на ком стоял". Это сейчас ты помнишь о чем идет речь. А отложи программку на пару недель. Придется потратить кучу времени и сил на понимание того, что же здесь понаписано. Переход между директориями можно осуществлять командой Код: plaintext Данная команда осуществит переход в директорию PRG, находящуюся внутри текущей директории. Кроме того, в таких переходах, вообще-то, нет особой необходимости. Достаточно настроить пути доступа к нужным директориям через настройку SET PATH. Например, в текущей директории есть директория PRG внутри которой находится файл, который необходимо запустить. Код: plaintext 1. 2. FoxPro встретив команду DO осуществляет поиск нужного файла по следующему алгоритму: -) По пути, указанному в самой команде DO (если он там указан) -) Если путь не указан или файл не найден, то поиск осуществляется в текущей директории -) Если файл не найден, то поиск осуществляется по путям указанным в настройке SET PATH Настройка SET PATH, это одна из настроек, которые делаеются один раз в главной стартовой программе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2007, 11:37 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
to alex11100 1) Собственно, программировать на FoxPro меня никто не обучал. Образно говоря, мне показали как делаются формы при помощи wizarda и сказали делай. В последний раз мой препод сказал, что я разбираюсь в FoxPro лучше чем он. 2) работаю на FoxPro 8.0 и все проблемы с удалением решила. Просто прописывала в главной программе, а запускала на выполнение просто форму, поэтому естественно записи всплывали. 3) А чем не понравились имена переменных? По-моему все довольно логично=)))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2007, 21:39 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
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 Следовало бы записать так: Код: plaintext Т.е. по имени переменной сразу видно, что это глобальная переменная (первая буква g) символьного типа (вторая буква - c) Венгерская нотация стала неявным стандартом для именования переменных памяти. Хотя при наименование объектов в форме или классе ее уже не так придерживаются. А в наименовании полей таблиц вообще используют крайне редко. Просто там это не слишком удобно, да и нет того эффекта. Но, повторюсь, следовать или не следовать венгерской нотации при именовании переменных памяти - это личное дело программиста. Никаких обязательных условий на этот счет нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2007, 23:12 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
проблема с изменением данных в таблице. Некоторые изменения некоторых полей не сохраняются, а именно. На форме есть 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2007, 18:23 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
Какое значение свойства ControlSource для всех перечисленных объектов? Что возвращает TableUpdate() и в случае "не сохранения"? Если TableUpdate()=.F., то какая причина ошибки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2007, 20:27 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
С объектом Spinner1, связано поле файл.id типа integer (раньше было numeric, изменила на integer, суть не поменялась). С объектом TextBox файл.name типа character[10]. Все через ControlSource. Дело в том, что он у меня то сохраняет изменения, то нет. Никак последовательость выявить не могу. Я тут правда нескоько , скажем так, "химичала", пыталась восстановить удаленые записи, т.е. я думаю, что я делала это. Последовательность действий была такова: Я открыла таблицу в режиме просмотра, увидела крайний левый столбец, в котором клеточка записи, которую я удаляла была помечена черным, щелчком цвет поменялся на белый, ну и запись восстановилась. Соответственно, после этого мне захотелось что-то поменять с формы, ну вот и наткнулась на эту проблему. Может лучше просто выложить здесь свой проект? Просто не иогу объяснить точно, что именно не сохраняется. Повторюсь, последовательность выявить не могу. Причем, сразу скажу, это касается как тех записей, которые были восстановлены, так и тех, которые никогда не удалялись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 21:28 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
Выкладывайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 17:39 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
Вот моя база данных, проблемы с изменением решила радикально, удалила таблицу создала новую, пока ранние проблемы обнаружены не были. Правда, все равно, все вместе как то странно функционирует, последний раз вообще все зависло. Поиск то работает, то не работает... Эххх.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2007, 21:54 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
В FoxPro принципиально важно знать, какая рабочая область является текущей . Т.е. с какой рабочей областью (таблицей) будет работать все команды и функции в данный момент . Так вот, и команда TableUpdate() и TableRevert() по умолчанию работают только и исключительно с текущей рабочей областью. Поэтому, принципиально важно убедится в том, что попытка сохранения или отмены выполняется именно в той рабочей области, которая и нужна. Этого можно добиться двумя способами. Либо непосредственно перед использованием подобных команд обязательно делать переход в нужную рабочую область, либо, если синтаксис функции позволяет, указать нужную рабочую область в самой функции. Применительно к Вашему коду это будет один из двух вариантов: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. или Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Какой вариант покажется Вам наиболее удобным, решайте сами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2007, 20:49 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
Еще проблема: На форме есть OptionGroup со значениями "Есть", "Нет", по соответствующему выбору в полю записи таблицы (переменная логического типа) должно быть присвоено соответственно T или F. Так вот как сделать обратную связь, т.е. если значение поле Т, то точечка появляется напротив "Есть" и наоборот. (через ControlSourse нельзя, как я понимаю) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2007, 18:54 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
А что, CheckBox использовать нельзя? Для OptionGroup, в данном случае, придется программировать, поскольку тип данных поля таблицы не соответсвует типу данных, которые возвращает OptionGroup. Т.е. при позиционировании указателя записи в таблице придется программно выставлять значение OptionGroup.Value, а в событии OptionGroup.Valid() также программно записывать выбранное значение в поле таблицы. Логическое значение .T. конвертируется в целочисленное значение 1, поэтому оказывается выбранным первый пункт. А логическое значение .F. конвертируется в 0, поэтому не выбирается ни один пункт. При этом, обратная конвертация из числа в логичское значение ВСЕГДА вернет .T., поскольку выбрать 0 в OptionGroup невозможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2007, 19:05 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
А в CheckBox ведь могут быть выбраны оба поля одновременно (или я ошибаюсь)?????, а этого не хотелось бы. В поле таблицы я вношу запись так: DO CASE CASE ThisForm.OptionGroup2.Value = 1 REPLACE radar WITH .T. CASE ThisForm.OptionGroup2.Value = 2 REPLACE radar WITH .F. ENDCASE и здесь все вроде работает хорошо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2007, 19:21 |
|
||
|
код кнопок "добавить" "удалить" "изменить"
|
|||
|---|---|---|---|
|
#18+
NetaА в CheckBox ведь могут быть выбраны оба поля одновременно (или я ошибаюсь)???? Это как? CheckBox выглядит как один квадратик в котором либо может быть птичка, либо не может. Это как раз в OptionGroup можно выбрать одновременно оба пункта (правда, только программно). Для проверки просто "брось" на форму объект CheckBox и попробуй выбрать "оба поля (значения?) одновременно". Если получится, обязательно сообщи как ты этого добилась, мне тоже интересно Если я правильно понимаю назначение поля, то для него идельным было бы как раз использование CheckBox, поскольку стоит вопрос не выбора значения из списка возможных вариантов (для чего и предназначен OptionGroup), а ответ на вопрос вроде "Есть ли?". Именно для решения подобных задач CheckBox и предназначен. Он предназначен для ответа "Да" или "Нет" на вопрос, сформулированный в тексте объекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2007, 00:08 |
|
||
|
|

start [/forum/topic.php?all=1&fid=41&tid=1589536]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 363ms |

| 0 / 0 |
