Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите, пожалуйста, с запросами / 25 сообщений из 50, страница 1 из 2
28.04.2009, 08:48
    #35957497
Wehr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста, с запросами
С SQL практически не знаком, не судите строго...
Вводная информация: Есть одна база данных в ней 4 таблицы, в которых содержится информация отдела кадров предприятия (личные, семейные, служебные данные, данные об образовании). Зделать следующие запросы:
Запрос_1: Поиск по фамилли.(желательно, чтобы можно было осуществлять как по целой фамилии так и по введеной букве или буквам, например показать все фамилии на букву "К"). Вывод осуществлять в таблицу на форме, в которой столбцы это некоторые столбцы из всех таблиц, которые дают наиболее важную информацию о человеке. Таким образом получается, свооеобразная зборная таблица в которой находится найденный человек или группа людей, но не только показуется его фамилия но и другие данные.
Запрос_2: Подсчет общего количества сотрудников на работе. В таблице есть поле "служебный номер" (num) тип integer, который присваивается каждому сотруднику (как сделать этот процес автоматическим? Чтобы когда пользователь пишет в форме добавить инф. о новом сторуднике и переходит к форме заполнения, служебный номер генерировался сам, а потом пользователь спокойно себе запоняет остальные поля).
Запрос_3: Подсчет количества работников которые находятся в отпуске. Есть поля в таблице, котрые показывают, когда сотрудник идет в отпуск (holiday_begin) и когда он у него заканчивается (holiday_end) типы полей Date.
Запрос_4: Подсчет количества работников которые работают. (Не путать с общим числом рабочих!) Получается, что Общее_количество_рабочих (ОКР)- Количестов_работников_в отпуске (КВО)= Рабочие_котрые_работают (РКР).
Запрос_5: Подсчет количества детей работников. Здесь сам должен разобраться, если покажете, как делать остальное.

Таблицы выглядят так:

1. Personal Data

num | surname | name | patronymic | year_birth | identification_num | series_pasport | num_pasport |

2. Family Data

num | marital_status | quantity_children | sreet | num_house | num_kv |

3. Education data

num | name_education | speciality | type_education | year_ending |

4. Service_data

num | post | date_arrival | date_care | holiday_begin | holiday_end | servise_note |

Зделал, что-то вроде этого (по мотивам тем на этом форуме :)):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
 surn=thisform.text1.Value
 SELECT DISTINCT personal_data.surname;
 FROM database!personal_data;
 WHERE  personal_data.surname=surn;
 INTO CURSOR result 
&&обирається курсор, в якому зберігаються результати пошуку
			SELECT 'result'
&&Результати пошуку відображаються в таблиці "Результати пошуку"
			thisform.grid1.RecordSource='result'
&&оновлення таблиці "Результати пошуку"
			thisform.grid1.Refresh
&&підпис колонок в таблиці відображення результатів пошуку
			thisform.grid1.column1.header1.Caption='num'
			thisform.grid1.column2.header1.Caption='surname'
			thisform.grid1.column3.header1.Caption='name'
			thisform.grid1.column4.header1.Caption='patronymic'
			thisform.grid1.column5.header1.Caption='identifikation nom'
			thisform.grid1.column6.header1.Caption='year_birth'
			
&&задання ширини колонок в таблиці відображення результатів пошуку
			thisform.grid1.column1.Width= 40 
			thisform.grid1.column2.Width= 200 
			thisform.grid1.column3.Width= 150 
			thisform.grid1.column4.Width= 150 
			thisform.grid1.column5.Width= 150 
			thisform.grid1.column6.Width= 150 

SET ANSI OFF
surn1=ALLTRIM(thisform.text1.Value)
surn2=ALLTRIM(thisform.text2.Value)
surn3=ALLTRIM(thisform.text3.Value)
surn4=ALLTRIM(thisform.text4.Value)
surn5=ALLTRIM(thisform.text5.Value)
SELECT DISTINCT personal_data.surname;
 FROM database!personal_data;
 WHERE  personal_data.surname=surn;
 AND personal_data.surname=surn2;
 AND personal_data.surname=surn3;
 AND personal_data.surname=sur4;
 AND personal_data.surname=surn5;
 INTO CURSOR result 
&&обирається курсор, в якому зберігаються результати пошуку
			SELECT 'result'
&&Результати пошуку відображаються в таблиці "Результати пошуку"
			thisform.grid1.RecordSource='result'
&&оновлення таблиці "Результати пошуку"
			thisform.grid1.Refresh
&&підпис колонок в таблиці відображення результатів пошуку
			thisform.grid1.column1.header1.Caption='num'
			thisform.grid1.column2.header1.Caption='surname'
			thisform.grid1.column3.header1.Caption='name'
			thisform.grid1.column4.header1.Caption='patronymic'
			thisform.grid1.column5.header1.Caption='identifikation nom'
			thisform.grid1.column6.header1.Caption='year_birth'
			
&&задання ширини колонок в таблиці відображення результатів пошуку
			thisform.grid1.column1.Width= 40 
			thisform.grid1.column2.Width= 200 
			thisform.grid1.column3.Width= 150 
			thisform.grid1.column4.Width= 150 
			thisform.grid1.column5.Width= 150 
			thisform.grid1.column6.Width= 150 
 

Форма компилится, но в моей таблице всего лишь 2 столбца: 1-й активный "surname", 2-й неактивный т.е. подсвечивает серым. Когда ввожу поиск 2 первых буквы фамилии, то выдает ошибку типа: " Unknown member COLUMN2 ". Нажимаю Ignore, появляется такое же сообщение, но уже " Unknown member COLUMN3 " и так до конца, т.е. до 6. Дальше как положено сообщение типа " Unknown member TEXT2 " и тоже, соответственно до 5.
Самое смешное, то что когда нажимаю Cancel, все работает т.е. выводит фамилию. Подскажите как избавится от ошибок, как сделать чтобы и другие столбцы были активными и в них была занесена инф. по искомому объекту. А также просьба с другими задачами помочь.
...
Рейтинг: 0 / 0
28.04.2009, 15:33
    #35958654
Wehr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста, с запросами
Форум мертв???
...
Рейтинг: 0 / 0
28.04.2009, 15:42
    #35958682
Помогите, пожалуйста, с запросами
WehrФорум мертв???Сам по себе жив. Но по отношению к forum.foxclub.ru - мертв. Да и ковырятся в таких портянках пытаясь понять, что же на самом деле должно быть - занятие не из простых и приятных. Особенно если объяснение путаное, из несогласованных предложений с несогласованныыми по падежам словами. То есть само объяснение еще надо на русский перевести. :) А если в объяснении еще что-то вводится, но не говоритсся куда вводится... И не указывается на какой строке вываливается ошибка... Сплошные гадания.
...
Рейтинг: 0 / 0
28.04.2009, 15:46
    #35958696
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста, с запросами
Форум жив, но, во-первых, вопросы надо уметь задавать. Думаете у всех есть большое желание продираться сквозь нагормождение кодов и текстов? Во-вторых, надо бы и самому что-то пытаться делать. Хотите сказать, что с утра так ничего не предприняли для решения проблемы?

Ну, почитайте вот это

Пропадают настройки Grid, события столбцов, заголовков, ячеек
...
Рейтинг: 0 / 0
28.04.2009, 16:21
    #35958848
Wehr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста, с запросами
проходящий., помоему, все нормально и доступно описано.
...
Рейтинг: 0 / 0
28.04.2009, 16:34
    #35958884
Помогите, пожалуйста, с запросами
Wehr проходящий., помоему, все нормально и доступно описано.Всем вопрошающим здесь каждется, что они объясняют ясно и четко. Правда потом выясняется куча неуказанных особенностей и свое особенное понимание некоторыми вопрошающими применяемых ими терминов, в результате чего читатели, почему-то, понимают совсем не то, что хотел сказать вопрошавший. А имел в виду он, обычно, совсем не то, что написал. А нужно, на самом деле, обычно, что-то четвертое. А уточняющие вопросы здесь задают от нечего делать и/или для издевательства на вопрошающими.
...
Рейтинг: 0 / 0
28.04.2009, 16:52
    #35958959
Wehr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста, с запросами
Так уточняющих вопросов нет, были бы ответил... не вопрос...
...
Рейтинг: 0 / 0
28.04.2009, 16:58
    #35958979
Помогите, пожалуйста, с запросами
WehrТак уточняющих вопросов нет, были бы ответил... не вопрос...А про отсутствие уточняющих вопросов мы с ВладимиромМ вроде бы уже ответили.
...
Рейтинг: 0 / 0
28.04.2009, 17:02
    #35958990
Wehr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста, с запросами
Ну спасибо, уважили...
...
Рейтинг: 0 / 0
28.04.2009, 19:56
    #35959472
Wehr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста, с запросами
1-е задание сделал. Кто-то знает что-нибудь по 2-му, 3-му заданию (запросу)?
...
Рейтинг: 0 / 0
29.04.2009, 08:39
    #35959897
Nnnnn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста, с запросами
Wehr Запрос_2: Подсчет общего количества сотрудников на работе. В таблице есть поле "служебный номер" (num) тип integer, который присваивается каждому сотруднику (как сделать этот процес автоматическим? Чтобы когда пользователь пишет в форме добавить инф. о новом сторуднике и переходит к форме заполнения, служебный номер генерировался сам, а потом пользователь спокойно себе запоняет остальные поля).

Ну пожалуйста - вот вопрос: есть какие-либо правила присвоения служебного номера сотруднику или пофиг какой номер будет? Если все равно - то просто тип автоинкремента использовать. Если есть правила - пишешь функцию какую-нить для генерации этого номера с учетом всех правил.

Вообще для начала почитай хелп про Select хотя бы - многое сам сможешь сделать. Это же совсем нетрудно.
...
Рейтинг: 0 / 0
29.04.2009, 09:04
    #35959932
