Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Почему никто не хочет осваивать adp? / 14 сообщений из 14, страница 1 из 1
25.07.2001, 07:50
    #32010292
ДиД.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему никто не хочет осваивать adp?
Почему никто не хочет осваивать adp? Что всех пугает? Меня сначала тоже некторые вещи насторожили. Потом, правда, разобрался. Затратил уйму времени на решение того или иного вопроса. И все из-того, что просто стоит какая-то стена отчуждения по adp. Правда была статья Павела Жидкова (Кузбас) по поводу ошибок на добавление записей на форуме по SQL. В ней он давал программу якобы устраняющую эту ошибку. На самом деле было в другом. Я это тоже выяснял 2 недели. Если бы были собеседники, я , думаю, и проблемы решались быстрее. Почему все новое воспринимается в штыки? Я провожу аналог между WinNT и Win2000pro. Сначала все плевалсь. Потом разобрались и теперь все тащутся. Такая же картина и на Accesse наблюдается. Хотелось бы все-таки найти собеседников (со вздохом).
...
Рейтинг: 0 / 0
25.07.2001, 08:16
    #32010299
Павел
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему никто не хочет осваивать adp?
Откуда такой писсимизм? Я познакомился в рунете с многими людьми, разрабатывающими на Access.adp Кроме того появились отличные книги по A2K и MSSQL. Так что Вы совсем не одиноки в своих изысканиях. Если что-то интересует - спрашивайте, чем смогу тем помогу. Есть еще очень интересный форум по всем версиям Access: http://c85.cemi.rssi.ru/Access/Queries/AnsPointListAll.asp

P.S.
Кузбасс пишется с двумя 'c'
...
Рейтинг: 0 / 0
25.07.2001, 08:40
    #32010301
ДиД.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему никто не хочет осваивать adp?
Кузбасс скопировал Ctrl+C как было написано в статье. Поближе к телу. Почти все нашел в adp, кроме замены ошибок, выдаваемых SQL сервером, на более удобочитаемые. На форуме спрашивал уже. Сказали что нужно проверить семейство ADO error. А как - так и не понял.
...
Рейтинг: 0 / 0
25.07.2001, 10:17
    #32010311
Павел
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему никто не хочет осваивать adp?
Действительно, эта тема уже не раз обсуждалась. Решается двумя путями - или формировать ошибку на сервере и отдавать ее клиенту по raiserror, либо обрабатывать ошибку на клиенте и выдавать пользователю ее читабельный вариант. Я предпочитаю первый вариант. Но весь прикол в том, что при возникновении ошибки коллекция errors 'родного' аксессовского соединения всегда пуста (у этого соединения вообще много странностей). Эта ошибка немедленно передается Аксессовскому обьекту err, откуда ее можно подхватить. Если самому в коде прописать соединение, то можно работать и с коллекцией errors этого соединения. Вот только все запросы, представления и процедуры, которые являются источником записей формы или отчета, по умолчанию используют именно 'родное' соединение. С формами все просто - можно программно открыть нужный рекордсет и 'скормить' его форме, а с отчетом такой фокус уже не пройдет. Так что посмотри, может обьект err - это то что нужно.
...
Рейтинг: 0 / 0
25.07.2001, 12:13
    #32010330
ДиД.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему никто не хочет осваивать adp?
Если я правильно понял.
Private Sub Form_Error(DataErr As Integer, Response As Integer)
MsgBox DataErr
End Sub
Всегда выдает 2757. На любую ошибку.
И вопрос: если это уже где-то обсуждалось, то в каком месте? Может быть я тоже почитаю, если уже проблему решили.
...
Рейтинг: 0 / 0
26.07.2001, 02:17
    #32010369
Павел
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему никто не хочет осваивать adp?
В примере пытаемся вставить запись в таблицу, поле которой не допускает отсутсвия значения:

Private Sub Кнопка0_Click()
On Error GoTo sub_err
Dim cmd As ADODB.Command
Set cmd = New ADODB.Command
cmd.ActiveConnection = CurrentProject.Connection
cmd.CommandText = "insert into test select null"
cmd.CommandType = adCmdText
cmd.Prepared = False
cmd.Execute , , adExecuteNoRecords
sub_exit:
Set cmd = Nothing
Exit Sub
sub_err:
Beep
MsgBox Err.number & ", " & Err.Source & ", " & Err.Description
Err.Clear
Resume sub_exit
End Sub

Естно мы имеем дело с ошибкой ADO, а не с ошибкой сервера. Для работы с ошибками сервера, приведу другой пример из MDAC SDK 2.6, но с 'родным' подключением, как я уже говорил, он не прокатит:

'BeginDescriptionVB
Public Sub DescriptionX()

Dim cnn1 As ADODB.Connection
Dim errLoop As ADODB.Error
Dim strError As String

On Error GoTo ErrorHandler

' Intentionally trigger an error.
Set cnn1 = New ADODB.Connection
cnn1.Open "nothing"

Exit Sub

ErrorHandler:

