Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual FoxPro
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.68
Веруня
0 / 0 / 0
Регистрация: 20.03.2011
Сообщений: 11
#1

кнопки - FoxPro

30.06.2011, 10:13. Просмотров 2892. Ответов 10
Метки нет (Все метки)

не могу разобраться..

на кнопке удалить
SELECT yanvar
SET DELETED ON
IF MESSAGEBOX('удалить запись?',1+32+256)=1
DELETE
endif
thisform.grdYanvar.Refresh
thisform.Refresh\

эта штука помечает запись, а как сделать так что бы не помечал а сразу удалял?


на кнопке печать
IF MESSAGEBOX("Âû äåéñòâèòåëüíî õîòèòå äàííûå èìïîðòèðîâàòü â Excel",4+32+256,"Âûõîä")=6
SELECT yanvar
d=RECCOUNT()
IF d=0 THEN
MESSAGEBOX("Â òàáëèöå íåò çàïèñåé!",0+64+0,"Îøèáêà!")
ELSE
MyEXCEL=CREATEOBJECT('excel.application')
gcText = GETFILE('xls','Ôàéë','Âñòàâêà',0,'Ïðîñìîòð')
MyEXCEL.WorkBooks.Open(gcText)
MyEXCEL.VISIBLE= .T.
WITH MyEXCEL

FOR i=1 TO d
**APPEND BLANK
SET date GERMAN
GOTO i

.Cells(i+7,1).Value = ALLTRIM(tovar1)
.Cells(i+7,2).Value = ALLTRIM(postavschu)
.Cells(i+7,3).Value = Alltrim(kolich1)
.Cells(i+7,4).Value = ALLTRIM(chena1)
.Cells(i+7,5).Value = ALLTRIM(stavka1)
.Cells(i+7,6).Value = ALLTRIM(date1)
ENDFOR
MyEXCEL.ActiveWorkbook.SaveAs("C:\yanvar.XLS")
MyEXCEL.Quit
ENDWITH
RELEASE MyEXCEL
RETURN
ENDIF
ELSE
_screen.Refresh()
ENDIF

товар и поставщика он отлично вносить в ексель, а остальные 4 записи не хочет...может дело в том что первые две записи это Character, a остальные Numeric & Date ? Но не могу я найти решения для этого
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2011, 10:13
Я подобрал для вас темы с готовыми решениями и ответами на вопрос кнопки (FoxPro):

Кнопки Тулбара
Добрый день. Такая ситуация: в проекте главная форма As-Top-level и...

foxPro кнопки
кнопка удалить написано такая команда, но она только ставит метку, но не...

Кнопки для формы
Здравствуйте. Мне нужно сделать кнопки для формы, точнее они сделаны, нужно,...

Класс кнопки CommandButton
Мне нужно сделать Класс кнопки CommandButton. Чтобы после нажатии кнопки мне...

Можно ли переименовать кнопки в MessageBox?
Подскажите! в MESSAGEBOX когда выбор действий предоставляется, можно ли кнопки...

FoxPro - кнопки вперед, назад
не могу не как вспомнить в FoxPro при создание базы данных, в форме кнопки...

10
Redglow
106 / 106 / 1
Регистрация: 06.05.2011
Сообщений: 277
30.06.2011, 19:13 #2
1. А зачем, собственно?
DELETE всегда помечала записи на удаление, для физического удаления записи всегда использовалась PACK, но!
- невозможно будет восстановить помеченную на удаление запись
- требуется эксклюзивный доступ к таблице - если она уже открыта другим пользователем, то ничего не получится
- сетевой доступ накрывается женским половым органом
- если таблица указана как источник для грида формы, то отображение грида будет разрушено
- это требует времени на перестроение таблицы, в итоге при частом удалении получим глючное и тормознутое приложение
- и в конце-концов, так никто не делает, потому что это "через одно место"
А оно тебе надо? SET DELETED ON более чем достаточно для абсолютного большинства случаев.

2. Для числовых полей ALLTRIM(STR(поле)), для даты DTOC(поле)
1
Веруня
0 / 0 / 0
Регистрация: 20.03.2011
Сообщений: 11
30.06.2011, 21:53  [ТС] #3
Спасибо большое, ну я думала будет удобнее с простым удалением, ну спасибо что объяснили, оставлю такое

а еще в кнопке сохранения не могу додумать...
DO CASE
CASE v=1
SELECT yanvar
p=ALLTRIM(thisform.combo1.Value)
SET ORDER TO tag postavschu
IF SEEK(p,"yanvar","postavschu")
MESSAGEBOX("В таблице имеется такая запись!",0+64+0,"Ошибка!")
ELSE
APPEND BLANK
replace postavschu WITH ALLTRIM(thisform.combo1.Value)
replace tovar1 WITH STR(val(thisform.text1.text),10,4)
replace kolich1 WITH STR(val(thisform.text2.text),10,4)
replace chena1 WITH STR(val(thisform.text3.text),10,4)
replace stavka1 WITH STR(val(thisform.text4.text),10,4)
replace date1 WITH STR(val(thisform.text5.text),10,4)
thisform.Release
ENDIF