Nnnnn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста, с запросами
Wehr Запрос_3: Подсчет количества работников которые находятся в отпуске. Есть поля в таблице, котрые показывают, когда сотрудник идет в отпуск (holiday_begin) и когда он у него заканчивается (holiday_end) типы полей Date.

Здесь в селекте просто используешь функцию BETWEEN( ).
...
Рейтинг: 0 / 0
29.04.2009, 09:05
    #35959934
GoshaS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста, с запросами
2. автоинкремент
3. where date() between strDate and endDate
*strDate and endDate поля таблицы, с началом и окончанием отпуска
4. where !(date() between strDate and endDate)
5. Детей у каждого работника или всего детей? Если оба родителя трудятся на этом предприятии?
...
Рейтинг: 0 / 0
29.04.2009, 09:06
    #35959940
Wehr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста, с запросами
Можно посмотреть на этот автоинкремент? Вставьте его код. Вводил дословно в справку нет там такого :( может банальное num=num+1, но хотелось как-то красивее.
...
Рейтинг: 0 / 0
29.04.2009, 09:09
    #35959944
Wehr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста, с запросами
5. Нужно посчитать общее количестов детей тупо по столбцу... Насчет если оба родителя работают на предприятии как-то не думал, но на данном этапе, нужно разобраться как посчитать просто общее количество детей в колонке. Спасибо, за подсказки!
...
Рейтинг: 0 / 0
29.04.2009, 09:16
    #35959959
GoshaS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста, с запросами
2. To generate values, such ID numbers, use Integer (Autoinc) that automatically increments the value.
Справка по: Create table.
3.4.5. Подсчет строк как обычно: select count() from table where условие
...
Рейтинг: 0 / 0
29.04.2009, 09:27
    #35959975
Wehr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста, с запросами
2-ю задачу делаю так:
Код: plaintext
1.
2.
3.
4.
5.
SET ANSI OFF  
   thisform.text3.Refresh  
   maks=ALLTRIM(thisform.text3.Value)  
   SELECT * FROM database!personal_data;   
   Where MAX(personal_data.num)=maks;  
   INTO CURSOR result
Пишет ошибку "Too few arguments" и подсвечивает последние 4 строки, подскажите где натупил?
...
Рейтинг: 0 / 0
29.04.2009, 10:07
    #35960085
ПД
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста, с запросами
жать F1, искать описание функции MAX()

надеюсь это просто курсовая, сделать и забыть?
...
Рейтинг: 0 / 0
29.04.2009, 11:16
    #35960290
Nnnnn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста, с запросами
Wehr,

Автоинкремент - тип поля таблицы: Integer(autoinc..)
Вы ведь курсовик завалите если вас что-нить спросят по sql.
...
Рейтинг: 0 / 0
29.04.2009, 17:58
    #35961717
GoshaS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста, с запросами
Зачем какие то максы выводить?
Если сказано подсчитать, так и надо подсчитать, а не искать максимальные значения.
Темболее агрегатные функции нельзя включать в выражение where.
select count() from таблицаСотрудников
CALCULATE CNT() TO lnKolSotr IN таблицаСотрудников
Не ленитесь, основы SQL можно и за день разобрать. Хотя-бы по верхушкам пробежаться. Тут же видно полное отсутствие понимания.
...
Рейтинг: 0 / 0
29.04.2009, 18:02
    #35961730
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста, с запросами
...
Рейтинг: 0 / 0
29.04.2009, 18:05
    #35961739
Wehr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста, с запросами
"Тут же видно полное отсутствие понимания." - это да.... :( С++ лучше понимается чем SQl. Я просто хотел выбрать самый большой номер, в списке сотрудников. Насчет быстрого освоения SQl - это непросто, синтаксис у него какой-то не понятный IMHO :(
...
Рейтинг: 0 / 0
29.04.2009, 18:08
    #35961747
Wehr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста, с запросами
ВладимирМ , спасибо, за ссылку. Пока не читал, но судя по всему книженция знатная (несколько экранов занимает) :) Будем учится...
...
Рейтинг: 0 / 0
29.04.2009, 19:23
    #35961938
Nnnnn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста, с запросами
Wehr"Тут же видно полное отсутствие понимания." - это да.... :( С++ лучше понимается чем SQl. Я просто хотел выбрать самый большой номер, в списке сотрудников. Насчет быстрого освоения SQl - это непросто, синтаксис у него какой-то не понятный IMHO :(
эт с непривычки
...
Рейтинг: 0 / 0
29.04.2009, 19:33
    #35961959
Wehr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста, с запросами
Делаю так:
Код: plaintext
1.
2.
3.
4.
     
   num=thisform.text3.Value  
   Select count(*) from database!personal_data WHERE personal_data.num=num  
   thisform.text3.value=num   
   thisform.refresh()
Все работает, но выводит мое значение в другом окне. А я ведь хочу в указанном мною текст-боксе. Что делать?
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите, пожалуйста, с запросами / 25 сообщений из 50, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]