Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2]  Все   Вниз
  Печать  
Автор Тема: Помогите, пожалуйста, с запросами  (Прочитано 41342 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #30 : 29-04-2009 14:06 » 

текстбокс.велью = результат_функции(переменной)

Хелп, наверное, так ни разу и не открыл

Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
v.korleone
Помогающий

ua
Offline 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
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #32 : 29-04-2009 14:36 » 

v.korleone, я ж тебе сказал - я не знаю фокса, и... знать не хочу.
Не верю
Если ты уже достал значение surn откуда-то то и смотри как его туда вернуть назад

а то что textbox есть, уверен процентов на 90
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
v.korleone
Помогающий

ua
Offline Offline

« Ответ #33 : 29-04-2009 14:44 » 

текст-бокс есть не вопрос, но что там написано о нем? Написано не то, что мне нужно. Тут совсем другая конструкция чем там. Насчет  "surn" там использовались переменные, а здесь нет.   
Записан
v.korleone
Помогающий

ua
Offline 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
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #35 : 29-04-2009 16:15 » 

v.korleone, у тебя в результате выполнения запроса меняется активное окно, и thisform указывает уже на него. самое интересное, что результат запроса тобою не используется. Вариантов как всегда несколько:
1. вместо "thisform" явно указывать имя формы
2. используя кляузу "INTO" или "TO" построить запрос так, чтобы результат автоматически не вызывал окно "browse"
« Последнее редактирование: 29-04-2009 16:21 от Oldy » Записан

С уважением, Oldy.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #36 : 29-04-2009 18:39 » 

Цитата: v.korleone
У меня практически уже есть решение этой задачи.
Это не отменяет необходимости изучения матчасти. А её ты не знаешь - это очевидно.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
v.korleone
Помогающий

ua
Offline Offline

« Ответ #37 : 30-04-2009 04:13 » 

Задание, сделал. Едем дальше.
Записан
v.korleone
Помогающий

ua
Offline 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
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #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
Помогающий

ua
Offline 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
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #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
Помогающий

ua
Offline 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
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #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
Помогающий

ua
Offline 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
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #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
Помогающий

ua
Offline 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
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #47 : 03-05-2009 11:51 » 

в таблице никак. см. команду SET DATE
Записан

С уважением, Oldy.
v.korleone
Помогающий

ua
Offline 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
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #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
Помогающий

ua
Offline Offline

« Ответ #50 : 04-05-2009 08:01 » 

РЕШЕНО
Записан
v.korleone
Помогающий

ua
Offline Offline

« Ответ #51 : 04-05-2009 08:11 » new

Oldy, благодарю за содействие, помощь и подержку. Тема закрыта.
Записан
Страниц: 1 [2]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines