powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Просветите начинающего Даосиста
11 сообщений из 11, страница 1 из 1
Просветите начинающего Даосиста
    #32202145
Bobic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приятно иметь дело с БД профессионалами
Все догнал как работает FindFirst в рекордсете!
Сделал перекачку данных с помощью 2- х рекордсетов из одной таблы в другую). Скорость,просто чума.
Старый способ через переброску с помощью listbox работал (для 1200 записей) примерно 4 минуты, а через рекордсеты 3 секунды!!!
Спасибо Вам ребята большое,чтобы без Вас делал.
Но есть другая фича.
Есть две таблицы,между ними реляция 1 ко многим. В одной хранятся даты отпусков работника(отпуск может разделен на 2 или 3 периода) это подчиненная , а в главной таблице хранятся табель работника. В табеле ставится буква "О" если работник на данный момент в отпуске.

Так вот,как же с помощью рекордсетов могут общаться таблы ,у которых отношение 1 ко многим. Может посоветуете что нибудь... Буду очень рад любым советам. Нужно в рекордсетах взять к примеру запись в главной и обработать соответсвующие ей записи в подчиненной. Как с этим быть?
...
Рейтинг: 0 / 0
Просветите начинающего Даосиста
    #32202160
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для этого открываешь второй рекордсет не как таблу, а
set rs=currentdb.openrecordset("select * from Tab2 where Tab2.id='" & rs!id & "'")
если id текст.
...
Рейтинг: 0 / 0
Просветите начинающего Даосиста
    #32202171
Bobic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как тогда в рекордсете перемещаться по запам.
// select * from Tab2 where Tab2.id='" & rs!id & "'"
Открывать рекордсет в цикле?
...
Рейтинг: 0 / 0
Просветите начинающего Даосиста
    #32202182
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
перемещаешься внутри rs2 как обычно
(кстати в строке д.б. так
set rs 2 =currentdb.openrecordset("select * from Tab2 where Tab2.id='" & rs 1 !id & "'")
)
при переходе на новую запись в rs1
закрываешь rs2 и открываешь его заново.
получаешь рекордсет для нового значения rs1!id
...
Рейтинг: 0 / 0
Просветите начинающего Даосиста
    #32202196
Bobic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шурик 1,спасибо тебе большое,но может кодом поможешь,я запутался..Сижу туплю..

Кстати не подскажешь. Рекордсеты - это вообще работа непосредственно с ядром БД Jet или я не прав?
Уж быстро они черти работают (Даже начал на аксесу смотреть по другому)
...
Рейтинг: 0 / 0
Просветите начинающего Даосиста
    #32202208
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дык, а чего собственно надо-то, поточнее.

>Рекордсеты - это вообще работа непосредственно с ядром ...

рекордсеты это открытие копии выбираемых данных в оперативных мозгах
(ну, конечно, сколько влезет).
...
Рейтинг: 0 / 0
Просветите начинающего Даосиста
    #32202258
Bobic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Постараюсь объяснить. БД для учета и автоматизированного заполнения табелей рабочего времени.
Вот есть работник. Он либо работает в смену,либо в отпуске. На него заполняется табель.На каждый день,главная таблица содержит в частности 31 поле куда заносится количество отработанных часов (напр 7.2) . Если работник находится в очередном отпуске в этот день в поле ставится буква "О". То есть если он весь месяц в отпуске за каждый день ставится буква "O" или например он с 15 числа уходит в отпуск,то до 15 числа проставляются часы, а потом на 15,16 17 ...проставляются в поля буквы "О". Графики работы у меня уже заполняются,благодаря твоей помощи. А вот надо чтобы отпуска заполнялись (т.е в табеле главной таблицы ставилась на отпускные дни буква "О") с помощью подчиненной таблицы,в которой хранятся даты отпусков. Например если труженик идет 2 раза в год в отпуск,то есть 2 записи на него.В каждой записи поля "начало отпуска" и "конец отпуска" в виде дат.
Т.е. прога автоматом должна заполнять отпускные дни работников в соответствии с хранящимися датами отпусков в подчиненной таблице (многие)
Вот такая вот штука. У меня до сих пор вся эта хреновина работала так. Загружал все в листбоксы через SQL (также даты отпусков),а потом с помощью метода листбокса Column выдирал из литсбоксов данные и записывал в поля табеля.Ну естественно делал кучу фуций для преоразования дат.
Ну естественно быстродействие гнилое. Хочу все это переделать на манер рекордсетов. Вот это мемуары получились.
Может теперь что то прояснил.
Подскажи,Шура...Может посоветуешь что..
...
Рейтинг: 0 / 0
Просветите начинающего Даосиста
    #32202265
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну ты блин и Лев Толстой
...
Рейтинг: 0 / 0
Просветите начинающего Даосиста
    #32202273
Bobic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так не подскажешь что можно сделать то .....

Прога работает как дохлая черепаха....
...
Рейтинг: 0 / 0
Просветите начинающего Даосиста
    #32202305
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
set rs1=currentdb.openrecordset("Tabl1") - с отпусками
set rs2=currentdb.openrecordset("Tabl2") - с табелем
while not rs1.eof
rs2.findfirst "[id]=" & rs1!id
rs2.edit

'при условии что Tabl2 имеет следующий вид: Сотр-1-2-3-...-31
'если отпуск заканчивается в другом месяце, то проставляем до конца
'текущего
endotp = iif(month(rs1.КонецОтпуска)=month(rs1.НачалоОтпуска), _
rs1.КонецОтпуска, _
rs1.КонецОтпуска-day(rs1.КонецОтпуска))
for i=day(rs1.НачалоОтпуска) to day(endotp)
rs2(i+1)="O"
next i
rs2.update
rs1.movenext
wend

во как
не забудь хвост отпуска анологично запихать в следующий месяц
...
Рейтинг: 0 / 0
Просветите начинающего Даосиста
    #32202322
Bobic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Шура,рабочее время кончается. Пошлепал домой,попробую дома заколбасить и переварить кодовые советы.
Очень благодарен тебе за поддержку!
Завтра может снова на сиквел.ру заползу.
Bobic
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Просветите начинающего Даосиста
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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