powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Удаление записи из таблицы (странности)
25 сообщений из 65, страница 1 из 3
Удаление записи из таблицы (странности)
    #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
Удаление записи из таблицы (странности)
    #39733349
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
час58,

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

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

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

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

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

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

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

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

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



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

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

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




У меня всё норм, записи типа как вроде удаляются. Смотришь записи, их там нет.
Но программно - они находятся... И читаются.скорее всего у вас разные условия. Вы их же программно формируете, насколько я понял. Проверьте тщательно передаваемые переменные.
...
Рейтинг: 0 / 0
Удаление записи из таблицы (странности)
    #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
Удаление записи из таблицы (странности)
    #39733400
Аллюр Д.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Плюсуюсь к варианту посмотреть строку запроса
Код: vbnet
1.
2.
str = "DELETE FROM " & TBL_NAME & " where " & USLOVIE
debug.print str



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


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



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

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

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

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

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

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

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

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

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


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

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

Как бы там нибыло, но если корявые руки исключить, то имхо без пересоздания таблицы для чистоты эксперимента не обойтись...
...
Рейтинг: 0 / 0
Удаление записи из таблицы (странности)
    #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
Удаление записи из таблицы (странности)
    #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
25 сообщений из 65, страница 1 из 3
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Удаление записи из таблицы (странности)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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