Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 | 2 |

 

  Вопрос: Удаление всех записей в dbf файле Добавлено: 18.10.05 10:23  

Автор вопроса:  SerJEANt | ICQ: 3132838 
Приветствую!
Есть dbf файл, как лучше всего удалить в нем все записи?
1 способ: Ежели с помощью Adodc пытаюсь удалять записи, то выскакивает следующая ошибка:
Key column information is insufficient or incorrect. Too many rows were affected by update.

Я думаю, такая вещь происходит поскольку в таблице нет ключевого поля.
2 способ: Удаляем с помощью DATA, все проходит нормально и файл оказывается пустым, но размер файла при таком удалении записей остается неизменным, что не есть хорошо.
Знаю про такую вещь, что записи "физически" из файла не удаляются, а только помечаются на удаление и тому подобное, но не знаю применимо ли это к данной ситуации?
3 способ: (если он вообще здесь применим) Это с помощью SQL, что-то вроде DELETE FROM TABLE, но здесь у меня возникают проблемы, я не знаю как мне это дело правильно написать.
Господа, какие будут предложения? Поможите особе приближенной к императору и отцу русской демократии :(

Ответить

  Ответы Всего ответов: 28  

Номер ответа: 1
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #1 Добавлено: 18.10.05 13:12
DROP TABLE <имя таблицы>

Ответить

Номер ответа: 2
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #2 Добавлено: 18.10.05 14:03
Это удаление самой структуры. Для удаления данных - ";DELETE * FROM Table1".

Размер файла остаётся прежним потому, что нужно ещё выполнить сжатие базы. В DAO это метод CompactDatabase, в ADO нужно подключить ещё Microsoft Jet and Replication Objects X.X Library.

Ответить

Номер ответа: 3
Автор ответа:
 User Unknown



Вечный Юзер!

ICQ: uu@jabber.cz 

Вопросов: 120
Ответов: 3302
 Профиль | | #3 Добавлено: 18.10.05 14:13
DELETE * FROM Table1

Этого тебе могут не позволить. Например тот-же safe_updates.


EMPTY TABLE <имя_таблицы>;
или
TRUNCATE TABLE <имя_таблицы>;

Это быстрее и надежнее

Ответить

Номер ответа: 4
Автор ответа:
 User Unknown



Вечный Юзер!

ICQ: uu@jabber.cz 

Вопросов: 120
Ответов: 3302
 Профиль | | #4 Добавлено: 18.10.05 14:14
Кроме того после truncate не надо сжимать базу, так как внутренний механизм на саом деле вместо удаления записей, удаляет всю таблицу, и создает новую на шаблоне удаленной. Это кстати, ещё и в десятки раз быстрее...

Ответить

Номер ответа: 5
Автор ответа:
 SerJEANt



ICQ: 3132838 

Вопросов: 10
Ответов: 38
 Профиль | | #5 Добавлено: 18.10.05 14:17
GSerg
Размер файла остаётся прежним потому, что нужно ещё выполнить сжатие базы.

Оно самое, читал про такое, спасиб за наставление!

Господа, прошу простить мне моё незнание, но без объяснения на пальцах чувствую здесь не обойтись :) , у меня есть recordset подключенный к вышеуказанному файлу, куда его подставить ума не приложу, ежели пишу допустим:
Dim rcdTest As Recordset
Set rcdTest = Adodc1.Recordset
";DELETE * FROM rcdTest"

оно ессесно ругается на последнюю строчку. Что в моем случае подставлять на место Table1? Направьте на путь истинный, где копать?

Ps. Прошу не отсылать меня читать умные книжки ибо сейчас такой возможности нет, спасибо за ответ! :)

Ответить

Номер ответа: 6
Автор ответа:
 User Unknown



Вечный Юзер!

ICQ: uu@jabber.cz 

Вопросов: 120
Ответов: 3302
 Профиль | | #6 Добавлено: 18.10.05 14:23

