powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / копирование записей
47 сообщений из 47, показаны все 2 страниц
копирование записей
    #38903424
Владимир_52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый день, прошу помочь начинающему.

Есть запрос (источник-таблица из другого файла), информацию из которого должна скопироваться в таблицу.
Копирую с использованием CurrentDb.Execute "INSERT INTO..."
Все копируется нормально, новые появившиеся записи в запросе тоже все копируются. Но если запись в источнике редактируется, то после повторного копирования никаких изменений в скопированных записях не производится.

Скажите пожалуйста, как сделать чтобы записи менялись?(первичный ключ записей код репликации)
...
Рейтинг: 0 / 0
копирование записей
    #38903457
Владимир_52Всем добрый день, прошу помочь начинающему.

Есть запрос (источник-таблица из другого файла), информацию из которого должна скопироваться в таблицу.
Копирую с использованием CurrentDb.Execute "INSERT INTO..."
Все копируется нормально, новые появившиеся записи в запросе тоже все копируются. Но если запись в источнике редактируется, то после повторного копирования никаких изменений в скопированных записях не производится.

Скажите пожалуйста, как сделать чтобы записи менялись?(первичный ключ записей код репликации)
Для начала, сделайте такое:
Код: vbnet
1.
CurrentDb.Execute "INSERT INTO...", dbFailOnError


так при ошибке выполнения запроса сообщение вам напишут
почитайте, может намек поймете
...
Рейтинг: 0 / 0
копирование записей
    #38903472
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поменянные записи надо обновлять апдейтами а не инсертами.

При синхронизации надо
1. Удалить записи, корторые были удалены в репликации
2. Добавить новые записи, которые появились в репликации
3. Обновить измененные в репликации записи

Другой кейс - все нафик грохнуть и залить все целиком из репликации

У вас пока есть только добавление.
...
Рейтинг: 0 / 0
копирование записей
    #38903616
Владимир_52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучка,
в этом случае ошибка возникает из-за повторяющейся записи. А вот как ее теперь исправить?
...
Рейтинг: 0 / 0
копирование записей
    #38903622
Владимир_52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
П-ЛПоменянные записи надо обновлять апдейтами а не инсертами.

При синхронизации надо
1. Удалить записи, корторые были удалены в репликации
2. Добавить новые записи, которые появились в репликации
3. Обновить измененные в репликации записи

Другой кейс - все нафик грохнуть и залить все целиком из репликации

У вас пока есть только добавление.

вот третий пункт меня и интересует. Как сделать не только добавление, но и изменение имеющихся?
...
Рейтинг: 0 / 0
копирование записей
    #38903628
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
апдейтами
...
Рейтинг: 0 / 0
копирование записей
    #38903629
Владимир_52непоймучка,
в этом случае ошибка возникает из-за повторяющейся записи. А вот как ее теперь исправить?выше П-Л все уже описал.

INSERT - это запрос на добавление записей.
Запись с уже существующим ключем (повторно) добавить нельзя - ключ уникален, отсюда ваша ошибка.
Существующие записи в приемнике нужно ОБНОВЛЯТЬ - см. запрос типа UPDATE.
...
Рейтинг: 0 / 0
копирование записей
    #38904736
А не проще ли будет таблицу прилинковать?
...
Рейтинг: 0 / 0
копирование записей
    #38904755
Владимир_52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучкаВладимир_52непоймучка,
в этом случае ошибка возникает из-за повторяющейся записи. А вот как ее теперь исправить?выше П-Л все уже описал.

INSERT - это запрос на добавление записей.
Запись с уже существующим ключем (повторно) добавить нельзя - ключ уникален, отсюда ваша ошибка.
Существующие записи в приемнике нужно ОБНОВЛЯТЬ - см. запрос типа UPDATE.

т.е. сначала нужно выполнить запрос update, а потом запрос insert?
...
Рейтинг: 0 / 0
копирование записей
    #38904763
Владимир_52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу привести пример запроса, который бы обновлял все поля всех совпадающих записей таблицы из запроса.
...
Рейтинг: 0 / 0
копирование записей
    #38904778
Владимир_52Прошу привести пример запроса, который бы обновлял все поля всех совпадающих записей таблицы из запроса.для таблиц с полями f0, f1, f2 (причем f0 - поле ключа):
Код: sql
1.
2.
UPDATE [ТаблицаПриемник] AS dst INNER JOIN [ТаблицаИсточник] AS src ON dst.f0 = src.f0
SET dst.f1 = src.f1, dst.f2 = src.f2
...
Рейтинг: 0 / 0
копирование записей
    #38904787
