Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Удаление строк таблицы через ADO / 3 сообщений из 3, страница 1 из 1
19.09.2012, 05:41
    #37963230
anvg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление строк таблицы через ADO
Что не верно в коде для удаления строк таблицы?
Пробую так
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public Sub DeleteRecord()
    Dim pConn As New ADODB.Connection
    Dim pCom As New ADODB.Command
    pConn.Mode = adModeShareDenyNone
    pConn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\path\name.xlsm;Extended Properties=""Excel 12.0;HDR=YES"";"
    pCom.ActiveConnection = pConn
    pCom.CommandType = adCmdText
    pCom.CommandText = "Delete * From [Sheet$] Where [ID]=1"
    pCom.Execute
    pConn.Close


и так
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Public Sub DeleteRecord2()
    Dim pConn As New ADODB.Connection
    Dim pRSet As New ADODB.RecordSet
    pConn.Mode = adModeShareDenyNone
    pConn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\path\name.xlsm;Extended Properties=""Excel 12.0;HDR=YES"";"
    pRSet.CursorLocation = adUseClient: pRSet.CursorType = adOpenStatic
    pRSet.LockType = adLockPessimistic
    pRSet.Open "Select * From [Sheet$] Where [ID]=0", pConn
    If pRSet.RecordCount > 0 Then
        pRSet.MoveFirst
        pRSet.Delete adAffectCurrent
        pRSet.Update
    End If
    pRSet.Close: pConn.Close
End Sub


В обоих случаях получаю сообщение об ошибке "Удаление данных в присоединённой (или связанной) таблице не поддерживается драйвером ISAM."
Вставка строк и обновление работают как положено. Пробовал для Provider=Microsoft.Jet.OLEDB.4.0, сохранив файл в формате 2003, получаю то же самое.
Верно ли утверждение, что в Excel нельзя удалить строки таблицы используя ADO?
...
Рейтинг: 0 / 0
19.09.2012, 09:17
    #37963352
Удаление строк таблицы через ADO
anvg
Верно ли утверждение, что в Excel нельзя удалить строки таблицы используя ADO?
Угу. Строку целиком нельзя удалить, если верить MS
MSYou are more restricted in deleting Excel data than data from a relational data source. In a relational database, "row" has no meaning or existence apart from "record"; in an Excel worksheet, this is not true. You can delete values in fields (cells). However, you cannot:
Delete an entire record at once or you receive the following error message:
Deleting data in a linked table is not supported by this ISAM.
You can only delete a record by blanking out the contents of each individual field.
Delete the value in a cell containing an Excel formula or you receive the following error message:
Operation is not allowed in this context.
You cannot delete the empty spreadsheet row(s) in which the deleted data was located, and your recordset will continue to display empty records corresponding to these empty rows.
...
Рейтинг: 0 / 0
19.09.2012, 11:17
    #37963633
anvg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление строк таблицы через ADO
комплектовщик
Спасибо. По вашему тексту на хорошую статью вышел.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Удаление строк таблицы через ADO / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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