powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проверка наличия номера...
15 сообщений из 15, страница 1 из 1
Проверка наличия номера...
    #32228858
G&P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, а то совсем потерялся...
Проблема в следующем: есть список сотрудников, у каждого из них есть свой id, который есть значение поля-счетчика. Мне нужно на каждый id создать запись в новой таблице. Это сделал:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
For i =  1  To DCount( "[men_id]" ,  "Sotrudniki" )
      With rst
        .AddNew
        !men_id = i
        !data_zp = Date
        !summa_zp =  0 
        .Update
      End With
Next i

Но если кого-то из сотрудников увольняют, то в этой таблице появляется пустая строка. То есть уволили сотрудника с id=5 - появится ненужная мне строка с men_id=5. Как это обойти?
Как вариант думаю поменять первую строку кода на
Код: plaintext
For i = DMin( "[men_id]" ,  "Sotrudniki" ) To DMax( "[men_id]" ,  "Sotrudniki" )

а как проверить во время цикла (прежде чем присваивать !men_id=i) - есть ли такой номер сотрудника или нет?
С уважением...
...
Рейтинг: 0 / 0
Проверка наличия номера...
    #32228884
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
If DCount("[men_id]", "Sotrudniki", "[men_id]=" & CStr(i)) > 0 Then ...
...
Рейтинг: 0 / 0
Проверка наличия номера...
    #32228886
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А вообще лучше не циклом, а одним инсертом.
...
Рейтинг: 0 / 0
Проверка наличия номера...
    #32228894
G&P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... не понял. Вопрос не в этом: как узнать в процессе выполнения цикла, что очередное значение i (переменной цикла) отсутствует в id сотрудников?
...
Рейтинг: 0 / 0
Проверка наличия номера...
    #32228901
G&P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а как одним инсертом вставить строки для всех имеющихся id в таблице сотрудники?
...
Рейтинг: 0 / 0
Проверка наличия номера...
    #32228911
G&P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На данный момент всё это выглядит так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Set rst = dbs.OpenRecordset( "ZP" , dbOpenDynaset)
For i =  1  To DCount( "[men_id]" ,  "Sotrudniki" )
      With rst
        .AddNew
        !zp_id =  0 
        !zp_id1 =  0 
        !men_id = i
        !name_men = DLookup( "[name]" ,  "NameSotr" ,  "[men_id] ="  & i)
        !data_zp = Date
        If IsNull(DLookup( "[summa_zp]" ,  "ZP" ,  "[men_id] ="  & i)) = False Then
        !summa_zp = DLookup( "[summa_zp]" ,  "ZP" ,  "[men_id] ="  & i)
        Else
        !summa_zp =  0 
        
        End If
        .Update
      End With
    Next i
...
Рейтинг: 0 / 0
Проверка наличия номера...
    #32228915
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> Вопрос не в этом: как узнать в процессе выполнения цикла, что очередное значение i (переменной цикла) отсутствует в id сотрудников?

А в чем?

> а как одним инсертом вставить строки для всех имеющихся id в таблице сотрудники?

INSERT INTO таблица ( men_id)
SELECT men_id
FROM Sotrudniki;
...
Рейтинг: 0 / 0
Проверка наличия номера...
    #32228936
G&P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч: сорри, не понял сначала строки с DCount. Всё ясно, спасибо...
...
Рейтинг: 0 / 0
Проверка наличия номера...
    #32228956
G&P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А по поводу инсерта неясно не то, как пишуться ключевые слова, а то как присваивать, к примеру, каждому полю дата для всех вновь созданных записей значение Date(). Или полю summa_zp - значение последней summa_zp в этой таблице для каждого id?
...
Рейтинг: 0 / 0
Проверка наличия номера...
    #32228969
>каждому полю дата для всех вновь созданных записей значение Date().
в поле cdqjcndj DeafultValue = Date() и не упоминай это поле при встаке INSERTом
или формируй динамически SQL строку
...
Рейтинг: 0 / 0
Проверка наличия номера...
    #32228972
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> как присваивать, к примеру, каждому полю дата для всех вновь созданных записей значение Date().

INSERT INTO ZP ( men_id, data_zp )
SELECT men_id, Date() AS data_zp
FROM Sotrudniki;

> Или полю summa_zp - значение последней summa_zp в этой таблице для каждого id?

Что значит последней? Их для каждого id несколько?
...
Рейтинг: 0 / 0
Проверка наличия номера...
    #32228991
G&P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Владимир Саныч: Что значит последней? Их для каждого id несколько?

Да, их несколько, поскольку этой строкой происходит автоматическое заполнение нового листа зарплат на новый месяц. Данные последних сумм должны автоматом быть в новых, дабы имелась возможность видеть уровень последней зарплаты и на этом решать - изменять её для кого-то или нет.... Вот так.
...
Рейтинг: 0 / 0
Проверка наличия номера...
    #32229046
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Тогда так:

INSERT INTO ZP ( men_id, data_zp, last_zp )
SELECT men_id, Date() AS data_zp, First(xxx.last_zp)
FROM Sotrudniki INNER JOIN xxx
GROUP BY men_id;

где xxx - это запрос, в котором взята таблица листов зарплат и рассортирована по дате по убыванию.
...
Рейтинг: 0 / 0
Проверка наличия номера...
    #32229061
G&P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, Владимир Саныч за отзывчивость. А почему ты считаешь, что циклом будет хуже? Он что - медленнее будет выполняться? Есть ли смысл сейчас все менять на инсерт?
...
Рейтинг: 0 / 0
Проверка наличия номера...
    #32229089
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
- Папа, а почему солнце восходит и заходит?
- Работает? Не трогай!

По этому принципу лучше не переделывать. Но инсертом должно быть быстрее.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проверка наличия номера...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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