Владимир_52непоймучкапропущено...
выше П-Л все уже описал.

INSERT - это запрос на добавление записей.
Запись с уже существующим ключем (повторно) добавить нельзя - ключ уникален, отсюда ваша ошибка.
Существующие записи в приемнике нужно ОБНОВЛЯТЬ - см. запрос типа UPDATE.

т.е. сначала нужно выполнить запрос update, а потом запрос insert?Да. Чтобы сделать INSERT только тех записей, которых еще нет в приемнике, можно выбрать их, например, связав источник с приемником по LEFT JOIN с отбором по условию Приемник.Ключ IS NULL:
Код: sql
1.
2.
3.
4.
INSERT INTO [ТаблицаПриемник] 
SELECT src.* 
FROM [ТаблицаИсточник] AS src LEFT JOIN [ТаблицаПриемник] AS dst ON src.f0=dst.f0
WHERE dst.f0 IS NULL
...
Рейтинг: 0 / 0
копирование записей
    #38904888
Владимир_52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучкаВладимир_52Прошу привести пример запроса, который бы обновлял все поля всех совпадающих записей таблицы из запроса.для таблиц с полями f0, f1, f2 (причем f0 - поле ключа):
Код: sql
1.
2.
UPDATE [ТаблицаПриемник] AS dst INNER JOIN [ТаблицаИсточник] AS src ON dst.f0 = src.f0
SET dst.f1 = src.f1, dst.f2 = src.f2



Спасибо. Скажите пожалуйста, что делаю не правильно, когда в строку вставляю переменную-текст запроса таблицы источника?

CurrentDb.Execute "UPDATE [ТфблицаПриемник] AS dst INNER JOIN " & TextZapr & " AS src ON.....
...
Рейтинг: 0 / 0
копирование записей
    #38904898
Владимир_52Спасибо. Скажите пожалуйста, что делаю не правильно, когда в строку вставляю переменную-текст запроса таблицы источника?

CurrentDb.Execute "UPDATE [ТфблицаПриемник] AS dst INNER JOIN " & TextZapr & " AS src ON.....
если в TextZapr у вас - реально sql-текст некоторого select-запроса, то его дополнительно надо обернуть в круглые скобки

вообще для отладки запросов, собранных в коде vb рекомендую делать так:
Код: vbnet
1.
2.
3.
Dim sql$
sql = "UPDATE [ТфблицаПриемник] AS dst INNER JOIN " & TextZapr & " AS src ON..."
CurrentDb.Execute sql


на строке Execute сделать точку останова и посмотреть в окне отладки значение переменной sql
если сами не поймете, что не так - покажите этот текст тут
...
Рейтинг: 0 / 0
копирование записей
    #38904917
Владимир_52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучка, спасибо, буду пробовать
...
Рейтинг: 0 / 0
копирование записей
    #38905058
Владимир_52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучка,

скажите, два последовательных запроса (сначала обновление потом добавление) никаких подводных камней не содержат? (полная синхронизация баз не нужна, т.е. вопрос удаления не актуален)
...
Рейтинг: 0 / 0
копирование записей
    #38905066
\\\\
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир_52, почитай ещё про транзакции
...
Рейтинг: 0 / 0
копирование записей
    #38905070
Владимир_52непоймучка,

скажите, два последовательных запроса (сначала обновление потом добавление) никаких подводных камней не содержат?Ну запросы на изменение данных всегда выполняются последовательно. Что вообще вы называете "подводным камнем" в данном контексте?

Неадекватность результата цепочки (правильно написанных) запросов может возникнуть, когда последующие запросы ориентированы на обработку результата предыдущих запросов, и при этом происходит какая-то run-time ошибка на этапе выполнения одного из запросов.

Но во-первых, вы можете отловить такую ошибку в своем коде и должным образом обработать ее. Например, существует механизм транзакций, который позволяет при любой незвершенной (например, из-за ошибки) операции вернуть все измененные до этого данные в исходное состояние.

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

Кроме того, ваши два запроса могут быть выполнены многократно с тем же самым итогом, т.е. при непредвиденной ошибке выполнения одного из запросов, его можно просто повторить. Да и смена очередности выполнения этих запросов тоже не особо критична - если вы сделаете сначала добавление, а потом обновление, то второй запрос просто сделает лишнюю работу (обновит только что добавленные записи), но итоговый результат при этом все равно будет правильным.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
копирование записей
    #39832980
Aiso4ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучка,