' Enumerate Errors collection and display
' properties of each Error object.
For Each errLoop In cnn1.Errors
strError = "Error #" & errLoop.Number & vbCr & _
" " & errLoop.Description & vbCr & _
" (Source: " & errLoop.Source & ")" & vbCr & _
" (SQL State: " & errLoop.SQLState & ")" & vbCr & _
" (NativeError: " & errLoop.NativeError & ")" & vbCr
If errLoop.HelpFile = "" Then
strError = strError & _
" No Help file available" & _
vbCr & vbCr
Else
strError = strError & _
" (HelpFile: " & errLoop.HelpFile & ")" & vbCr & _
" (HelpContext: " & errLoop.HelpContext & ")" & _
vbCr & vbCr
End If


Debug.Print strError
Next

Resume Next

End Sub
'EndDescriptionVB
...
Рейтинг: 0 / 0
16.08.2001, 14:10
    #32011948
Юрий+Жуков
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему никто не хочет осваивать adp?
Спасибо.
Но-где то я не догоняю.
Объявил
Dim cnn1 As ADODB.Connection

'Дальше по кнопке создаю свой Connection,REcordset в этом Connection
' И привязываю этот рекордсет к форме
Private Sub кнпКоннект_Click()
Set cnn1 = New ADODB.Connection
cnn1.Open CurrentProject.Connection
Set rst = New ADODB.Recordset
rst.Open "[Контрагенты]", cnn1, adOpenKeyset, adLockOptimistic, adCmdTableDirect
Set Me.Recordset = rst
End Sub

'Ловим ошибку в обработчике
Private Sub Form_Error(DataErr As Integer, Response As Integer)
If DataErr = 2757 Then
MsgBox " "
' Вот здесь я пытаюсь посмотреть cnn1.errors.count
' Он у меня равен нулю
End If
End Sub

В чем может быть причина?
...
Рейтинг: 0 / 0
17.08.2001, 03:13
    #32011974
Павел
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему никто не хочет осваивать adp?
Ну вот они, чудеса!

On Error GoTo sub_err
Dim cnErr As ADODB.Error
CurrentProject.Connection.Execute "Select * from НетТакойТаблицы"
sub_exit:
Exit Sub
sub_err:
For Each cnErr In CurrentProject.Connection.Errors
MsgBox cnErr.Description
Next
Resume sub_exit

Коллекция пуста...
Пробую так:

On Error GoTo sub_err
Dim cn As ADODB.Connection, cnErr As ADODB.Error
Set cn = CurrentProject.Connection
cn.Execute "Select * from НетТакойТаблицы"
sub_exit:
Set cn = Nothing
Exit Sub
sub_err:
For Each cnErr In cn.Errors
MsgBox cnErr.Description
Next
Resume sub_exit

Работает!
Так что, оказывается, можно работать и с 'родным' коннектом.

A событие Form_Error у меня вообще не возникает.
...
Рейтинг: 0 / 0
17.08.2001, 05:56
    #32011983
Юрий Жуков
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему никто не хочет осваивать adp?
Так у меня тоже поучается.
Но хотелось обрабатывать именно ошибку формы, а все манипуляции с сохранением данных оставить на совести Ассess

Вот еще один вопрос в тему: как обрабатывать ошибку возникающую например при команде
DoCMD.Runcommand acCmdSaveRecord

(например не все поля заполнены)
Хотлеось бы получить имена этих полей...
...
Рейтинг: 0 / 0
17.08.2001, 07:33
    #32012009
ДиД.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему никто не хочет осваивать adp?
Я проверяю на наличие данных в полях в событии "до обновления". Но...
...
Рейтинг: 0 / 0
17.08.2001, 09:57
    #32012055
Юрий Жуков
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему никто не хочет осваивать adp?
Так вот тож, а хотелось все это сделать в одном месте и на уровне базы.
Далее хотелось бы написать некую универсальную процедуру обработки ошибок.
И тогда не надо везде анализировать поля, да и другие ошибки выловились, но видать не судьба.

З.Ы. Тяжело обащаться в нескольких форумах. А какие news группы вы могли бы посоветовать по Access?
...
Рейтинг: 0 / 0
17.08.2001, 11:41
    #32012072
ДиД.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему никто не хочет осваивать adp?
Анализировать все равно придется. Или триггерами, но тогда надо убрать все связи, либо на клиенте. Пусть меня поправит что не так Павел.
...
Рейтинг: 0 / 0
17.08.2001, 14:24
    #32012099
Павел
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему никто не хочет осваивать adp?
А чего тут поправлять - все верно. Целостность данных не должен пасти клиент - это аксиома. Следовательно в триггерах без соответствующих проверок не обойтись. Но предварительнве проверки на клиенте тоже нужны - хотя бы для минимизации бессммысленных обращений к серверу. Только в случае SQL2K можно от связей не отказываться - триггеры Instead отрабатывают до DRI.
...
Рейтинг: 0 / 0
22.08.2001, 14:44
    #32012556
Павел
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему никто не хочет осваивать adp?
Вот совсем свежая ветка в MSSQL:
http://www.sql.ru/cgi-bin/UltraBoard/UltraBoard.pl?Action=ShowPost&Board=mssql&Post=2196
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Почему никто не хочет осваивать adp? / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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