Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Адресация полей в таблицах
 
 автор: Dutch Shultz   (10.09.2008 в 01:54)   личное сообщение
 
 

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

Dim rst1 As New ADODB.Recordset
Set cnn = CurrentProject.Connection
rst1.Open "Моя таблица", cnn, adOpenKeyset, adLockPessimistic
***
With rst1
.AddNew
![поле1] = a
![поле2] = b
.Update
End With
rst1.MoveNext
***
К ячейкам лучше всего обращаться через Recordset?Есть ли другие виды адресации и когда лучше их использовать?
И когда надо использовать просто Recordset, а когда ADODB.Recordset?
И как,например,лучше всего использовать обращение ,например,к 19 записи полю "А" таблицы "Таблица 1".
Заранее спасибо.

  Ответить  
 
 автор: osmor   (10.09.2008 в 11:39)   личное сообщение
 
 

Объект Recordset существует в двух библиотека используемый ACCESS
ADODB и DAO
Несмотря на одинакове название, это разные объекты
Почитайте FAQ, там про это написано.
http://hiprog.com/index.php?option=com_content&task=blogcategory&id=119&Itemid=159
Q2

Указывая библиотеку перед названием объекта (ADODB.Recordset), Вы явно указываете к какой библиотеке относится данные объект и тем самым избегаете недоразумений.

IMHO, везде где возможно для чтения, изменения данных лучше использовать запросы чем рекордсеты (наверняка найдется множество противником данного утверждения, по этому повторюсь _IMHO_)
Т.е. покольку в каждой таблице должно быть ключевое поле по которому можно однозначно найти запись, то что бы изменить "19-ю запись полю "А" таблицы "Таблица 1"." можно просто выполнить запрос


UPDATE [Таблица 1] SET [A] = "Новое значение"
WHERE ID=19;


предполагая что ключевое поле называется ID, а значение ключевого поля нужной записи равно 19
Обратите внимание, что это не номер по порядку, а именно значение ключевого поля.
Добавлено:
Выполнить этот запрос (если он не как сохраненный запрос, а как строка SQL) можно:
1. через ADO
CurrentProject.connection. execute "Update ....
2. через DAO
Currentdb.execute "Update
3. Через ACCESS
Docmd.RunSQL "Update...

  Ответить  
 
 автор: Dutch Shultz   (10.09.2008 в 17:37)   личное сообщение
 
 

Спасибо! Т.е. Recordset по большому счету что в ADO что в DAO выполняет одни и те же функции?А где бы можно было полподробнее узнать об особенностях ADO и DAO-где что используется и в каких случаях что лучше использовать
Для чтения, изменения данных используются только рекордсеты и SQL-запросы?

  Ответить  
 
 автор: osmor   (10.09.2008 в 17:59)   личное сообщение
 
 

Об особенностях можно узнать в Help или на сайте MS
поищите на своей машине файлики
DAO???.chm
ADO???.chm

Теоретически ADO более современная технология и нужно использовать его, во всяком случае с MSA 2000 по умолчанию подключен ADO, хотя ссылка на DAO не явным образом есть, хотя можно ссылку на DAO установить явно. Реально каждый выбирает для себя что ему удобнее.

"Для чтения, изменения данных используются только рекордсеты и SQL-запросы?"
Ну почему, можно менять через поля открытой формы
me![Поле1] = 123
и от туда же считывать
aaa = me![полей]

Кроме того для "чтения" есть функции access, Dlookup, Dmax и т.п.
но в целом - да

  Ответить  
 
 автор: Dutch Shultz   (10.09.2008 в 18:24)   личное сообщение
 
 

А может ли вообще ADO полноценно заменить DAO и можно ли просто выбросить из головы (и Аксесса) DAO и использовать только ADO чтобы голову не забивать?

  Ответить  
 
 автор: ДрЮня   (10.09.2008 в 18:34)   личное сообщение
 
 

имхо
даже нужно

  Ответить  
 
 автор: Lukas   (10.09.2008 в 19:18)   личное сообщение
 
 

Пол Литвин, Кен Гетц, Майк Гунделой
Для профессионалов.
ACCESS 2002
Разработка настольных приложений.

Стр 425.
ADO против DAO

Цитата:
... В Access 2002 ADO является основной технологией доступа к данным, но при работе с данными,
сохраненными в MDB-файлах ее работа не настолько эффективна, как у ядра базы Jet и DAO.
....
Если вы создаете связанную форму в MDB-файле, ее набор записей является объектом DAO.
...
Конец цитаты.

Что нибудь изменилось в 2003 и 2007?

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList