Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/19: Рейтинг темы: голосов - 19, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 01.01.2008
Сообщений: 106

Как удалить запись из dbf файла в ADO?

01.01.2008, 11:40. Показов 3529. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Использую АДО... таблица Dbase III...
Записи добавляются без проблем, но удалять не хочет никак...
вот код
Visual Basic
1
2
3
4
5
6
row_pos = Me.MSHFlexGrid1.RowSel
With Personal_data.Recordset
.AbsolutePosition = row_pos
.Delete
.Update
End With
здесь Personal_data это Adodc контрол
Говорит,что query too complex
Как лечить??
Спасибо всем )
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.01.2008, 11:40
Ответы с готовыми решениями:

Как импортировать запись из файла dbf?
Уважаемые, помогите... Пишется программа для редактирования файлов DBF. Как можно импортировать записи из других файлов, такой же...

Помогите с подключением DBF-файла через ADO в NT
Помогите кто-нибудь! Делаю следующее Set cn = New ADODB.Connection cn.Open 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' &...

Помогите с подключением DBF-файла через ADO в NT
Помогите кто-нибудь! Делаю следующее Set cn = New ADODB.Connection cn.Open 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' &...

4
eddy
02.01.2008, 09:29
Никак. Записи просто помечаются как удаленные. Это специфика dbf-файлов.
Чтобы удалить, есть 2 варианта.
1. Использовать утилиту для сжатия.
2. Самому написать процедуру. Создаешь новый файл с идентичной структурой. Открываешь тот файл, где есть записи, помеченные на удаление и в цикле перебрасываешь в новый файл (только неудаленные записи). Файлы закрываешь. Старый удаляешь, новый переимновываешь по старому образцу. Как видишь, все просто.
0 / 0 / 0
Регистрация: 01.01.2008
Сообщений: 106
02.01.2008, 10:57  [ТС]
Спасиба за подсказку...
Но дело в том что он даже не помечает их как удаленные. Появдяется
runtime error и говорит что query too complex и завершает приложение.
ошибку показывает на строке с .Delete

И такая же ошибка появляется при добавлении записей в базу при помощи справочника из DataCombo...Т.е без справочника добавляет данные а со
справочником нет. Все время runtime error и говорит что query too complex... Права ставил самые разные и запись и чтение и что только не ставил но что-то не то...
0
eddy
02.01.2008, 12:00
Тут надо поаккуратнее. Мое предположение состоит в том, что ты формируешь запрос к разным таблицам и на основе этого создаешь выборку. И как правило, запрос для чтения. Когда ты удаляешь строку из полученной выборки, ADO не может понять тебя, к какой таблице это относится. Это типичная ситуация, особенно для отношения 'один ко многим'.

Упрощенно выход таков. Все таблицы связаны по ключевым полям. Например, пусть будет главная таблица с идентификаторм '001' поле IDNumber. И пусть будет подчиненная таблица с полем IDNumber (или с другим именем) и кучей строк с значением '001'. Просто переходишь в главную таблицу, удаляешь строку (если так можно выразиться), затем переходишь в подчиненную и удаляещь связанные строки. Все.
0 / 0 / 0
Регистрация: 01.01.2008
Сообщений: 106
02.01.2008, 12:30  [ТС]
Все даже проще... я бы хотел так делать но не выходит...
я просто открываю соединение сл. образом:
Visual Basic
1
2
3
4
5
6
Set cn = New ADODB.Connection
Set rs_uchzav = New ADODB.Recordset
cn.ConnectionString = 'DSN=dBASE files;Mode=Read|Write;DBQ=c:FOXING;DefaultDir=c:FOXING;DriverId=21;FIL=dBase III;MaxBufferSize=512;PageTimeout=5'
cn.Open
rs_uchzav.CursorType = adOpenStatic
rs_uchzav.Open 'uchzav', cn
не дает удалять записи и говорит о той ошибке query too complex
Так же трабл с подключением справочника. с ним не хочет даже добавлять.
Но это не главное эдесь можно использовать и обычный Combo и код прописать руками.
И потом что делать если справочник здороовый? 11мб и более... наблюдаются ДИКИЕ тормоза... как поступают в этих случаях?
и что делать с удалением?

Спасибо за помощь...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.01.2008, 12:30
Помогаю со студенческими работами здесь

Удаление записи из dbf-файла в ADO. Query too complex
Наблюдается странная вещь...Записи добавляются в файл дбф но не удаляются... появляется ран тайм еррор и говорит Query too complex и...

Как создать индексы к DBF в ADO?
Подобный вопрос уже был. Неужели никто не знает как создать индексы к DBF в ADO. Спасибо.

Delphi -> ADO -> ODBC -> DBF: Как убрать завершающие пробелы?
Subj. В смысле как избавиться от завершающих пробелов в полях типа Char?

Как создать новую dbf таблицу в cp866 через ADO ?
Почему не хочет работать кусок кода : cnn.Open 'Driver={Microsoft Visual FoxPro Driver};' & _ 'SourceType=DBF;'...

Как открыть dbf-базу для записи, используя ADO?
Пишу Set oCN = New ADODB.Connection Set oRS = New ADODB.Recordset oCN.ConnectionString = 'Provider=MSDASQL.1;Persist Security...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru