Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Foxpro/Clipper/Dbase > Помогите в создании VFP приложении


Автор: ScorpiONIK 25.9.2005, 14:25
Приложение должно содержать:
1)Три combox'a - операции, функции, переменные (храняться в БД)
2)TextBox -содержит выражение создаваемое с помощью CjmboBox'ов
3)Кнопку с функцией проверки выражения.
Выражения пишуться в класическом мат. виде.

Я новичек в VFP. Буду рад любой помощи smile

Автор: Cashey 28.9.2005, 01:16
а в чем сложность? в чем должна заключатся помощь? для написания кода данных маловато

Автор: ratex 14.6.2006, 12:38
О!  smile  А мне собственно, примерно это и надо! Есть три ComboBox. Первый содержит список - 2004, 2005, 2006. Второй - список месяцев. Третий - список дней от 01 до 31. Выставляем необходимую дату и жмём кнопку ПОКАЗАТЬ и на основании значений выбранных в ComboBox, в  TextBox должна вывестись сумма записей из таблицы MESS.dbf (в которой есть поле Date_), которые подпадают под конкретную дату. То есть записи из таблицы MESS.dbf просматриваются по полю Date_   и выводится их общее количество. Сам учусь по самоучителю, немогу всё в кучу связать.  smile  Помогите, пожалуйста, буду очень рад! 

Автор: Cashey 14.6.2006, 14:47
ratex, а стандартный календарь не рулит?
Если очень хочется комбиками, то пожалуйста. кидай три комба. первый и третий - все просто, с месяцами либо делай 2 колонки, либо предварительно создай двумерный массив. и соответсвенно храни, какому названию месяца соответсвует порядковый номер месяца календарного. Потом лепи строку и подставляй ее в запрос. Пример:
Код

local array aMont[12,2]
aMont[1,1] = "январь"
aMont[1,2] = 1
aMont[1,1] = "февраль"
aMont[1,2] = 2
***************
local cDate, nMont
SET DATE GERMAN 
nMont = aMoth[ASCAN(aMont,alltrim(thisform.combo2.value),1,2,1,8),1]
cDate = alltrim(thisform.combo1.value)+"."+alltrim(str(nMont))+"."+alltrim(thisform.combo3.value)
*где thisform.combo1 с днями, thisform.combo2 с месяцами, thisform.combo3 с годами
select MESS
COUNT TO nCount FOR Date_ = CTOD(cDate)
thisform.text1.value = nCount
 

Автор: ratex 15.6.2006, 10:22
в принципе, сами запросы понятны, вроде немного разобрался. Но куда их вставлять? По-идее при нажатии на кнопку "показать" должен выполниться этот запрос! Или можно создать новую программу, вставить туда этот запрос, а по нажатию на кнопку подключать выполнение этой программы? То есть как всё вместе связать (кнопку, комбики, текстбокс)? Не доходит до меня!  smile  Вот например, сделал кнопку "Выход" и в методе Click создал запрос _screen.ActiveForm.Release(), это работает и всё понятно! форма закрывается! а вот с остальным пока неясно... 

Автор: Artiom 15.6.2006, 10:41
в кнопке ок по событию клик пишешь что-то вроде
Код

* получил из комбобокса день
str_day = ALLTRIM(thisform.dayCombo.ListItem(thisform.dayCombo.value))
str_month = ....
str_year = ...
* потом формируешь дату в зависимости от формата твоего, например так
mydata = str-day +'.' +str_month +'.' +str_year
*потом выбираешь таблицу, делаешь запрос
 

Автор: Cashey 15.6.2006, 13:45
ratex, где хочешь, там и обрабатывай. Это от концепции твоей программы зависеть будет  smile  

Автор: ratex 16.6.2006, 05:10
вот что-то накидал, но выдаётся ошибка! что же неправильно?
код написал в кнопке в методе Клик,
месяц и год я пока не просматриваю, они пока равны 06 и 06
Код

LOCAL str_day, nCount, mydate
str_day = ALLTRIM(thisform.dayCombo.ListItem(thisform.dayCombo.value))
mydate = str_day +'.'+06+'.'+06
SET DATE German
* таблица TEST, в которой есть одно поле Date c записями 01/06/06, 02/06/06,
* 03/06/06, и ещё 03/06/06
* в dayCombo выбирается значение 03
* то есть следующий запрос должен БЫ вывести в Text1 цифру 2
* но выдаётся ошибка "invalid suscript reference"
* и в text1 выводится F (false, видимо) 
select test
COUNT TO nCount FOR Date = CTOD(mydate)
thisform.text1.value = ncount

 

Ааа! Я понял! У меня что-то Alltrim не работает! Вот например через стандартный календарь ещё пробовал:
Код

xDay = ALLTRIM(mainform.olecontrol1.ListItem(mainform.olecontrol1.day))
mainform.text1.value = xDay
mainform.text2.value = mainform.olecontrol1.month
mainform.text3.value = mainform.olecontrol1.year

в текст2 и текст3 выводятся значения, а вот в текст1 НЕ выводится, выдаёт ошибку переменная не определена! Поэтому в дальнейшем у меня не получается сформировать дату из отдельных значений календаря! 

Автор: Cashey 16.6.2006, 08:27
разумеется, ты скреиваешь ежа и ужа

Цитата(ratex @  16.6.2006,  06:10 Найти цитируемый пост)
mydate = str_day +'.'+06+'.'+06

нельзя в одну строку складывать строчные и числовые величины.

Цитата(ratex @  16.6.2006,  06:10 Найти цитируемый пост)
str_day = ALLTRIM(thisform.dayCombo.ListItem(thisform.dayCombo.value))

да и вот это не понятно совсем. 
почему не написать так:
Код

str_day = ALLTRIM(thisform.dayCombo.value)
mydate = str_day +'.'+'06'+'.'+'2006'
 

Автор: ratex 16.6.2006, 09:22
Вот есть табличка Test c полем xDate:
xDate
06.01.2006
06.02.2006
06.03.2006
06.04.2006
06.04.2006

запрос в кнопке, в Click:
LOCAL str_day, nCount, mydate
str_day = ALLTRIM(thisform.dayCombo.value)
mydate = '06'+'.'+'str_day'+'.'+'2006'
select test
COUNT TO nCount FOR xDate = CTOD(mydate)
thisform.text1.value = ncount
запускаю форму, выставляю в dayCombo значение 04 и нажимаю кнопку, результат "0", но должно быть 2
Почему? не работает цикл?

 

Автор: Cashey 16.6.2006, 11:47
ratex, запроси MESSAGEBOX со значением переменной mydate и посмотри, вероятно все сразу станет ясно 

Автор: ratex 16.6.2006, 12:52
 smile Cashey, спасибо! Не догадался бы сам! 
Код

mydate = ALLTRIM(STR(xday))+'.'+'06'+'.'+'2006'

и всё в порядке! щас дольше буду думать! Проделаю то же самое с месяцами и с годами! smile 

Автор: ratex 16.6.2006, 13:41
 smile дальше-хуже! Сделал exe-шник, запускаю, форма появляется на долю секунды и пропадает, причём также видно что там ещё и фоксовское окно лезет! 
На закладке Layout установлено Desktop=.T. и ShowWindow=2. 

На закладке методы в событии Unload написано clear events

в Code\Programs написано 
do form mainform
read events

 smile и наконец создан файл CONFIG.FPV со строкой screen=off, а фоксовское окно всё равно лезет и к тому же форма пропадает сразу после запуска!




 

Автор: Artiom 16.6.2006, 13:55
У формы задай свойству ShowWindow  значение 2-As Top-Level Form , Desktop=.F. 

Автор: Cashey 16.6.2006, 14:08
ratex, так не пойдет! то обстоятельство, что подраздел ни кем персонально не модерируется не дает никому права превращать его в зону свободную от правил форума. Один вопрос- одна тема. Создавай отдельные темы со своими вопросами, особенно если они разноплановые. Тем более, что тема с подобной проблемой уже существует.

Добавлено @ 14:09 
Artiom, молодец, скоро будешь мне тут помогать  smile  

Автор: ratex 17.6.2006, 08:00
Cashey , ок! Но тогда будет очень и очень много тем созданных мною!  smile Ведь я только ещё учюсь создавать приложения на VFP. Хотел в одной темке всё и замутить!  smile 
 

Автор: Cashey 17.6.2006, 23:17
ratex, зато визуально отразитсЯ популярность раздела  smile  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)