powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите, пожалуйста, с запросами
25 сообщений из 50, страница 1 из 2
Помогите, пожалуйста, с запросами
    #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
Помогите, пожалуйста, с запросами
    #35958654
Wehr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Форум мертв???
...
Рейтинг: 0 / 0
Помогите, пожалуйста, с запросами
    #35958682
WehrФорум мертв???Сам по себе жив. Но по отношению к forum.foxclub.ru - мертв. Да и ковырятся в таких портянках пытаясь понять, что же на самом деле должно быть - занятие не из простых и приятных. Особенно если объяснение путаное, из несогласованных предложений с несогласованныыми по падежам словами. То есть само объяснение еще надо на русский перевести. :) А если в объяснении еще что-то вводится, но не говоритсся куда вводится... И не указывается на какой строке вываливается ошибка... Сплошные гадания.
...
Рейтинг: 0 / 0
Помогите, пожалуйста, с запросами
    #35958696
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Форум жив, но, во-первых, вопросы надо уметь задавать. Думаете у всех есть большое желание продираться сквозь нагормождение кодов и текстов? Во-вторых, надо бы и самому что-то пытаться делать. Хотите сказать, что с утра так ничего не предприняли для решения проблемы?

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

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

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

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

Здесь в селекте просто используешь функцию BETWEEN( ).
...
Рейтинг: 0 / 0
Помогите, пожалуйста, с запросами
    #35959934
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2. автоинкремент
3. where date() between strDate and endDate
*strDate and endDate поля таблицы, с началом и окончанием отпуска
4. where !(date() between strDate and endDate)
5. Детей у каждого работника или всего детей? Если оба родителя трудятся на этом предприятии?
...
Рейтинг: 0 / 0
Помогите, пожалуйста, с запросами
    #35959940
Wehr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно посмотреть на этот автоинкремент? Вставьте его код. Вводил дословно в справку нет там такого :( может банальное num=num+1, но хотелось как-то красивее.
...
Рейтинг: 0 / 0
Помогите, пожалуйста, с запросами
    #35959944
Wehr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
5. Нужно посчитать общее количестов детей тупо по столбцу... Насчет если оба родителя работают на предприятии как-то не думал, но на данном этапе, нужно разобраться как посчитать просто общее количество детей в колонке. Спасибо, за подсказки!
...
Рейтинг: 0 / 0
Помогите, пожалуйста, с запросами
    #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
Помогите, пожалуйста, с запросами
    #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
Помогите, пожалуйста, с запросами
    #35960085
ПД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
жать F1, искать описание функции MAX()

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

Автоинкремент - тип поля таблицы: Integer(autoinc..)
Вы ведь курсовик завалите если вас что-нить спросят по sql.
...
Рейтинг: 0 / 0
Помогите, пожалуйста, с запросами
    #35961717
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем какие то максы выводить?
Если сказано подсчитать, так и надо подсчитать, а не искать максимальные значения.
Темболее агрегатные функции нельзя включать в выражение where.
select count() from таблицаСотрудников
CALCULATE CNT() TO lnKolSotr IN таблицаСотрудников
Не ленитесь, основы SQL можно и за день разобрать. Хотя-бы по верхушкам пробежаться. Тут же видно полное отсутствие понимания.
...
Рейтинг: 0 / 0
Помогите, пожалуйста, с запросами
    #35961730
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Помогите, пожалуйста, с запросами
    #35961739
Wehr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"Тут же видно полное отсутствие понимания." - это да.... :( С++ лучше понимается чем SQl. Я просто хотел выбрать самый большой номер, в списке сотрудников. Насчет быстрого освоения SQl - это непросто, синтаксис у него какой-то не понятный IMHO :(
...
Рейтинг: 0 / 0
Помогите, пожалуйста, с запросами
    #35961747
Wehr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ , спасибо, за ссылку. Пока не читал, но судя по всему книженция знатная (несколько экранов занимает) :) Будем учится...
...
Рейтинг: 0 / 0
Помогите, пожалуйста, с запросами
    #35961938
Nnnnn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Wehr"Тут же видно полное отсутствие понимания." - это да.... :( С++ лучше понимается чем SQl. Я просто хотел выбрать самый большой номер, в списке сотрудников. Насчет быстрого освоения SQl - это непросто, синтаксис у него какой-то не понятный IMHO :(
эт с непривычки
...
Рейтинг: 0 / 0
Помогите, пожалуйста, с запросами
    #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
25 сообщений из 50, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите, пожалуйста, с запросами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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