опять же числа не могу нормально сделать...
0
Redglow
106 / 106 / 1
Регистрация: 06.05.2011
Сообщений: 277
01.07.2011, 10:06 #4
А слабо почитать справку о функциях приведения типов, милая барышня?
STR() - возвращает символьный эквивалент числового выражения
VAL() - возвращает числовое или денежное значение из символьного выражения состоящего из чисел
DTOC() - возвращает дату Символьного типа из выражения Date или DateTime
CTOD() - конвертирует Символьное выражение в выражение типа Data
Соответственно, если поле в таблице числового типа, то STR() там явно лишняя - это во-первых.
Во-вторых, указанный пример неоптимален и, опять таки, так никто не делает. Первый раз индекс обновляется при APPEND BLANK, второй раз - при REPLACE. Если уж делать, то примерно так:
Код
INSERT INTO yanvar (postavschu, tovar1, kolich1, chena1, stavka1, date1);
VALUE (ALLTRIM(thisform.combo1.Value), VAL(thisform.text1.text), VAL(thisform.text2.text), VAL(thisform.text3.text), VAL(thisform.text4.text), CTOD(thisform.text5.text))
0
Веруня
0 / 0 / 0
Регистрация: 20.03.2011
Сообщений: 11
01.07.2011, 10:53  [ТС] #5
дак не получается так...пишет синтаксическая ошибка
0
Redglow
106 / 106 / 1
Регистрация: 06.05.2011
Сообщений: 277
01.07.2011, 11:07 #6
Омг... прочесть, то что я писал и воспользоваться мозгом видимо религия не позволяет.
Что может быть проще? Смотрим какой тип поля в таблице. Смотрим тип поля переменной или контрола. Выбираем функцию приведения и вставляем в выражение.
Например, поле типа дата, на форме значение контрола текстовое. Значит выбираем функцию CTOD(). Текст в число - VAL(), число в число строкой - STR() и т.д. Неужели так сложно?
Предположу, что поле tovar1 текстовое. Тогда это должно выглядеть так:
Код
WITH ThisForm
   INSERT INTO yanvar (postavschu, tovar1, kolich1,;
      chena1, stavka1, date1);
   VALUE (ALLTRIM(.combo1.Value), .text1.text, VAL(.text2.text),;
      VAL(.text3.text), VAL(.text4.text), CTOD(.text5.text))
ENDWITH
А вообще, отвечающие не должны ломать голову в догадках. Версия фокса? Структура таблицы, типы полей? Это все должно было быть в первом сообщении.
0
Веруня
0 / 0 / 0
Регистрация: 20.03.2011
Сообщений: 11
01.07.2011, 11:12  [ТС] #7
Спасибки еще раз ну типы полей я там писала, версия 9.

а зачем нужна ; между кolich1,;chena1,
0
Redglow
106 / 106 / 1
Регистрация: 06.05.2011
Сообщений: 277
01.07.2011, 11:17 #8
Исключительно для красоты и читабельности кода. 2 строки по 3 поля в списке полей, столько же значений.
0
Веруня
0 / 0 / 0
Регистрация: 20.03.2011
Сообщений: 11
01.07.2011, 11:22  [ТС] #9
Redglow, а можно в форме сделать так, что бы заполнил данные, а если что то пропустил или вместо числа написал буквы, появлялась ошибка типа проверьте данные?
0
Redglow
106 / 106 / 1
Регистрация: 06.05.2011
Сообщений: 277
01.07.2011, 11:55 #10
У TextBox-а есть свойство InputMask, которое позволяет разрешать или запрещать ввод только определенных символов, например Text1.InputMask = "99999.99" разрешает ввод только чисел с 5 знаками до запятой и 2 после. Text1.InputMask = "UWUWU" разрешает ввод только букв ЗаБоРчИкОм и длиной 5 символов, ну и так далее. Читаем справку по этому свойству.
Насчет пропусков, перед записью в таблицу ставим проверку с помощью IF или DO CASE, проверяем что хотим проверить и выдаем сообщения или пишем в базу.
1
Веруня
0 / 0 / 0
Регистрация: 20.03.2011
Сообщений: 11
01.07.2011, 11:58  [ТС] #11
Всё понятно. Спасибо
0
01.07.2011, 11:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.07.2011, 11:58
Привет! Вот еще темы с решениями:

Кнопки удалить, добавить, редактировать (изменить) в форме
Есть форма, данные беру из трех таблиц student (id_student, sec_names,...

Какое свойство в компоненте Button определяет выделение кнопки?
Доброе время суток!! подскажите какое свойство в компоненте Button определяет...

Редактирование объектов на одной форме при нажатии кнопки на другой
Помогите пожалуйста. Нужно сделать так чтобы при нажатии кнопки на одной форме...

Нажатие каждой кнопки приводит к ее сокрытию и показу ранее скрытой кнопки
Нажатие каждой кнопки приводит к ее сокрытию и показу ранее скрытой кнопки. При...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru