Sla
|
|
« Ответ #30 : 29-04-2009 14:06 » |
|
текстбокс.велью = результат_функции(переменной)
Хелп, наверное, так ни разу и не открыл
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
v.korleone
Помогающий
Offline
|
|
« Ответ #31 : 29-04-2009 14:19 » |
|
Sla, открываю хелп, пишу Textbox.... а результат можешь сам посмотреть... нету там ничего, по крайней мере если так писать как я. Спасибо! Кстате... фигня все равно... Есть вот эта строчка которая все отлично считает, но выводит не в текст-бокс, а в новом окне в таблицу: Select max(personal_data.num) from database!personal_data куда же лепить текст-бокс?
|
|
« Последнее редактирование: 29-04-2009 14:23 от v.korleone »
|
Записан
|
|
|
|
Sla
|
|
« Ответ #32 : 29-04-2009 14:36 » |
|
v.korleone, я ж тебе сказал - я не знаю фокса, и... знать не хочу. Не верю Если ты уже достал значение surn откуда-то то и смотри как его туда вернуть назад
а то что textbox есть, уверен процентов на 90
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
v.korleone
Помогающий
Offline
|
|
« Ответ #33 : 29-04-2009 14:44 » |
|
текст-бокс есть не вопрос, но что там написано о нем? Написано не то, что мне нужно. Тут совсем другая конструкция чем там. Насчет "surn" там использовались переменные, а здесь нет.
|
|
|
Записан
|
|
|
|
v.korleone
Помогающий
Offline
|
|
« Ответ #34 : 29-04-2009 15:36 » |
|
Делаю так: num=thisform.text3.Value Select count(*) from database!personal_data WHERE personal_data.num=num thisform.text3.value=num thisform.refresh() Все работает, но выводит мое значение в другом окне. А я ведь хочу в указанном мною текст-боксе. Что делать?
|
|
|
Записан
|
|
|
|
Oldy
|
|
« Ответ #35 : 29-04-2009 16:15 » |
|
v.korleone, у тебя в результате выполнения запроса меняется активное окно, и thisform указывает уже на него. самое интересное, что результат запроса тобою не используется. Вариантов как всегда несколько: 1. вместо "thisform" явно указывать имя формы 2. используя кляузу "INTO" или "TO" построить запрос так, чтобы результат автоматически не вызывал окно "browse"
|
|
« Последнее редактирование: 29-04-2009 16:21 от Oldy »
|
Записан
|
С уважением, Oldy.
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #36 : 29-04-2009 18:39 » |
|
У меня практически уже есть решение этой задачи. Это не отменяет необходимости изучения матчасти. А её ты не знаешь - это очевидно.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
v.korleone
Помогающий
Offline
|
|
« Ответ #37 : 30-04-2009 04:13 » |
|
Задание, сделал. Едем дальше.
|
|
|
Записан
|
|
|
|
v.korleone
Помогающий
Offline
|
|
« Ответ #38 : 01-05-2009 06:42 » |
|
Запрос_3, делаю так: tmp=thisform.text4.Value SELECT * FROM database!service_data; WHERE DATE() BETWEEN holiday_begin AND holiday_end into cursor tmp thisform.text4.value=tmp thisform.refresh()
Ничего не считает и не выводит, но компилится без ошибок. Ваши предложения.
|
|
|
Записан
|
|
|
|
Oldy
|
|
« Ответ #39 : 01-05-2009 09:24 » |
|
уточни: 1. какое значение имеет переменная "tmp"? 2. чему равно значение holiday_begin? 3. чему равно значение holiday_end? 4. какое поле таблицы service_data сравнивается с этими значениями? 5. каким образом данные из временной таблицы (cursor tmp) попадут куда либо? 6. зачем это - "thisform.text4.value=tmp", разве там менялись значения? 7. последнее. Что должно было получиться?
|
|
« Последнее редактирование: 01-05-2009 09:32 от Oldy »
|
Записан
|
С уважением, Oldy.
|
|
|
v.korleone
Помогающий
Offline
|
|
« Ответ #40 : 01-05-2009 13:31 » |
|
1. переменной "tmp" присваивается результат вычислений и показывается в текст-боксе. 2. holiday_begin - это столбец, в котором введены даты начала отпусков сотрудников предприятия. 3. holiday_end - это столбец, в котором введены даты конца отпусков сотрудников предприятия. 4. насколько я понимаю здесь должна сравниваться текущая дата на момент пользования БД, поэтому воспользовался функцией DATE(), которая возвращает текущую дату. 5. путем присоения "thisform.text4.value=tmp" (здесь не уверен можеть быть баг) 6. см.5. Думаю, что менялись, но опять таки... 7. Должно получится количество людей в отпуске, которое будет записано в текст-бокс4. P.S. В функции BETWEEN по хелпу 3 аргумента: BETWEEN(eTestValue, eLowValue, eHighValue) eTestValue - задает выражение, значение которого проверяет ф-я BETWEEN(). eLowValue - задает нижнюю границу диапазона. eHighValue - задает верхнюю границу диапазона.
У меня как видите в коде 2 аргумента, но почему-то все компилится. Я так думаю, если в ф-и указать, больше или меньше аргументов, должно написать ошибку при компиляции. Если я не прав, то что указывать на месте eTestValue?
|
|
|
Записан
|
|
|
|
Oldy
|
|
« Ответ #41 : 02-05-2009 06:28 » |
|
ваш запрос (SELECT *) выбирает все записи у которых (WHERE - здесь полный бред потому как не верно введено условие отбора) во веменную таблицу (cursor) с именем tmp. можно посмотреть результаты запоса последовательно вызвав команды USE tmp и BROWSE, но вряд-ли получится засунуть весь кортеж, а он можен быть значительным, в textbox. Поскольку условие 7. Должно получится количество людей в отпуске, которое будет записано в текст-бокс4.
далее, по строкам: tmp=thisform.text4.Value - не нужно совсем. SELECT * FROM database!service_data WHERE DATE() BETWEEN holiday_begin AND holiday_end into cursor tmp - нужно заменить заменить на SELECT COUNT(*)FROM database!service_data WHERE holiday_begin>=DATE() AND holiday_end<=DATE() into m.tmp - здесь смотри как помещать результаты запроса в переменную), и наконец: thisform.text4.value=m.tmp thisform.refresh()
|
|
|
Записан
|
С уважением, Oldy.
|
|
|
v.korleone
Помогающий
Offline
|
|
« Ответ #42 : 03-05-2009 06:27 » |
|
Oldy, делаю так: SELECT COUNT(*) FROM database!service_data WHERE holiday_begin>=DATE() AND holiday_end<=DATE() into m.tmp thisform.text4.value=m.tmp thisform.refresh()
Пишет "синтаксическая ошибка" и подсвечивает 1-ю строку...
|
|
|
Записан
|
|
|
|
Oldy
|
|
« Ответ #43 : 03-05-2009 08:29 » |
|
Вполне может быть и ошибка. ...into m.tmp - здесь смотри как помещать результаты запроса в переменную имелось ввиду - смотри в хелпе как помещать результаты в переменную. попробуй INTO ARRAY tmp. Хотя конечно можно и через cursor: SELECT COUNT(*) AS result FROM database!service_data WHERE holiday_begin>=DATE() AND holiday_end<=DATE() INTO CURSOR tmp USE tmp GO TOP thisform.text4.value=tmp.result thisform.refresh() USE
|
|
« Последнее редактирование: 03-05-2009 08:44 от Oldy »
|
Записан
|
С уважением, Oldy.
|
|
|
v.korleone
Помогающий
Offline
|
|
« Ответ #44 : 03-05-2009 09:56 » |
|
Oldy, последний код, компилится, но при нажатии на кнопку выводится сообщение "File '...\tmp.dbf' does not exist" т.е. файл tmp.dbf не существует. Это действительно так, поскольку у меня его нет. Поскольку .dbf это таблица, пробовал указать свою таблицу (service_data), пишет "file is in use" т.е. используется. Ввожу в хелпе "INTO" вообще нет результатов, ввожу "cursor" там просто 1-2 предложения, описывающие его. Это все в русском хелпе. И еще вопрос: хелпе как помещать результаты в переменную - где именно? Сейчас буду смотреть в английском. P.S. Спасибо, за понимание, коды и ответы на вопросы.
|
|
|
Записан
|
|
|
|
Oldy
|
|
« Ответ #45 : 03-05-2009 10:53 » |
|
cursor tmp это временная таблица создается в результате выполнения запроса SELECT ... FROM ... WHERE ... INTO ... INTO описывается как часть команы SELECT, там и нужно смотреть. Попробуй закомментировать (&&) строку USE tmp и повтори компиляцию ......... Да, все верно, вместо USE tmp нужно SELECT tmp
|
|
« Последнее редактирование: 03-05-2009 11:04 от Oldy »
|
Записан
|
С уважением, Oldy.
|
|
|
v.korleone
Помогающий
Offline
|
|
« Ответ #46 : 03-05-2009 11:44 » |
|
Oldy, большое спасибо, начало выводить, но выводит 0, как в случае с коментированием USE tmp, так и при написании SELECT tmp. Обратил внимание, что в таблице записи зделаны так: (Мясяц, День, Год), а ф-я DATE() выдает (Год, Месяц, День). Может из-за этого ноль? Если да то, как изменить формат ввода в таблице? Знаете, новое решение, этой задачи? Вот, может Вам, как и мне, будет полезно: SELECT * FROM database!service_data WHERE DATE() BETWEEN holiday_begin AND holiday_end into cursor cur thisform.text4.value=_tally
Вся загвоздка в этой "_tally". Очень интересная штука, описание есть в русском хелпе. Oldy, большое спасибо, за поддержку.
|
|
« Последнее редактирование: 03-05-2009 11:53 от v.korleone »
|
Записан
|
|
|
|
Oldy
|
|
« Ответ #47 : 03-05-2009 11:51 » |
|
в таблице никак. см. команду SET DATE
|
|
|
Записан
|
С уважением, Oldy.
|
|
|
v.korleone
Помогающий
Offline
|
|
« Ответ #48 : 04-05-2009 06:42 » |
|
Задача, подсчет кол-ва детей сотрудников. Делаю так: SELECT SUM(quantity_children) FROM database!family_data into cursor cur thisform.text6.value=_tally
Выводит результат 1, который не есть правильным результатом В чем проблема? Думаю может дело в "_tally"?
|
|
|
Записан
|
|
|
|
Oldy
|
|
« Ответ #49 : 04-05-2009 07:50 » |
|
а что такое _tally, и прчем здесь записи? может если только на каждого ребенка добвлена своя запись? Тогда SUM и нафиг не нужна. Visual FoxPro 9.0 SP2 _TALLY System Variable
Contains the number of records processed by the most recently executed table command.
Результат находится во временной таблице "cur", в поле с возможным названием "SUM". Убедиться в этом можно выполнив после запроса следующие команды: SELECT cur BROWSE и с ним поступать надо как и в предыдущем посте т.е. присвоить thisform.text6.value значение находящееся в "CUR.SUM"
|
|
« Последнее редактирование: 04-05-2009 08:01 от Oldy »
|
Записан
|
С уважением, Oldy.
|
|
|
v.korleone
Помогающий
Offline
|
|
« Ответ #50 : 04-05-2009 08:01 » |
|
РЕШЕНО
|
|
|
Записан
|
|
|
|
v.korleone
Помогающий
Offline
|
|
« Ответ #51 : 04-05-2009 08:11 » |
|
Oldy, благодарю за содействие, помощь и подержку. Тема закрыта.
|
|
|
Записан
|
|
|
|
|