непоймучкаВладимир_52Прошу привести пример запроса, который бы обновлял все поля всех совпадающих записей таблицы из запроса.для таблиц с полями f0, f1, f2 (причем f0 - поле ключа):
Код: sql
1.
2.
UPDATE [ТаблицаПриемник] AS dst INNER JOIN [ТаблицаИсточник] AS src ON dst.f0 = src.f0
SET dst.f1 = src.f1, dst.f2 = src.f2



А есть возможность какая-то не перечислять все поля в запросе? Прошу прощения за тупизм и некропостинг.
...
Рейтинг: 0 / 0
копирование записей
    #39832995
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aiso4ka,
Георгий_ТаренА не проще ли будет таблицу прилинковать?В этом топике раньше
...
Рейтинг: 0 / 0
копирование записей
    #39834686
Aiso4ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

не проще, так как данные собираются их трех таблиц, а потом общая таблица связана еще с десятком.
...
Рейтинг: 0 / 0
копирование записей
    #39834701
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и собирайте хоть из сотни.
Добавляйте рекордсетом и Update
...
Рейтинг: 0 / 0
копирование записей
    #39895588
Oleg_Ang
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!!!. Не хочу создавать новую тему, решил написать сюда. Есть таблица, а в ней пока 111 записей. есть форма (фрагмент этой формы на рисунке) на ней кнопка копирования записей в таблице, по сути идет их дублирование но с другой датой. код программы на нажатие кнопки такой
...
Рейтинг: 0 / 0
копирование записей
    #39895589
Oleg_Ang
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: vbnet
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.
Private Sub Copy_Click()
'Добавляет новые записей в таблицу "tbTarif"
Dim v As Variant
Dim lngRecID As Long
Dim rst As Recordset
Dim i As Integer
   
    v = DMax("KodT", "tbTarif")             'MAX значение ключевого поля счетчика
    lngRecID = v + 1                            'Значение ключ. поля новой записи
    
    strSQL = "SELECT * FROM tbTarif WHERE tbTarif.DataN=" & Me.DataOld & ";"
    Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
    For i = 1 To rst.RecordCount
        With rst
            .AddNew
             'Заполнение полей значениями
            !KodT = lngRecID           ' поле счетчик
            !DataN = Me.DataCopy    ' новая дата для заполнения поля
            
            'как вставить сюда те же значения полей что начинаются от предыдущей даты?
            '..............................
            '..............................
            
            .Update
        End With
        lngRecID = lngRecID + 1
    Next i

    On Error Resume Next
    rst.Close
    Set rst = Nothing
End Sub



рисунок начальной таблицы (см. рис. tabl1.jpg)
...
Рейтинг: 0 / 0
копирование записей
    #39895590
Oleg_Ang
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
рисунок формы
...
Рейтинг: 0 / 0
копирование записей
    #39895591
Oleg_Ang
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
рисунок конечного результата как должно быть при нажатии кнопки.
...
Рейтинг: 0 / 0
копирование записей
    #39895763
Oleg_Ang, откройте еще один рекордсет (лучше пустой) на этой таблице. Цикл по записям RS1, добавление записей в RS2.

...WHERE tbTarif.DataN=" & Me.DataOld & ";" - неправильное использование даты. Читайте ФАК.
...
Рейтинг: 0 / 0
копирование записей
    #39896413
Oleg_Ang
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кривцов Анатолий, вот что-то написал, но выдает ошибку на строке Update. где я что упустил
...
Рейтинг: 0 / 0
копирование записей
    #39896510
Oleg_Ang, тип вашего поля "KodT" случайно не счетчик? Оно точно первое?
Выполните пошаговую отработку кода и проверьте, какое значение вы присваиваете, нет ли такого уже.
В таблице нет других полей с уникальным индексом?

В вашем коде нет цикла по записям rst. Даже если код заработает, это будет создание копии только одной записи.
И еще, цикл по полям начинается с 3, это четвертое по счету поле, а третье выпадает. Хотя может так и задумано...
...
Рейтинг: 0 / 0
копирование записей
    #39896662
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кривцов Анатолий
В вашем коде нет цикла по записям rst.

Как же нет?
Код: vbnet
1.
For i to rst.RecordCount
...
Рейтинг: 0 / 0
копирование записей
    #39896700
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
rst2.fields(0)=lngID '!кодТ


А Вы уверены что в таблице-источнике формы значение кодового поля + 1 не может совпасть со значением ID в таблице Tarif-о чем и сообщается
(да и вообще "трогать" ключ-счетчик есть не правильно от слова совсем)
...
Рейтинг: 0 / 0
копирование записей
    #39896702
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в догонку:циклом Вы перемещаетесь по полям записи,а не по записям рекордсета
...
Рейтинг: 0 / 0
копирование записей
    #39896899
Oleg_Ang
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кривцов Анатолий, да это счетчик. я брал подобное решение здесь http://msa.polarcom.ru/st/s0000004.htm
...
Рейтинг: 0 / 0
копирование записей
    #39896930
ИВП
Кривцов Анатолий
В вашем коде нет цикла по записям rst.

Как же нет?
Код: vbnet
1.
For i to rst.RecordCount

Цикл, это когда есть переход по записям, а у вас нет MoveNext.
Вы несколько раз копируете одну и ту же запись, только увеличивая lngID.
Переменную i вы нигде не используете. И вообще, перемещение по записям обычно выполняется в цикле Do Until rst.EOF.

Ну и о присвоении значения счетчику - согласен с sdku.
...
Рейтинг: 0 / 0
копирование записей
    #39896940
Oleg_Ang
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кривцов Анатолий, да я пробовал и так и сяк. почему при таком коде пишет что уже конец файла и не идет в цикл (выделено жирным). может что-то со строкой strSQL не так. но ставил в запрос, там все выводит. а что по поводу счетчика? если нельзя, то как тогда добавить запись?

Код: vbnet
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.
Private Sub Copy_Click()
'Добавляет новые записей в таблицу "tbTarif"
Dim lngID As Long, v As Long
Dim rst As DAO.Recordset, rst2 As DAO.Recordset
Dim i As Integer
Dim strSQL As String, strSQL1 As String

strSQL = "SELECT Max(tbTarif.KodT) AS [Max-KodT] FROM tbTarif"
Set rst = CurrentDb.OpenRecordset(strSQL, dbReadOnly)
v = rst.Fields(0)

'v = DMax("KodT", "tbTarif")             'MAX значение ключевого поля счетчика
lngID = v + 1                            'Значение ключ. поля новой записи

strSQL1 = "SELECT * FROM tbTarif"
Set rst2 = CurrentDb.OpenRecordset(strSQL1, dbOpenDynaset)

strSQL = "SELECT * FROM tbTarif WHERE tbTarif.DataN=#" & Format(Me.DataOld, "dd\/mm\/yyyy") & "#;"
Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
    Do Until rst.EOF
        rst2.AddNew
        'Заполнение полей значениями
        rst2.Fields(0) = lngID                   ' !KodT - это счетчик в таблице tbTarif
        rst2.Fields(1) = Me.DataNew         ' !DataN новая дата заполнения полей
            For j = 2 To rst.Fields.Count - 1
                rst2.Fields(j) = rst.Fields(j)
            Next j
        rst2.Update
        lngID = lngID + 1
    rs.MoveNext
    Loop
    
    On Error Resume Next
    rst.Close
    rst2.Close
    Set rst = Nothing
    Set rst2 = Nothing
End Sub
...
Рейтинг: 0 / 0
копирование записей
    #39896950
Oleg_Ang
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сори, тупанул с датой. не ту набрал вот потому и не пускал в цикл, а так вроде все заработало. видать после выходных не внимателен)
...
Рейтинг: 0 / 0
копирование записей
    #39896965
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg_Ang
Кривцов Анатолий, да это счетчик. я брал подобное решение здесь http://msa.polarcom.ru/st/s0000004.htm
Код: vbnet
1.
 ...v = DMax("exRecordID", "tblExample")   'MAX значение ключевого поля (НЕ СЧЕТЧИКА !)..
...
Рейтинг: 0 / 0
копирование записей
    #39896972
Oleg_Ang
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku, там есть и второй вариант
...
Рейтинг: 0 / 0
копирование записей
    #39896979
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как я понял Ваш код выполняет следующее:
-подсчитывает количество записей на определенную пользователем дату и добавляет в таблицу tbTarif такое же количество записей с другим значением поля rst2.Fields(1) (не знаю как оно у Вас называетя и правильно ли я понял Вашу "хотелку")
-отстаньте от кодового поля-счетчика,добавленным записям значение этого поля задается автоматически
...
Рейтинг: 0 / 0
копирование записей
    #39897053
Oleg_Ang
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku, да точно. это поле дата rst2.Fields(1) = Me.DataNew ' !DataN новая дата заполнения на момент изменения
тупо меняется дата и все. может есть пример что-то упростить в моем коде?
...
Рейтинг: 0 / 0
копирование записей
    #39897113