with rcdTest
.RecordSource = "TRUNCATE TABLE rcdTest;"
.Refresh
End with

Ответить

Номер ответа: 7
Автор ответа:
 SerJEANt



ICQ: 3132838 

Вопросов: 10
Ответов: 38
 Профиль | | #7 Добавлено: 18.10.05 14:41
Ошибку выдает:
[Мелкософт][ODBC dBase Driver] Syntax error in FROM clause. :-(

PS. При подключении через ADODC использую строку подключения(Connection string) может здесь чего?

Ответить

Номер ответа: 8
Автор ответа:
 User Unknown



Вечный Юзер!

ICQ: uu@jabber.cz 

Вопросов: 120
Ответов: 3302
 Профиль | | #8 Добавлено: 18.10.05 14:43
Дай полный текст функции от инициализации до поключения и выполнения запроса.

Ответить

Номер ответа: 9
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #9 Добавлено: 18.10.05 14:46
Нет.

Подобные команды выполняются в ADO через
dim c as new adodb.command
set c.activeconnection=conn
c.commandtype=adcmdtext
c.commandtext="TRUNCATE TABLE Table1"
c.execute ,,adexecutenorecords

Ответить

Номер ответа: 10
Автор ответа:
 User Unknown



Вечный Юзер!

ICQ: uu@jabber.cz 

Вопросов: 120
Ответов: 3302
 Профиль | | #10 Добавлено: 18.10.05 14:47
Ага, спасибо, что поправил. Я по памяти писал:)

Ответить

Номер ответа: 11
Автор ответа:
 SerJEANt



ICQ: 3132838 

Вопросов: 10
Ответов: 38
 Профиль | | #11 Добавлено: 18.10.05 15:09
Хорошо, упрощаю все до нельзя, нужно просто очистить базу:
Берем Adodc и DataGrid, цепляем к решетке Adodc. Далее цепляю файл к Adodc сразу "вручную", использую Connection string, строка выглядит так:
Provider=MSDASQL.1;Persist Security Info=False;Extended Properties=";DSN=Файлы dBASE;DBQ=C:\PROJECT\ADD RECORD;DefaultDir=C:\PROJECT\ADD RECORD;DriverId=533;MaxBufferSize=2048;PageTimeout=5;";Initial Catalog=C:\PROJECT\ADD RECORD

В рекордсурсе выбираю adCmdTable и указываю имя файла.
Далее просто пару строк кода:
Adodc1.RecordSource = "TRUNCATE TABLE Adodc1.Recordset;"
Adodc1.Refresh

Все!

Ответить

Номер ответа: 12
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #12 Добавлено: 18.10.05 15:22
Всё - что всё?
Всё работает?
Или всё не работает?
Или всё равно уже?

Ответить

Номер ответа: 13
Автор ответа:
 SerJEANt



ICQ: 3132838 

Вопросов: 10
Ответов: 38
 Профиль | | #13 Добавлено: 18.10.05 15:32
Всё это значит всё дописал :)
А выдает ошибку такую:
[Мелкософт][ODBC dBase Driver] Syntax error in FROM clause.

Ответить

Номер ответа: 14
Автор ответа:
 AndreyMp



ICQ: 237822510 

Вопросов: 28
Ответов: 1182
 Профиль | | #14 Добавлено: 18.10.05 15:52
Adodc1.RecordSource = "TRUNCATE TABLE Adodc1.Recordset;"
Adodc1.Refresh

Не Adodc1.Recordset а имя твоей таблицы.

Ответить

Номер ответа: 15
Автор ответа:
 SerJEANt



ICQ: 3132838 

Вопросов: 10
Ответов: 38
 Профиль | | #15 Добавлено: 18.10.05 16:00
Андрей
Я предупреждал, что я из деревни :) Сейчас задам глупый вопрос, что есть "имя таблицы" в моей ситуации? Имя dbf-файла?

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам