Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Удаление записи из таблицы (странности) / 25 сообщений из 65, страница 1 из 3
15.11.2018, 10:27
    #39733344
час58
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записи из таблицы (странности)
Как такое возможно, и что с этим сделать можно?

Для удаления записей из таблицы использую простую функцию.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
          MyDb.TableDefs.Refresh
If DCount("*", TBL_NAME, USLOVIE) = 0 Then
       Me!messag = Me!messag & vbCrLf & "Запись " & USLOVIE & "  УЖЕ удалена из " & TBL_NAME 
       & "  базы: " & BAZA_NAME
 Else
        MyDb.Execute "DELETE FROM " & TBL_NAME & " where " & USLOVIE 
        Me!messag = Me!messag & vbCrLf & "Запись " & USLOVIE & " удалена из " & TBL_NAME & "  
         базы: " & BAZA_NAME
End If



Записи удаляются без проблем, но не все.
Есть записи, которые физически удаляются и в таблице не присутствуют, но
Код: vbnet
1.
DCount("*", TBL_NAME, USLOVIE) = 1


каждый раз показывает что эта запись всё ещё существует, и даже можно считать значение из полей этой записи.
И каждый раз она удаляется вновь, и при проверке, она вроде как имеется.
Сжал, восстановил. Не помогло.
Скопировал таблицы в новую чистую базу. Не помогло.
Это длиться уже третий день, записи в таблице нет, но считать значения её полей всё равно можно.
------------------------------------------------------------------------
Спасибо за ответ.
...
Рейтинг: 0 / 0
15.11.2018, 10:38
    #39733349
час58
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записи из таблицы (странности)
час58,

Самое странное -
подготовил базу, для загрузки на форум, удалив лишние записи...
в этой базе зловредные записи удаляются сразу и без остатка...
...
Рейтинг: 0 / 0
15.11.2018, 10:40
    #39733351
Tarasios
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записи из таблицы (странности)
час58час58,

Самое странное -
подготовил базу, для загрузки на форум, удалив лишние записи...
в этой базе зловредные записи удаляются сразу и без остатка...

Барабашка испужался )
...
Рейтинг: 0 / 0
15.11.2018, 10:45
    #39733353
час58
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записи из таблицы (странности)
Tarasios,

ДА, но в рабочей базе изменений нет.
Запись не удаляется полностью.
Причём таких записей 2 штуки.
Остальные послушно исчезают.
...
Рейтинг: 0 / 0
15.11.2018, 10:53
    #39733357
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записи из таблицы (странности)
час58,

добавь в MyDb.Execute - dbFailOnError (или как там его) и выполни
...
Рейтинг: 0 / 0
15.11.2018, 10:55
    #39733358
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записи из таблицы (странности)
courtчас58,

добавь в MyDb.Execute - dbFailOnError (или как там его) и выполникстате, Q33
...
Рейтинг: 0 / 0
15.11.2018, 10:55
    #39733359
час58
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записи из таблицы (странности)
court,
не совсем понял, что нужно добавить.
...
Рейтинг: 0 / 0
15.11.2018, 11:01
    #39733361
Прогер_самоучка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записи из таблицы (странности)
час58court,
не совсем понял, что нужно добавить.
courtdbFailOnError
...
Рейтинг: 0 / 0
15.11.2018, 11:18
    #39733370
час58
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записи из таблицы (странности)
courtcourtчас58,

добавь в MyDb.Execute - dbFailOnError (или как там его) и выполникстате, Q33

Там другое.
Там:
Код: vbnet
1.
2.
3.
Execute не возвращает сообщений об ошибке, даже если часть записей ему не удается обновить/добавить/удалить.

A: Пользуйся полным синтаксисом: Execute ..., dbFailOnError.



У меня всё норм, записи типа как вроде удаляются. Смотришь записи, их там нет.
Но программно - они находятся... И читаются.
...
Рейтинг: 0 / 0
15.11.2018, 11:52
    #39733389
Прогер_самоучка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записи из таблицы (странности)
час58courtпропущено...
кстате, Q33

Там другое.
Там:
Код: vbnet
1.
2.
3.
Execute не возвращает сообщений об ошибке, даже если часть записей ему не удается обновить/добавить/удалить.

A: Пользуйся полным синтаксисом: Execute ..., dbFailOnError.




У меня всё норм, записи типа как вроде удаляются. Смотришь записи, их там нет.
Но программно - они находятся... И читаются.скорее всего у вас разные условия. Вы их же программно формируете, насколько я понял. Проверьте тщательно передаваемые переменные.
...
Рейтинг: 0 / 0
15.11.2018, 12:04
    #39733399
