Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 05:40 18.05.24 
Компютри и Интернет
   >> Бази данни
Всички теми Следваща тема *Кратък преглед

Тема Ъпдейт на таблица в Аксеснови  
АвторSgromolenko (Нерегистриран)
Публикувано04.02.07 17:38



Имам една таблица в аксес, която съдържа стари данни. Данните и трябва да се обновят от друга таблица, като вариантите за обновление са 2:
1. В старата таблица има съществуващ запис, който трябва да се опресни с нови данни.
2. В старата таблица няма такъв запис и се налага да се добави.
Отделно на това в новата таблицата източник има поле "yes/no" дали записа е обработен, т. е. след като бъде добавен или опреснен в старата, трябва да стане на yes
Ако използвам Append Query и след това Update Query изниква опасност от грешки (защото в първата таблица може да има дублирани записи) + това при Append Query не намирам начин да сменя полето за състояние (обработен запис).
Сещате ли се за елегантен начин да реша проблема, че втори ден се блъскам и нищо не ми идва на акъла.
Поздрави



Тема Re: Ъпдейт на таблица в Аксеснови [re: Sgromolenko]  
Авторju (Нерегистриран)
Публикувано05.02.07 08:39



Първо стартирай Update query, ще се обновят само съществуващите в старата таблица записи, а след това стартирай Append query , за да добавиш липсващите записи.



Тема Re: Ъпдейт на таблица в Аксеснови [re: ju]  
АвторSgromolenko (Нерегистриран)
Публикувано05.02.07 18:21



Така го мислех и аз, но има 2 недостатъка:
За да разберете проблема ще се опитам да го онагледя с пример
Имаме таблица [skladova nalichnost] с полета [KatalojenNomer] и [Broj]
Имаме и таблица [Dostavka] със същите полета.
Целта е като се попълни таблицата доставка всеки ред обработва по следния начин:
1. Ако има съществуващ запис в таблица [skladova nalichnost] със същия каталожен номер, броя му да се увеличи с броя от таблица [Dostavka].
2. Ако няма такъв запис - да се добави, със същия брой.
Проблем може да има, защото има възможност в таблица доставка да има дублиращи се каталожни номера. Желателно е всеки обработен ред от таблица доставка да му се слага отметка, че е прибавен към таблицата.
Това е в общи линии, но не виждам как може да стане с Аксес...
Може би с Update - Append - Update последователно, но не мога да намеря как да слагам отметки в източник таблицата на всеки прибавен ред.



Тема Re: Ъпдейт на таблица в Аксеснови [re: Sgromolenko]  
Авторju (Нерегистриран)
Публикувано06.02.07 08:29



това е лесно:)

Sub UpdateDostavka()

Dim DB As Database
Dim R As Recordset
Dim RUp As Recordset

Set DB = CurrentDb
Set R = DB.OpenRecordset("Dostavka")

Do Until R.EOF
Set RUp = DB.OpenRecordset("SELECT [skladova nalichnost].KatalojenNomer, [skladova nalichnost].Broj " & _
" FROM [skladova nalichnost] WHERE [skladova nalichnost].KatalojenNomer= '" & R!KatalojenNomer & "';")
If RUp.RecordCount > 0 Then
RUp.Edit
RUp!Broj = RUp!Broj + R!Broj
RUp.Update
RUp.Close
Else
RUp.AddNew
RUp!KatalojenNomer = R!KatalojenNomer
RUp!Broj = R!Broj
RUp.Update
RUp.Close

End If
R.MoveNext
Loop

R.Close

End Sub



Тема Re: Ъпдейт на таблица в Аксеснови [re: Sgromolenko]  
Авторju (Нерегистриран)
Публикувано06.02.07 08:34



Малка поправка , забравих за маркирането на обработените записи. Ето ти поправената процедура

Sub UpdateDostavka()
Dim DB As Database
Dim R As Recordset
Dim RUp As Recordset

Set DB = CurrentDb
Set R = DB.OpenRecordset("Select * From Dostavka Where Mark = False ")

Do Until R.EOF
Set RUp = DB.OpenRecordset("SELECT [skladova nalichnost].KatalojenNomer, [skladova nalichnost].Broj " & _
" FROM [skladova nalichnost] WHERE [skladova nalichnost].KatalojenNomer= '" & R!KatalojenNomer & "';")
If RUp.RecordCount > 0 Then
RUp.Edit
RUp!Broj = RUp!Broj + R!Broj
RUp.Update
RUp.Close
Else
RUp.AddNew
RUp!KatalojenNomer = R!KatalojenNomer
RUp!Broj = R!Broj
RUp.Update
RUp.Close

End If
R.Edit
R!mark = True
R.Update
R.MoveNext
Loop

R.Close

End Sub



Тема Re: Ъпдейт на таблица в Аксеснови [re: Sgromolenko]  
Автор wqw (АзСъмЖив)
Публикувано06.02.07 17:32



1. Използват се транзакции за "как да слагам отметки в източник таблицата на всеки прибавен ред." -- просто два UPDATE-а.
2. Тази схема е много чуплива и никъде не е работила стабилно. Най-малкото имхлементация на Access.
3. Хората са измислили индексирани/материализирани view-та именно с такава цел, но Access е мноо далеч.

Така, че виж дали можеш да направиш нещо с транзакции и тегли една кръстачка да няма проблеми с file access-а.

Предложението на ju е смехотворно -- пример как *не* трябва да подхождаш. Какво става ако спре тока точно преди да "постави отметката"? Също интересно е колко порядъци по-бавен е този "курсор" от истинско rowset oriented решение в случая. В clipper не е имало друг начин, но вече (дори в Access) можеш да избираш.

cheers,
</wqw>




Тема Re: Ъпдейт на таблица в Аксес [re: wqw]  
АвторSgromolenko (Нерегистриран)
Публикувано06.02.07 18:10



Благодаря на двама ви за мненията,
Засега го направих по метода на Ju, и това което мога да кажа е, че работи!
Наистина ако спре тока ще стане гаф, но предвид че на ден ще се изпълняват 2-3 подобни заявки, всяка за по частици от секундата и имам UPS-и мисля си струва риска.
wqw, виждам, че имаш сериозни познания по бази данни - предполагам отдавна си далеч от аксес. Все пак ако имаш някакво конкретно предложение как по-добре да реализирам задачата *в рамките на аксес* ще съм благодарен да споделиш.
Поздрави и на двамата - живи и здрави да сте!




Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.