Oleg_Ang
тупо меняется дата и все. может есть пример что-то упростить в моем коде?
Что бы что-то посоветовать, надо сначала понять, с какой целью вы дублируете данные, меняя только дату. Может вам надо хранить даты не в этой таблице, а в подчиненной, связанной с ней по KodT?
...
Рейтинг: 0 / 0
копирование записей
    #39897217
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если добавить новые записи с пустыми полями,кроме поля myDate с новым значением, то так:
Код: vbnet
1.
2.
3.
4.
5.
Dim myC, i
myC = DCount("*", "tbl", "myDate=#" & Format(Me.stDate, "mm\/dd\/yyyy\#"))
For i = 1 To myC
CurrentDb.Execute "insert into tbl(myDate) values (#" & Format(Me.Ndate, "mm\/dd\/yyyy\#") & ")"
Next

если обновить новым значением поле в существующих записях-запрос на обновление (вообще код не нужен)
Поясните что именно Вы хотите
...
Рейтинг: 0 / 0
копирование записей
    #39897399
Oleg_Ang
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku, доброе утро. так вроде все объяснил выше. есть штатное расписание для каждого человека (занесено в табл tbTarif). если меняется штатное (вводятся изменения) на определен. дату, то чтобы все опять не набирать по каждому человеку нужно продублировать предыдущее штатное только с НОВОЙ ДАТОЙ (rst2.Fields(1) = Me.DataNew), но все старые значения по остальным полям сохранить в новых полях, а потом уже по единичным работникам вносить изменения. так проще чем опять вводить 350 записей вручную. как-то так.
вот фрагмент формы на рисунке. где есть две кнопки. копирования и удаления. кнопка удаления почему не работает пишу такой код, а в таблице записи не удаляются. в чем моя ошибка?

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Sub Del_Click()
'Удаление записей из таблицы "tbTarif" на установленную дату
Dim strSQl As String

If MsgBox("Хотите удалить данные на " & Me.DataOld & "?", vbYesNo + vbInformation + vbDefaultButton1, "Удаление данных") = vbNo Then Exit Sub
    strSQl = "DELETE * FROM tbTarif WHERE tbTarif.DataN=#" & Format(Me.DataOld, "dd\/mm\/yyyy#")
    CurrentDb.Execute strSQl
    Me.Requery
End Sub
...
Рейтинг: 0 / 0
копирование записей
    #39897406
Oleg_Ang
strSQL = "SELECT * FROM tbTarif WHERE tbTarif.DataN=#" & Format(Me.DataOld, "dd\/mm\/yyyy") & "#;"

сори, тупанул с датой. не ту набрал
...
почему не работает пишу такой код, а в таблице записи не удаляются. в чем моя ошибка?

strSQl = "DELETE * FROM tbTarif WHERE tbTarif.DataN=#" & Format(Me.DataOld, "dd\/mm\/yyyy # ")
CurrentDb.Execute strSQl
Не знаю, как вы справились первый раз, но грабли остались. Дата в запросе должга быть в формате MM/DD/YYYY. Также замыкающая "#" указана неправильно.
...
Рейтинг: 0 / 0
копирование записей
    #39897418
Oleg_Ang
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кривцов Анатолий, спасибо большое все прошло)
...
Рейтинг: 0 / 0
копирование записей
    #39897459
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такой лобовой подход к решению задачи штатного расписания, совершенно не приемлем для базы данных. Я предвижу огромные проблемы уже в ближайшее время. Зачем копировать все записи, например, если введена только лдна новая должность? Или произошло одно изменение, скажем, в размере премии? А как быть, если, наоборот, какая-то ставка упразднена? Или работник уволился? Работник уволится вместе с должностью? Или должность исчезнет вместе с работником? ....
Штатное расписание и работники - это две разные сущности. И объединять их в одной таблице - ошибка (мягко говоря!). Необходимо проработать сущность "Штатное расписание" с соответствующим набором таблиц и процедур по их ведению. Включая историю и аудит лог. Необходимо создать базу данных на людей - со всеми необходимыми данными. И, также с процедурами ведения, истории и лога. И только после этого проработать базу данных совмещения штатного расписпния и людей. И здесь тоже нужна будет история и лог.
Задача не такая простая, как кажется.
...
Рейтинг: 0 / 0
копирование записей
    #39897492
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rivkin Dmitry
+100500
"Не все так просто как кажется" (Козьма Прутков)
...
Рейтинг: 0 / 0
47 сообщений из 47, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / копирование записей
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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