час58
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записи из таблицы (странности)
Прогер_самоучка,

Да,
изначально я так и подумал.
Но нет, всё идентично.
Код: vbnet
1.
2.
3.
Call UDALIT_STROKU_TABLICI("OPTION_TBL.mdb", "TUNING_TBL", "ID = 'Дата_списка_информ_услуг'")
Call UDALIT_STROKU_TABLICI("OPTION_TBL.mdb", "TUNING_TBL", "ID = 'Дата_Списка_Абонентов_ТКО'")
Call UDALIT_STROKU_TABLICI("OPTION_TBL.mdb", "TUNING_TBL", "ID = 'Дата_Списка_Абонентов_ТЕПЛО'")



Две последние записи ведут себя странным образом.
До и после имеются подобные строки, где всё отрабатывает норм с первого раза.
...
Рейтинг: 0 / 0
15.11.2018, 12:04
    #39733400
Аллюр Д.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записи из таблицы (странности)
Плюсуюсь к варианту посмотреть строку запроса
Код: vbnet
1.
2.
str = "DELETE FROM " & TBL_NAME & " where " & USLOVIE
debug.print str



И если на глаз не будет ничего криминального, то я скопировал бы этот запрос в Конструктор запросов и выполнил бы его там, может при запуске запроса появится сообщение об ошибке.


Немножко смущает отсутствие звёздочки "DELETE * FROM" - может и можно не писать звёздочку, но я всегда писал
...
Рейтинг: 0 / 0
15.11.2018, 12:15
    #39733411
час58
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записи из таблицы (странности)
Аллюр Д.,
странное дело в том, что остальное всё удаляется с первого раза.
изменил строку:
Код: vbnet
1.
        MyDb.Execute "DELETE " & TBL_NAME & ".* FROM " & TBL_NAME & " where " & USLOVIE & "WITH OWNERACCESS OPTION;"



Ни чего не изменилось.
...
Рейтинг: 0 / 0
15.11.2018, 12:16
    #39733412
Игортан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записи из таблицы (странности)
час58,

в Execute при удалении строк(и) я встречался с некорректной работой, если не было уникальности строки.
Для такой обработки всегда, во временной табличке тоже, делаю ключевое поле автоинкремент.

Больше смущает, что в таблице записей "не видно", как я понял.
Может битая запись строки?
Может тупо пересоздать таблицу. При этом должно быть промежуточное сохранение БД.
...
Рейтинг: 0 / 0
15.11.2018, 12:24
    #39733418
Аллюр Д.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записи из таблицы (странности)
час58,

И какую строку вывел Debug.print для не удаляемой записи?
...
Рейтинг: 0 / 0
15.11.2018, 12:27
    #39733424
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записи из таблицы (странности)
час58,

- пересоздай таблицу, скорее всего идндексы, ключи и т.д. накрылись медным тазом, на глаз бывает не заметно и глючит то через раз, то не везде, то не всегда...
- такое обычно бывает в таблицах, которые часто подвержены удалению записей, например таблицы с временными данными, у меня такое тоже иногда бывает...
- очень помогает удалить в этих таблицах всевозможные индексы и вынести их в отдельный файл, чтоб если что менять его целиком (можно вообще обновлять файл из шаблона при старте программы, тогда глюк будет устранен автоматически после рестарта приложения)
...
Рейтинг: 0 / 0
15.11.2018, 12:29
    #39733425
час58
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записи из таблицы (странности)
Игортан,

пересоздать не вариант.
Рабочая база далеко от меня и в ней совсем другие записи значений.
...
Рейтинг: 0 / 0
15.11.2018, 12:32
    #39733429
час58
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записи из таблицы (странности)
Аллюр Д.,

Запись удаляется...
ты не внимательно читаешь
:-)
Ни каких ошибок.
Запросом запись тоже удаляется...
То есть её не видно в таблице, но она там есть...
...
Рейтинг: 0 / 0
15.11.2018, 12:34
    #39733433
час58
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записи из таблицы (странности)
vmag,
Нету там ключей.
До смешного простая таблица.
Просто строки в три столбца, из которых берутся данные (переменные).
И почему именно эти строки выпендриваются...
не понятно.
...
Рейтинг: 0 / 0
15.11.2018, 12:38
    #39733437
Аллюр Д.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записи из таблицы (странности)
час58Аллюр Д.,

Запись удаляется...
ты не внимательно читаешь
:-)
Ни каких ошибок.
Запросом запись тоже удаляется...
То есть её не видно в таблице, но она там есть...
Если не хочешь проверить версию ошибки формирования строки запроса - не проверяй!
...
Рейтинг: 0 / 0
15.11.2018, 12:40
    #39733442
Аллюр Д.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записи из таблицы (странности)
час58vmag,
Нету там ключей.
До смешного простая таблица.
Просто строки в три столбца, из которых берутся данные (переменные).
И почему именно эти строки выпендриваются...
не понятно.
А если сделать не DELETE, а SELECT - выберется нужная строка (естественно, до её удаления)
...
Рейтинг: 0 / 0
15.11.2018, 12:41
    #39733443
Игортан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записи из таблицы (странности)
час58,

если эти строки не множатся, то попробовать в это условие впихнуть исключение их Id
Код: vbnet
1.
DCount("*", TBL_NAME, USLOVIE) = 1


но по большому счету - зайти к ним и создать новую таблицу, с переносом данных запросом
с исключением этих 2 строк
придется правда внешние ключи в зависимых таблицах восстановить, ну думаю, вы знаете как
...
Рейтинг: 0 / 0
15.11.2018, 12:45
    #39733449
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записи из таблицы (странности)
час58Рабочая база далеко от меня и в ней совсем другие записи значений.

может там далеко-далеко пооткрывают да посворачивают кучу экземпляров приложения, а потом в 20-м по счету открытом пытаются что-то удалять ?

Как бы там нибыло, но если корявые руки исключить, то имхо без пересоздания таблицы для чистоты эксперимента не обойтись...
...
Рейтинг: 0 / 0
15.11.2018, 12:48
    #39733451
Прогер_самоучка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записи из таблицы (странности)
час58Прогер_самоучка,

Да,
изначально я так и подумал.
Но нет, всё идентично.
Код: vbnet
1.
2.
3.
Call UDALIT_STROKU_TABLICI("OPTION_TBL.mdb", "TUNING_TBL", "ID = 'Дата_списка_информ_услуг'")
Call UDALIT_STROKU_TABLICI("OPTION_TBL.mdb", "TUNING_TBL", "ID = 'Дата_Списка_Абонентов_ТКО'")
Call UDALIT_STROKU_TABLICI("OPTION_TBL.mdb", "TUNING_TBL", "ID = 'Дата_Списка_Абонентов_ТЕПЛО'")




Две последние записи ведут себя странным образом.
До и после имеются подобные строки, где всё отрабатывает норм с первого раза.а что это?
Это какой-то код. Вы покажите построчно что отладка выводит...
...
Рейтинг: 0 / 0
15.11.2018, 12:54
    #39733457
час58
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление записи из таблицы (странности)
Прогер_самоучка, я думал и так всё понятно.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Public Function UDALIT_STROKU_TABLICI(BAZA_NAME As String, TBL_NAME As String, USLOVIE As String)
' удалить строку ''' Удаление строки из TBL_NAME
Dim MyDb As Database
       
   On Error GoTo UDALIT_STROKU_TABLICI_Error '-----------------------------------------------------------------------------

Set MyDb = CurrentDb

MyDb.TableDefs.Refresh
If DCount("*", TBL_NAME, USLOVIE) = 0 Then
       Me!messag = Me!messag & vbCrLf & "Запись " & USLOVIE & "  УЖЕ удалена из " & TBL_NAME & "  базы: " & BAZA_NAME
 Else
        MyDb.Execute "DELETE " & TBL_NAME & ".* FROM " & TBL_NAME & " where " & USLOVIE & "WITH OWNERACCESS OPTION;"
        Me!messag = Me!messag & vbCrLf & "Запись " & USLOVIE & " удалена из " & TBL_NAME & "  базы: " & BAZA_NAME
End If

MyDb.TableDefs.Refresh
MyDb.Close
Set MyDb = Nothing

   On Error GoTo 0 '-----------------------------------------------------------------------------
   Exit Function
UDALIT_STROKU_TABLICI_Error:


 Call FUN_ZAPIS_V_TEXT_FILE(CurrentProject.Path & "\Ошибки программы.txt", "функция: UDALIT_STROKU_TABLICI в модуле: Form_UP_DA_TE" & vbTab & Nz(Err.Description))

End Function
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Удаление записи из таблицы (странности) / 25 сообщений из 65, страница 1 из 3
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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